* Some utility functions to make performing substitutions in text
files easier. Examples: substitute inputFile outputFile \ --replace "@bindir@" "$out/bin" \ --replace "@gcc@" "$GCC/bin/gcc" substitute inputFile outputFile --subst-var out (this is sugar for --replace "@out@" "$out") substituteInPlace file --replace a b (input and output are both `file'; the execute bit is preserved) svn path=/nixpkgs/trunk/; revision=2239
This commit is contained in:
parent
aac8011c8b
commit
cbdd91f2a6
|
@ -0,0 +1,39 @@
|
||||||
|
substitute() {
|
||||||
|
input=$1
|
||||||
|
output=$2
|
||||||
|
|
||||||
|
params=("$@")
|
||||||
|
|
||||||
|
sedArgs=()
|
||||||
|
|
||||||
|
for ((n = 2; n < ${#params[*]}; n += 1)); do
|
||||||
|
p=${params[$n]}
|
||||||
|
|
||||||
|
if test "$p" = "--replace"; then
|
||||||
|
pattern=${params[$((n + 1))]}
|
||||||
|
replacement=${params[$((n + 2))]}
|
||||||
|
n=$((n + 2))
|
||||||
|
sedArgs=("${sedArgs[@]}" "-e" "s^$pattern^$replacement^g")
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$p" = "--subst-var"; then
|
||||||
|
varName=${params[$((n + 1))]}
|
||||||
|
n=$((n + 1))
|
||||||
|
sedArgs=("${sedArgs[@]}" "-e" "s^@${varName}@^${!varName}^g")
|
||||||
|
fi
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
sed "${sedArgs[@]}" < "$input" > "$output".tmp
|
||||||
|
if test -x "$output"; then
|
||||||
|
chmod +x "$output".tmp
|
||||||
|
fi
|
||||||
|
mv -f "$output".tmp "$output"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
substituteInPlace() {
|
||||||
|
fileName="$1"
|
||||||
|
shift
|
||||||
|
substitute "$fileName" "$fileName" "$@"
|
||||||
|
}
|
Loading…
Reference in New Issue