fradrive/missing-translations.sh
2020-01-29 21:08:56 +01:00

59 lines
1.0 KiB
Bash
Executable File

#!/usr/bin/env zsh
set -e
function translations() {
msgFile=$1
sed -r 's/^([^ :]+).*$/\1/' ${msgFile} \
| sort
}
typeset -a msgFiles
msgFiles=(messages/**/*.msg)
typeset -a msgDirectories
msgDirectories=()
for msgFile (${msgFiles}); do
if ! [[ ${msgDirectories[(ie)${msgFile:h}]} -le ${#msgDirectories} ]]; then
msgDirectories+=(${msgFile:h})
fi
done
difference=0
for msgDirectory (${msgDirectories}); do
typeset -a dirMsgFiles
dirMsgFiles=()
for msgFile (${msgFiles}); do
if [[ ${msgFile:h} == ${msgDirectory} ]]; then
dirMsgFiles+=(${msgFile})
fi
done
(
diffDir=""
function cleanup() {
cd
[[ -n ${diffDir} ]] && rm -rf ${diffDir}
}
trap cleanup EXIT
diffDir=$(mktemp -d)
typeset -a diffArgs
diffArgs=()
for msgFile (${dirMsgFiles}); do
translations ${msgFile} > ${diffDir}/${msgFile:t}
diffArgs+=(${diffDir}/${msgFile:t})
done
printf ">>> %s\n" ${msgDirectory}
diff --suppress-common-lines -wB ${diffArgs}
) || difference=1
done
if [[ $difference -ne 0 ]]; then
exit 1
fi