forked from mirrors/nixpkgs
2e0380b7a0
svn path=/nixpkgs/trunk/; revision=2269
47 lines
1.1 KiB
Bash
47 lines
1.1 KiB
Bash
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
|
|
|
|
if test "$p" = "--subst-var-by"; then
|
|
varName=${params[$((n + 1))]}
|
|
replacement=${params[$((n + 2))]}
|
|
n=$((n + 2))
|
|
sedArgs=("${sedArgs[@]}" "-e" "s^@${varName}@^$replacement^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" "$@"
|
|
}
|