From 7729b0c4f207789bf85b55f0a33661345aca188d Mon Sep 17 00:00:00 2001 From: CaTasTrOOf <benoit@besnard.biz> Date: Tue, 1 Feb 2022 19:07:14 +0100 Subject: [PATCH] Add pre-commit hook to check i18n keys --- .githooks/pre-commit | 9 ++++++++ .gitignore | 4 ++++ utils/findMissingI18nKeys.sh | 45 ++++++++++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+) create mode 100755 .githooks/pre-commit create mode 100755 utils/findMissingI18nKeys.sh diff --git a/.githooks/pre-commit b/.githooks/pre-commit new file mode 100755 index 0000000..c10e6b8 --- /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 3fea6ec..60cde32 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 0000000..262e017 --- /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 -- GitLab