1
1
#! /usr/bin/env bash
2
2
3
-
4
3
# Exit if anything fails.
5
4
set -euo pipefail
6
5
7
-
8
6
# see comment in generator-utils/utils.sh
9
7
# shellcheck source=bin/generator-utils/utils.sh
10
8
# shellcheck source=./generator-utils/utils.sh
11
9
source ./bin/generator-utils/utils.sh
12
10
11
+ if [ ! -e bin/generator-utils/escape_double_quotes ]; then
12
+ message " info" " Building util function"
13
+ cd util/escape_double_quotes && ./build && cd ../..
14
+ fi
15
+
13
16
digest_template () {
14
17
local template
15
- template=$( cat bin/test_template)
18
+ template=$( bin/generator-utils/escape_double_quotes bin/test_template)
16
19
# Turn every token into a jq command
17
20
18
21
echo " $template " | sed ' s/${\([^}]*\)\}\$/$(echo $case | jq -r ' \' ' .\1' \' ' )/g'
35
38
# Flattens canonical json, extracts only the objects with a uuid
36
39
cases=$( echo " $canonical_json " | jq ' [ .. | objects | with_entries(select(.key | IN("uuid", "description", "input", "expected", "property"))) | select(. != {}) | select(has("uuid")) ]' )
37
40
38
-
39
41
# Shellcheck doesn't recognize that `case` is not unused
40
42
41
43
# shellcheck disable=SC2034
@@ -45,9 +47,8 @@ jq -c '.[]' <<<"$cases" | while read -r case; do
45
47
eval_template=" $( digest_template | sed -e " s/\$ (\(.*\))/\$ \(\1\)/g" ) "
46
48
eval_template=" $( eval " echo \" $eval_template \" " ) "
47
49
48
-
49
50
# Turn function name into snake_case
50
- formatted_template=$( echo " $eval_template " | sed -e ' :loop ' -e ' s/\ (fn[^(]*\)[ -]/\1_ /g' -e ' t loop ' | sed ' s/fn_/fn /' )
51
+ formatted_template=$( echo " $eval_template " | sed -E - e ' /^fn/!b ' -e ' s/[^a-zA-Z0-9_{}()[:space:]-]//g ' -e ' s/([[:upper:]])/ \L\1/g ' -e ' s/ (fn[[:space:]]+)([a-z0-9_-]+)/\1\L\2 /g' -e ' s/ /_/g ' -e ' s/_\{/\{/g ' -e ' s/-/_/g ' | sed ' s/fn_/fn /' | sed ' s/__\+/_/g ' )
51
52
52
53
# Push to test file
53
54
echo " $formatted_template " >> " $test_file "
58
59
rustfmt " $test_file "
59
60
60
61
message " success" " Generated tests successfully! Check out ${test_file} "
61
-
0 commit comments