diff options
-rw-r--r-- | .gitlab-ci.yml | 6 | ||||
-rwxr-xr-x | .gitlab/ci/check-potfiles.sh | 41 |
2 files changed, 46 insertions, 1 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1ff87cf..522832e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -25,6 +25,10 @@ style-check: paths: - "style-check-junit-report.xml" +i18n: + stage: review + script: + - ./.gitlab/ci/check-potfiles.sh flatpak: image: quay.io/gnome_infrastructure/gnome-runtime-images:gnome-master @@ -39,4 +43,4 @@ nightly: nightly aarch64: extends: '.publish_nightly' - needs: ['flatpak@aarch64']
\ No newline at end of file + needs: ['flatpak@aarch64'] diff --git a/.gitlab/ci/check-potfiles.sh b/.gitlab/ci/check-potfiles.sh new file mode 100755 index 0000000..b14f863 --- /dev/null +++ b/.gitlab/ci/check-potfiles.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash + +srcdirs="src" +uidirs="data/ui" + +# find source files that contain gettext keywords +vala_files="$(grep -lR --include='*.vala' '\(gettext\|[^I_)]_\)(' $srcdirs)" +c_files="$(grep -lR --include='*.c' '\(gettext\|[^I_)]_\)(' $srcdirs)" + +# find ui files that contain translatable string +ui_files="$(grep -lRi --include='*.ui' 'translatable="[ty1]' $uidirs)" + +files="$vala_files $c_files $ui_files" + +# filter out excluded files +if [ -f po/POTFILES.skip ]; then + files="$(for f in $files; do ! grep -q "^$f$" po/POTFILES.skip && echo "$f"; done)" +fi + +# Test 1: find all files that are missing from POTFILES.in +missing="$(for f in $files; do ! grep -q "^$f$" po/POTFILES.in && echo "$f"; done)" +if [ ${#missing} -ne 0 ]; then + echo >&2 "The following files are missing from po/POTFILES.in:" + for f in ${missing[@]}; do + echo " $f" >&2 + done + echo >&2 + exit 1 +fi + +# Test 2: find all Vala files that miss a corresponding .c file in POTFILES.skip +vala_c_files="$(for f in $vala_files; do echo "${f%.vala}.c"; done)" +vala_c_files_missing="$(for f in ${vala_c_files[@]}; do ! grep -q "^$f$" po/POTFILES.skip && echo "$f"; done)" +if [ ${#vala_c_files_missing} -ne 0 ]; then + echo >&2 "The following files are missing from po/POTFILES.skip:" + for f in ${vala_c_files_missing[@]}; do + echo " $f" >&2 + done + echo >&2 + exit 1 +fi |