https://dev.kronoz.win/r/marzneshin.git
| 1 |
ef04ea4 |
Dawsh |
1y ago |
#!/bin/bash |
| 2 |
ef04ea4 |
Dawsh |
1y ago |
|
| 3 |
ef04ea4 |
Dawsh |
1y ago |
jq_pathify() { |
| 4 |
ef04ea4 |
Dawsh |
1y ago |
local key="$1" |
| 5 |
ef04ea4 |
Dawsh |
1y ago |
local jq_path="" |
| 6 |
ef04ea4 |
Dawsh |
1y ago |
IFS='.' read -ra parts <<< "$key" |
| 7 |
ef04ea4 |
Dawsh |
1y ago |
for part in "${parts[@]}"; do |
| 8 |
ef04ea4 |
Dawsh |
1y ago |
if [[ "$part" =~ ^[a-zA-Z0-9_]+$ ]]; then |
| 9 |
ef04ea4 |
Dawsh |
1y ago |
jq_path+=".${part}" |
| 10 |
ef04ea4 |
Dawsh |
1y ago |
else |
| 11 |
ef04ea4 |
Dawsh |
1y ago |
jq_path+="[\"$part\"]" |
| 12 |
ef04ea4 |
Dawsh |
1y ago |
fi |
| 13 |
ef04ea4 |
Dawsh |
1y ago |
done |
| 14 |
ef04ea4 |
Dawsh |
1y ago |
echo "$jq_path" |
| 15 |
ef04ea4 |
Dawsh |
1y ago |
} |
| 16 |
ef04ea4 |
Dawsh |
1y ago |
|
| 17 |
ef04ea4 |
Dawsh |
1y ago |
json_file=$1 |
| 18 |
ef04ea4 |
Dawsh |
1y ago |
tkeys_file=$(mktemp) |
| 19 |
ef04ea4 |
Dawsh |
1y ago |
grep --exclude-dir={node_modules,dist} -orPh "\Wt\([\"']\K[\w.-]+(?=[\"'])" ./dashboard | sort | uniq > $tkeys_file |
| 20 |
ef04ea4 |
Dawsh |
1y ago |
|
| 21 |
ef04ea4 |
Dawsh |
1y ago |
missingkc=0 |
| 22 |
ef04ea4 |
Dawsh |
1y ago |
while IFS= read -r key; do |
| 23 |
ef04ea4 |
Dawsh |
1y ago |
# jq_query=".$key" |
| 24 |
ef04ea4 |
Dawsh |
1y ago |
jq_query=$(jq_pathify $key) |
| 25 |
ef04ea4 |
Dawsh |
1y ago |
if [[ "$jq_query" != .* ]]; then |
| 26 |
ef04ea4 |
Dawsh |
1y ago |
jq_query=".$jq_query" |
| 27 |
ef04ea4 |
Dawsh |
1y ago |
fi |
| 28 |
ef04ea4 |
Dawsh |
1y ago |
jq -e "$jq_query // empty" "$json_file" > /dev/null || { echo "translation lacks $key"; ((missingkc++)); } |
| 29 |
ef04ea4 |
Dawsh |
1y ago |
done < $tkeys_file |
| 30 |
ef04ea4 |
Dawsh |
1y ago |
|
| 31 |
ef04ea4 |
Dawsh |
1y ago |
|
| 32 |
ef04ea4 |
Dawsh |
1y ago |
extrakeys=$(jq -r 'paths(scalars) | join(".")' $json_file | grep -vxFf $tkeys_file) |
| 33 |
ef04ea4 |
Dawsh |
1y ago |
|
| 34 |
ef04ea4 |
Dawsh |
1y ago |
while IFS= read -r line; do |
| 35 |
ef04ea4 |
Dawsh |
1y ago |
echo "found extra key $line" |
| 36 |
ef04ea4 |
Dawsh |
1y ago |
done <<< "$extrakeys" |
| 37 |
ef04ea4 |
Dawsh |
1y ago |
|
| 38 |
ef04ea4 |
Dawsh |
1y ago |
extrakc=$(wc -l <<< $extrakeys) |
| 39 |
ef04ea4 |
Dawsh |
1y ago |
|
| 40 |
ef04ea4 |
Dawsh |
1y ago |
|
| 41 |
ef04ea4 |
Dawsh |
1y ago |
if [[ $extrakc -gt 0 || $missingkc -gt 0 ]]; then |
| 42 |
ef04ea4 |
Dawsh |
1y ago |
echo "Check failed. missing keys: $missingkc, extra keys: $extrakc" |
| 43 |
ef04ea4 |
Dawsh |
1y ago |
exit 1 |
| 44 |
ef04ea4 |
Dawsh |
1y ago |
else |
| 45 |
ef04ea4 |
Dawsh |
1y ago |
echo "Check passed. No extra/missing keys." |
| 46 |
ef04ea4 |
Dawsh |
1y ago |
fi |