blob: 4e2a53172d3803adf1332255cbcd8dd77a0dcc59 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
########################################################-*-Shell-script-*-####
# Bash Standard Library
##############################################################################
# $Id$
function print() {
while [ $# -gt 0 ]; do
echo "$1";
shift 1;
done
}
function abort() {
print "${program:-error}: ""$@" 1>&2;
exit 1;
}
function run_() {
"$@" || exit $?;
}
function run() {
[ "$verbose" = "true" ] && echo "$@";
run_ "$@";
}
function runO() {
local stdout="$1"; shift 1;
[ "$verbose" = "true" ] && echo "$@" "1>" "$stdout";
run_ "$@" 1> "$stdout";
}
function runOO() {
local stdout="$1"; shift 1;
[ "$verbose" = "true" ] && echo "$@" "1>>" "$stdout";
run_ "$@" 1>> "$stdout";
}
##############################################################################
# usage: args-loop <script> "$@"
# process all arguments
function args-loop() {
while [ $# -gt 0 ]; do
$program-args "$@";
shift $?;
done;
}
# usage: args-option-unknown "$@"
# <option> ... => abort "unknown option <option>";
function args-option-unknown() {
abort "unknown option $1";
}
# usage: args-unknown "$@"
# <argument> ... => abort "don't know what to do with argument <argument>";
function args-unknown() {
abort "don't know what to do with argument '$1'";
}
# usage: args-append-array <array> "$@"
# <argument> ... => <array>[${#<array>[@]}]=<argument>; shift 1;
function args-append-array() {
local array="$1"; shift 1;
eval "$array[\${#$array[@]}]=\"\$1\"";
return 1;
}
# usage: args-option-value <value> "$@"
# <option> <argument> ... => <value>=<argument>; shift 2;
function args-option-value() {
local value="$1"; shift 1;
if [ $# -lt 2 ]; then
abort "missing argument for option $1";
fi;
eval "$value=\"\$2\"";
return 2;
}
# usage: args-inline-value <value> "$@"
# <value-name>=<argument> ... => <value>=<argument>; shift 1;
function args-inline-value() {
local value="$1"; shift 1;
local prefix="$value";
eval "$value=\"\${1#--$prefix=}\"";
return 1;
}
##############################################################################
|