aboutsummaryrefslogtreecommitdiffstats
path: root/build-config-file
blob: 347710bc28dfcc5925f7658f53e59351cf4f96a1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/bin/sh
#---------------------------------------------------------------
# Project         : Mandriva Linux
# Module          : rpm-helper
# File            : build-config-file
# Version         : $Id$
# Author          : Frederic Lepied
# Created On      : Sat Nov  1 08:21:42 2003
# Purpose         : concat files to build another one.
#---------------------------------------------------------------

if [[ $# != 1 ]]; then
    echo "usage: `basename $0` <config file>" 1>&2
    exit 1
fi

FILE=$1
BASE=`basename $FILE`
CONFIG=/etc/config-file/$BASE

# variables that can be overriden in the config file

COMMENT='#'			# comment leader
DIRS="${FILE}.d"		# direcories to look for parts
EXT='.conf'			# default extension of parts
POST=				# executable to run after the merge
PRE=				# executable to run before the merge
CONCAT=1			# if set to 1, concat the parts
USER=root			# user owning the file
GROUP=root			# group owning the file
MODE=0644			# permissions of the file

# code

# source the config file to override the default settings

if [[ -r $CONFIG ]]; then
    . $CONFIG
fi

# run pre command

if [[ -x "$PRE" ]]; then
    $PRE $FILE
fi

# read the parts

if [[ $CONCAT = 1 ]]; then
    rm -f $FILE
    for d in $DIRS; do
	for f in `ls ${d}/*${EXT} 2> /dev/null`; do
	    if [[ -x $f ]]; then
		[[ -n "$COMMENT" ]] && echo "$COMMENT output from $f" >> $FILE
		$f >> $FILE
	    elif [[ -r $f ]]; then
		[[ -n "$COMMENT" ]] && echo "$COMMENT $f" >> $FILE
		cat $f >> $FILE
	    fi
	done
    done
fi

# set the owner, group and perms

if [[ -f $FILE ]]; then
    chown $USER.$GROUP $FILE
    chmod $MODE $FILE
fi

# run post command

if [[ -x "$POST" ]]; then
    $POST $FILE
fi

# build-config-file ends here