mirror of
https://github.com/Ocelot-Social-Community/Ocelot-Social.git
synced 2025-12-12 23:35:58 +00:00
45 lines
1001 B
Bash
Executable File
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
|