45 lines
1001 B
Bash
Executable File

#!/bin/bash
if [ $# -eq 0 ]
then
echo "You have to supply at least one argument specifying the folder to lint"
fi
FILES="$1"
tmp=$(mktemp)
exit_code=0
for locale_file in $FILES/*.json
do
jq -f $(dirname "$0")/sort.jq $locale_file > "$tmp"
# check sort order and fix it if required
if [ "$2" == "--fix" ]
then
mv "$tmp" $locale_file
else
if diff -q "$tmp" $locale_file > /dev/null ;
then
: # all good
else
exit_code=$?
echo "$(basename -- $locale_file) is not sorted by keys"
fi
fi
# check keys
if [ -n "$LAST_FILE" ]; then
listPaths="jq -f $(dirname "$0")/keys.jq"
diffString="<( cat $LAST_FILE | $listPaths ) <( cat $locale_file | $listPaths )"
if eval "diff -q $diffString";
then
: # all good
else
eval "diff -y $diffString | grep '[|<>]'";
printf "\n$LAST_FILE\" and $locale_file translation keys do not match, see diff above.\n"
exit_code=1
fi
fi
LAST_FILE=$locale_file
done
exit $exit_code