nixpkgs/pkgs/build-support/substitute/substitute.sh

47 lines
1.1 KiB
Bash
Raw Normal View History

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" "$@"
}