forked from mijime/docker-mattermost
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconvert-json.awk
36 lines (29 loc) · 981 Bytes
/
convert-json.awk
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
function camel2snake(str) {
if (match(str, /(.*)([a-z0-9]+)([A-Z]+)(.*)/, cap))
return camel2snake(cap[1] cap[2] "_" tolower(cap[3]) cap[4]);
return str;
}
function fixWord(str) {
if (match(str, /(.*)(SMTP)([A-Z]+)(.*)/, cap))
return fixWord(cap[1] "Smtp" "_" tolower(cap[3]) cap[4]);
if (match(str, /(.*)(GitLab)([A-Z]+)(.*)/, cap))
return fixWord(cap[1] "Gitlab" "_" tolower(cap[3]) cap[4]);
return str;
}
/^ *"([[:alnum:]]+)Settings": {$/ {
match($0, /^ *"([[:alnum:]]+)Settings": {$/, s);
print;
next;
}
/^ *"([[:alnum:]]+)": +(-?[0-9]+|true|false|[[]]+)?(".*")?(,)?$/ {
match($0, /^ *"([[:alnum:]]+)": +(-?[0-9]+|true|false|[[]]+)?(".*")?(,)?$/, v);
envkey = toupper(s[1] "_" camel2snake(fixWord(v[1])));
if (v[2] == "")
printf " \"%s\": \"{{var \"%s\" | default %s}}\"%s\n", v[1], envkey, v[3], v[4];
else
printf " \"%s\": {{var \"%s\" | default \"%s\"}}%s\n", v[1], envkey, v[2], v[4];
next;
}
{
print;
}