Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 10 additions & 3 deletions files/concatfragments.sh
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
# is generated by puppet
# -f Enables the creation of empty output files when no fragments are found
# -n Sort the output numerically rather than the default alpha sort
# -g Do NOT use the GNU entensions to find, xargs and sort; might cause problems on suitably funky filenames
#
# the command:
#
Expand All @@ -43,23 +44,29 @@ WORKDIR=""
TEST=""
FORCE=""
WARN=""
SORTARG="-z"
SORT1="-z"
SORT2=""
FINDARG="-print0"
XARGSARG="-0"

PATH=/sbin:/usr/sbin:/bin:/usr/bin

while getopts "o:s:d:tnw:f" options; do
case $options in
o ) OUTFILE=$OPTARG;;
d ) WORKDIR=$OPTARG;;
n ) SORTARG="-zn";;
n ) SORT2="-n";;
w ) WARNMSG="$OPTARG";;
f ) FORCE="true";;
t ) TEST="true";;
g ) FINDARG="" ; XARGSARG="" ; SORT1="" ;;
* ) echo "Specify output file with -o and fragments directory with -d"
exit 1;;
esac
done

SORTARG="$SORT1 $SORT2"

# do we have -o?
if [ x${OUTFILE} = "x" ]; then
echo "Please specify an output file with -o"
Expand Down Expand Up @@ -108,7 +115,7 @@ else
fi

# find all the files in the fragments directory, sort them numerically and concat to fragments.concat in the working dir
find fragments/ -type f -follow -print0 |sort ${SORTARG}|xargs -0 cat >>"fragments.concat"
find fragments/ -type f -follow $FINDARG |sort ${SORTARG}|xargs $XARGSARG cat >>"fragments.concat"

if [ x${TEST} = "x" ]; then
# This is a real run, copy the file to outfile
Expand Down
18 changes: 15 additions & 3 deletions manifests/init.pp
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@
# ALIASES:
# - The exec can notified using Exec["concat_/path/to/file"] or Exec["concat_/path/to/directory"]
# - The final file can be referened as File["/path/to/file"] or File["concat_/path/to/file"]
define concat($mode = 0644, $owner = "root", $group = "root", $warn = "false", $force = "false", $backup = "puppet") {
define concat($mode = 0644, $owner = "root", $group = "root", $warn = "false", $force = "false", $backup = "puppet", $gnu = "true", $order="alpha") {
$safe_name = regsubst($name, '/', '_', 'G')
$concatdir = $concat::setup::concatdir
$version = $concat::setup::majorversion
Expand All @@ -113,6 +113,18 @@
default: { fail("Improper 'force' value given to concat: $force") }
}

case $gnu {
'true',true,yes,on: { $gnuflag = "" }
'false',false,no,off: { $gnuflag = "-g" }
default: { fail("Improper 'gnu' value given to concat: $gnu") }
}

case $order {
numeric: { $orderflag = "-n" }
alpha: { $orderflag = "" }
default: { fail("Improper 'order' value given to concat: $order") }
}

File{
owner => root,
group => root,
Expand Down Expand Up @@ -158,7 +170,7 @@
subscribe => File[$fragdir],
alias => "concat_${fragdir}",
require => [ File["/usr/local/bin/concatfragments.sh"], File[$fragdir], File["${fragdir}/fragments"], File["${fragdir}/fragments.concat"] ],
unless => "/usr/local/bin/concatfragments.sh -o ${fragdir}/${concat_name} -d ${fragdir} -t ${warnflag} ${forceflag}",
command => "/usr/local/bin/concatfragments.sh -o ${fragdir}/${concat_name} -d ${fragdir} ${warnflag} ${forceflag}",
unless => "/usr/local/bin/concatfragments.sh -o ${fragdir}/${concat_name} -d ${fragdir} -t ${warnflag} ${forceflag} ${orderflag} ${gnuflag}",
command => "/usr/local/bin/concatfragments.sh -o ${fragdir}/${concat_name} -d ${fragdir} ${warnflag} ${forceflag} ${orderflag} ${gnuflag}",
}
}