-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathgenerate_utils.sh
86 lines (66 loc) · 1.71 KB
/
generate_utils.sh
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
#!/bin/bash
contains() {
echo "${@:2}" | grep -wq $1
}
get_version() {
echo "$1" | awk -F '[._]' '{print $1"."$2"."$3}'
}
get_major() {
echo "$1" | awk -F '[._]' '{print $1}'
}
get_minor() {
echo "$1" | awk -F '[._]' '{print $1"."$2}'
}
indent() {
local level="$1"
local per_level="$2"
local nspaces=$((level * per_level))
local spaces="$(printf %${nspaces}s)"
sed -E "s/^/$spaces/g"
}
trim() {
local delim=${1:-'[:space:]'}
local str="$(cat)"
str="${str#"${str%%[!$delim]*}"}"
str="${str%"${str##*[!$delim]}"}"
echo "$str"
}
tpl() {
local vars
local subs
local args
local argi=2
local tpl_var_name
local script_var_name
for var_name in ${@:2}; do
read tpl_var_name script_var_name <<< $(echo "$var_name" | awk -F '=' '{print $1,$2}')
if [ -z "$script_var_name" ]; then
script_var_name="$tpl_var_name"
fi
vars="$vars $tpl_var_name=ARGV[$argi]; ARGV[$argi]=\"\";"
subs="$subs gsub(\"{{ $tpl_var_name }}\",$tpl_var_name);"
args="$args \"\$$script_var_name\""
argi=$((argi + 1))
done
eval "awk 'BEGIN{ $vars } { $subs }1' $1 $args"
}
format_list() {
local indent=${1:-4}
echo "["
trim | sed -E 's/[[:space:]]+/\n/g' | sed -E 's/^(.*)$/"\1",/' | indent 1 "$indent"
echo "]"
}
generate_config() {
cat $1 \
| tr "\n" "\r" \
| sed 's/\r-//g' \
| tr '\r' '\n' \
| sed -E \
-e's/:[^:\/\/]/="/g' \
-e 's/(.+)$/\1"/g' \
-e 's/ *=/=/g' \
-e "s/(^[^[:space:]])/$2\1/g"
}
write_warn_edit() {
echo -e "# NOTE: This file was generated via generate.sh. Don't edit it directly\n" > $1
}