Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1#! @shell@
2# shellcheck shell=bash
3
4set -eu -o pipefail +o posix
5shopt -s nullglob
6
7if (( "${NIX_DEBUG:-0}" >= 7 )); then
8 set -x
9fi
10
11source @signingUtils@
12
13extraAfter=()
14extraBefore=()
15params=("$@")
16
17output=
18inputs=()
19
20restAreFiles=
21prev=
22for p in \
23 ${extraBefore+"${extraBefore[@]}"} \
24 ${params+"${params[@]}"} \
25 ${extraAfter+"${extraAfter[@]}"}
26do
27 if [ "$restAreFiles" ]; then
28 inputs+=("$p")
29 else
30 case "$prev" in
31 -s|-R|-d|-arch)
32 # Unrelated arguments with values
33 ;;
34 -o)
35 # Explicit output
36 output="$p"
37 ;;
38 *)
39 # Any other orgument either takes no value, or is a file.
40 if [[ "$p" != -* ]]; then
41 inputs+=("$p")
42 fi
43 ;;
44 esac
45
46 if [ "$p" == - ]; then
47 restAreFiles=1
48 fi
49 fi
50
51 prev="$p"
52done
53
54# Optionally print debug info.
55if (( "${NIX_DEBUG:-0}" >= 1 )); then
56 # Old bash workaround, see above.
57 echo "extra flags before to @prog@:" >&2
58 printf " %q\n" ${extraBefore+"${extraBefore[@]}"} >&2
59 echo "original flags to @prog@:" >&2
60 printf " %q\n" ${params+"${params[@]}"} >&2
61 echo "extra flags after to @prog@:" >&2
62 printf " %q\n" ${extraAfter+"${extraAfter[@]}"} >&2
63fi
64
65@prog@ \
66 ${extraBefore+"${extraBefore[@]}"} \
67 ${params+"${params[@]}"} \
68 ${extraAfter+"${extraAfter[@]}"}
69
70if [ "$output" ]; then
71 # Single explicit output
72 signIfRequired "$output"
73else
74 # Multiple inputs, rewritten in place
75 for input in "${inputs[@]}"; do
76 signIfRequired "$input"
77 done
78fi