]> gitweb.fluxo.info Git - puppet-concat.git/commitdiff
add a -g flag to concatfragments.sh to disable GNU extensions to find, sort and xargs...
authorJonathan Boyett <jonathan@failingservers.com>
Fri, 3 Dec 2010 20:35:23 +0000 (12:35 -0800)
committerJonathan Boyett <jonathan@failingservers.com>
Fri, 3 Dec 2010 20:35:23 +0000 (12:35 -0800)
Add a $gnu parameter to make use of the aforementioned -g flag, and a $order parameter to make use of the -n flag in concatfragments.sh

files/concatfragments.sh
manifests/init.pp

index b486047de1274918231b94ebce91b0389a786acf..6ae4d8303f34ef4e85e4469f6a32ff7e45d8726d 100644 (file)
@@ -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: 
 #
@@ -43,7 +44,10 @@ WORKDIR=""
 TEST=""
 FORCE=""
 WARN=""
-SORTARG="-z"
+SORT1="-z"
+SORT2=""
+FINDARG="-print0"
+XARGSARG="-0"
 
 PATH=/sbin:/usr/sbin:/bin:/usr/bin
 
@@ -51,15 +55,18 @@ 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"
@@ -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
index b94411c2544b935e7c26d9cd92b229e0c7935788..909d7b6f854f33bb8165257ec40d56c26d2ad2dc 100644 (file)
@@ -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
@@ -113,6 +113,18 @@ define concat($mode = 0644, $owner = "root", $group = "root", $warn = "false", $
         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,
@@ -158,7 +170,7 @@ define concat($mode = 0644, $owner = "root", $group = "root", $warn = "false", $
         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}",
     }
 }