chiark / gitweb /
build/ scripts: Remove the version-number machinery.
[runlisp] / build / confsubst
1 #! /bin/sh
2 ### -*-sh-*-
3 ###
4 ### Make autoconf-like substitutions in files
5 ###
6 ### (c) 2008 Mark Wooding
7 ###
8
9 ###----- Licensing notice ---------------------------------------------------
10 ###
11 ### This file is part of the Common Files Distribution (`common').
12 ###
13 ### `Common' is free software; you can redistribute it and/or modify
14 ### it under the terms of the GNU General Public License as published by
15 ### the Free Software Foundation; either version 2 of the License, or
16 ### (at your option) any later version.
17 ###
18 ### `Common' is distributed in the hope that it will be useful,
19 ### but WITHOUT ANY WARRANTY; without even the implied warranty of
20 ### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21 ### GNU General Public License for more details.
22 ###
23 ### You should have received a copy of the GNU General Public License
24 ### along with `common'; if not, write to the Free Software Foundation,
25 ### Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
26
27 set -e
28
29 ###--------------------------------------------------------------------------
30 ### Parse command line arguments.
31
32 while [ $# -gt 0 ]; do
33   case $1 in
34     -h | --h | --he | --hel | --help)
35       cat <<EOF
36 Usage: confsubst FILE TAG=VALUE...
37
38 Replaces occurrences of @TAG@ in FILE with VALUE, and writes the result to
39 standard output.
40 EOF
41       exit 0
42       ;;
43     --)
44       shift
45       break
46       ;;
47     -)
48       break
49       ;;
50     -*)
51       echo "confsubst: unknown option \`$1'" >&2
52       exit 1
53       ;;
54     *)
55       break
56       ;;
57   esac
58   shift
59 done
60
61 if [ $# -lt 1 ]; then
62   echo >&2 "Usage: confsubst FILE TAG=VALUE..."
63   exit 1
64 fi
65 file=$1; shift
66
67 ###--------------------------------------------------------------------------
68 ### Main code.
69
70 subst=""
71 for fixup; do
72   case "$fixup" in
73     *?=*) ;;
74     *) echo >&2 "$0: bad substitution: $fixup"; exit 1 ;;
75   esac
76   tag=${fixup%%=*} value=${fixup#*=}
77   subst="$subst s\a@$tag@\a$value\ag;"
78 done
79
80 sed "$subst" $file || exit $?
81
82 ###----- That's all, folks --------------------------------------------------