gitscope
https://dev.kronoz.win/r/marzneshin.git
tools/check_translations.sh · v0.7.4
Source
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