aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbuild-config-file77
1 files changed, 77 insertions, 0 deletions
diff --git a/build-config-file b/build-config-file
new file mode 100755
index 0000000..3bc9f44
--- /dev/null
+++ b/build-config-file
@@ -0,0 +1,77 @@
+#!/bin/sh
+#---------------------------------------------------------------
+# Project : Mandrake 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