chiark / gitweb /
found
[ian-dotfiles.git] / infra / substitute
1 #!/bin/bash
2 set -e
3
4 mode_subst () {
5     $fn >$bfn.new
6 }
7
8 mode_diff () {
9     mode_subst
10     diff -u $dot $bfn.new || test $? = 1
11 }
12
13 mode_install () {
14     mode_subst
15     mv -f $bfn.new $dot
16 }
17
18 mode=$1
19 case "$mode" in
20 subst|diff|install) ;;
21 *) echo >&2 'bad mode'; exit 1;
22 esac
23 shift
24
25 if [ $# = 0 ]; then
26    set templates/*.in
27 fi
28
29 for fn in "$@"; do
30     bfn=${fn%.in}
31     bfn=${bfn##*/}
32     bfn=${bfn#.}
33     bfn=templates/$bfn
34     fn=${bfn}.in
35     dot=$HOME/.${bfn#*/}
36     mode_$mode
37 done