fradrive/missing-translations.sh
2020-01-15 17:17:21 +01:00

53 lines
996 B
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
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}
)
done