#!/bin/bash
# Copyright 2015, Alexis La Goutte (See AUTHORS file)
#
# Resync translation between Wireshark's git repository and Transifex

# We keep translation files in the following locations:
# ui/qt/*.ts (Qt)
# ui/stratoshark/*.ts (Qt)
# packaging/debian/po/ (Gettext)

NO_PUSH="False"
while getopts "n" OPTCHAR ; do
    case $OPTCHAR in
        n) NO_PUSH="True" ;;
        *) printf "Unknown option: %s\\n" "$OPTARG"
    esac
done
shift $((OPTIND - 1))

TOP_LEVEL=$(git rev-parse --show-toplevel)
if ! cd "$TOP_LEVEL" ; then
    echo "Can't change to the top-level source directory."
    exit 1
fi

LUPDATE_INCLUDES=(-I .)
while read -r ; do
    LUPDATE_INCLUDES+=(-I "$REPLY")
done < <(find "$TOP_LEVEL/ui/qt" -type d)

# All .cpp, .h, and .ui files under ui/qt
LUPDATE_FILES=()
while read -r ; do
    LUPDATE_FILES+=("$REPLY")
done < <(find ui/qt -name '*.cpp' -o -name '*.h' -o -name '*.ui')

# Add line numbers
for i in ui/qt/*.ts ; do
    lupdate -locations absolute "${LUPDATE_INCLUDES[@]}" "${LUPDATE_FILES[@]}" -ts "$i"
done

# Get last translation for Transifex
tx pull -f

# Regenerate last translation for repo
for i in ui/qt/*.ts ; do
    lupdate -locations absolute "${LUPDATE_INCLUDES[@]}" "${LUPDATE_FILES[@]}" -ts "$i"
done

# Push last change tranlastion on Transifex
if [ "$NO_PUSH" != "True" ]; then
    tx push -t -s
fi

# Remove line numbers
for i in ui/qt/*.ts ; do
    lupdate -locations none -no-ui-lines "${LUPDATE_INCLUDES[@]}" "${LUPDATE_FILES[@]}" -ts "$i"
done

#
#  Editor modelines
#
#  Local Variables:
#  c-basic-offset: 4
#  tab-width: 8
#  indent-tabs-mode: nil
#  End:
#
#  ex: set shiftwidth=4 tabstop=8 expandtab:
#  :indentSize=4:tabSize=8:noTabs=true:
#
