Project

General

Profile

« Previous | Next » 

Revision 6106c789

Added by koszko almost 2 years ago

rewrite parts of build script in awk

View differences:

shell_utils.sh
3 3

  
4 4
# This file is meant to be sourced in sh.
5 5

  
6
ENDL="
7
"
8

  
9
# A "raw" echo, interprets neither backclash escapes nor command-line options.
10
# Does not emit trailing newline.
11
ech() {
12
    printf %s "$*"
13
}
14

  
15
errcho() {
16
    echo "$@" >&2
17
}
18

  
19 6
map_set_instr() {
20
    echo "$1__$2='$3'"
7
    printf "%s__%s='%s'" "$1" "$2" "$3"
21 8
}
22 9

  
23 10
map_set() {
......
29 16
}
30 17

  
31 18
map_get() {
32
    eval "echo \"\$$1__$2\""
19
    eval "printf %s \"\$$1__$2\""
33 20
}
34 21

  
35 22
map_del_instr() {
36
    echo "unset $1__$2"
23
    printf 'unset %s__%s' "$1" "$2"
37 24
}
38 25

  
39 26
map_del() {
......
41 28
}
42 29

  
43 30
sanitize() {
44
    echo "$1" | tr /.- _
31
    printf %s "$1" | tr /.- _
45 32
}
46 33

  
47 34
escape_regex_special() {
48
    ech "$1" | sed 's/\([]\.*?{},()[-]\)/\\\1/g'
35
    printf %s "$1" | sed 's/\([]\.*?{},()[-]\)/\\\1/g'
49 36
}
50 37

  
51 38
# Note: We don't actually parse JSON. We extract needed keys with sed regexes
52 39
# which does not work in the general case but is sufficient for now.
53 40
get_json_key() {
54 41
    local KEY_REG="$(escape_regex_special "$1")"
55
    ech "$2" |
42
    printf %s "$2" |
56 43
	sed 's/\(.*"'"$KEY_REG"'"[[:space:]]*:[[:space:]]*"\([^"]*\)"\)\?.*/\2/' |
57 44
	grep . | head -1
58 45
}

Also available in: Unified diff