mirror of
https://github.com/ilyakooo0/nixpkgs.git
synced 2024-11-11 15:27:20 +03:00
* 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
39
pkgs/build-support/substitute/substitute.sh
Normal file
39
pkgs/build-support/substitute/substitute.sh
Normal file
@ -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
Block a user