chiark / gitweb /
WIP installation stuff
[modbot-mtm.git] / install-substitutions
diff --git a/install-substitutions b/install-substitutions
new file mode 100755 (executable)
index 0000000..b0349fa
--- /dev/null
@@ -0,0 +1,35 @@
+#!/bin/bash
+set -e
+. settings
+export GROUP
+export ABBREV
+export INFOHEADER
+find -name '*.IN[O1]' -exec perl -e '
+       use IO::Handle;
+       use POSIX;
+       my $f= shift;
+       my $d= $f;
+       $d =~ s/\.IN([O1])$//;
+       my $overwrite= ($1 eq 'O');
+       my $g= "$d.new";
+       open F, "< $f" or die "$f $!";
+       open G, "> $g" or die "$g $!";
+       while (<F>) {
+               s/\%(\w+)\%/ 
+                       exists($ENV{$1}) ? $ENV{$1} : die "$1 ?"
+                /ge;
+               print G or die $!;
+       }
+       F->error and die $!;
+       close F or die $!;
+       close G or die $!;
+       if ($overwrite) {
+               rename $g, $d or die "$g $d $!";
+       } else {
+               if (link $g, $d) {
+                       unlink $g or die $!;
+               } else {
+                       die "$g $d $!" unless $!==&EEXIST;
+               }
+       }
+' '{}' \;