X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~webstump/git?p=modbot-mtm.git;a=blobdiff_plain;f=install-substitutions;h=9bcee54da8a0182e7f93432b6408f914ee912735;hp=b0349fab4684b54184d4a7aa7dd7f12a93aa06fa;hb=ba1a60e8c390874d2fbb484c29d23524e945f934;hpb=7532a3d0dc5eaf8d57e66604aa4f1e8e6fc2eebb diff --git a/install-substitutions b/install-substitutions index b0349fa..9bcee54 100755 --- a/install-substitutions +++ b/install-substitutions @@ -1,10 +1,19 @@ #!/bin/bash set -e -. settings -export GROUP -export ABBREV -export INFOHEADER -find -name '*.IN[O1]' -exec perl -e ' + +if [ "x$1" = "x-n" ]; then + diffonly=1; diffsparse=0; shift +elif [ "x$1" = "x-nq" ]; then + diffonly=1; diffsparse=1; shift +else + diffonly=0; diffsparse=-1 +fi + +if [ $# != 0 ]; then echo >&2 "usage: ./${0##*/} [-n]"; exit 1; fi + +. ./get-settings + +find -name '*.IN[O1]' ! -path '*/skeleton/*' -exec perl -e ' use IO::Handle; use POSIX; my $f= shift; @@ -14,16 +23,29 @@ find -name '*.IN[O1]' -exec perl -e ' my $g= "$d.new"; open F, "< $f" or die "$f $!"; open G, "> $g" or die "$g $!"; + stat F or die "$f $!"; + my $mode= (stat F)[2]; while () { s/\%(\w+)\%/ - exists($ENV{$1}) ? $ENV{$1} : die "$1 ?" + exists($ENV{$1}) ? $ENV{$1} : die "$1 undef at $f:$.\n" /ge; print G or die $!; } F->error and die $!; - close F or die $!; close G or die $!; - if ($overwrite) { + if ($mode & 01) { + chmod 0755, $g or die "$g $!"; + } + close F or die $!; + if ('$diffonly') { + if (!-f $d) { + print "Would create $d\n"; + } elsif ('$diffsparse' && !$overwrite) { + print "Not reporting on $d as would not overwrite.\n"; + } else { + system "diff -u $d $g"; + } + } elsif ($overwrite) { rename $g, $d or die "$g $d $!"; } else { if (link $g, $d) {