diff --git a/.githooks/pre-commit b/.githooks/pre-commit new file mode 100755 index 0000000000000000000000000000000000000000..c10e6b82d44e5e8ee52eb5c07ea94bdd6637335e --- /dev/null +++ b/.githooks/pre-commit @@ -0,0 +1,9 @@ +#!/bin/sh + +$(git rev-parse --show-toplevel)/utils/findMissingI18nKeys.sh +FINDING_MISSING_KEYS=$? +if [ $FINDING_MISSING_KEYS -ne 0 ]; then + echo "You must to complete all i18n keys used in pages" + exit $FINDING_MISSING_KEYS +fi +exit 0 diff --git a/.gitignore b/.gitignore index 3fea6ecc2abc86553c5c0bee1c9219f11693f547..60cde3202016ffdb87282e29a32c1eae0c7349d0 100644 --- a/.gitignore +++ b/.gitignore @@ -89,3 +89,7 @@ sw.* # Vim swap files *.swp + +# Script generated files +*.missing +keysUsed \ No newline at end of file diff --git a/utils/findMissingI18nKeys.sh b/utils/findMissingI18nKeys.sh new file mode 100755 index 0000000000000000000000000000000000000000..262e01712572b249386d8a1089dde7b7e9d075fa --- /dev/null +++ b/utils/findMissingI18nKeys.sh @@ -0,0 +1,45 @@ +#!/bin/sh + +TMP_FILE=temp +KEY_FILE=keysUsed + +grep --include=\*.vue --exclude=\*template.vue -roE -e "\\\$(t|tc)\((\"|')([a-Z.]*)(\"|')(, [a-Z._]*){0,1}\)" . > $TMP_FILE +sed -i -e "s/'/\"/" $TMP_FILE +sed -i -e "s/'/\"/" $TMP_FILE +sed -i -E -e 's/\..*:\$(t|tc)\("([a-Z.]*).*$/\2/' $TMP_FILE + +sort $TMP_FILE | uniq > $KEY_FILE + +FILES="i18n/locales/*.json" +for f in $FILES +do + echo "Processing $f file..." + missingFile="$(basename $f).missing" + if [ -f $missingFile ] + then + rm -fr $missingFile + fi + while read key; do + jq -e ".$key" < $f > /dev/null + status=$? + if [ $status -ne 0 ] + then + echo $key >> $missingFile + fi + done < $KEY_FILE + # take action on each file. $f store current file name + # cat "$f" +done + +MISSING_FILES="*.missing" +RETURN_CODE=0 +if ls $MISSING_FILES 1> /dev/null 2>&1; then + for f in $MISSING_FILES + do + RETURN_CODE=$((RETURN_CODE+1)) + echo "Missing keys in $f" + cat $f + done +fi +rm $KEY_FILE $TMP_FILE +exit $RETURN_CODE