diff --git a/pkgs/build-support/substitute/substitute.sh b/pkgs/build-support/substitute/substitute.sh new file mode 100644 index 000000000000..bd318522cae1 --- /dev/null +++ b/pkgs/build-support/substitute/substitute.sh @@ -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" "$@" +}