#!/bin/sh

PYFILES=$(find -L ./ -type f -name "*.py")
GLADEFILES=$(find -L ./ -type f -name "*.ui")


check_args()
{
    if [ $# -ne 2 ]; then
        echo "Missing lang argument" >&2
        exit 4
    fi
}

init_ln()
{
    if [ -e "core_plugins" ] && [ ! -L "core_plugins" ]; then
        echo "core_plugins must be a symbolic link" >&2
        exit 1
    fi
    if [ ! -e "core_plugins" ]; then
        ln -s ../../plugins core_plugins
    fi
    if [ ! -L "community_plugins" ]; then
        echo "community_plugins should be a symbolic link to gajim-plugins repository, else they won't be in po files"
    fi
}

make_pot()
{
    # Generate .ui.h
    find -L ./ -type f -name "*.ui" -exec intltool-extract --type="gettext/glade"  {} \;
    GLADEHFILES=$(find -L ./ -type f -name "*.ui.h")
    xgettext -k_ -kN_ -o plugins_translations.pot $PYFILES $GLADEHFILES --from-code=utf-8
    rm $GLADEHFILES
}

make_po()
{
    if [ -f $1.po ]; then
        echo "Updating '$1' language";
        msgmerge -U $1.po plugins_translations.pot;
    else
        msginit -l $1.UTF-8 -o $1.po;
    fi
}

make_mo()
{
    if [ ! -f $1.po ]; then
        echo "$1.po doesn't existe. Use plugins_translation make_po $1 to create it.";
        exit 3
    fi
    mkdir -p locale/$1/LC_MESSAGES
    msgfmt -o $1.mo $1.po
}

install_mo()
{
    if [ -L community_plugins ]; then
        cp $1.mo community_plugins/plugins_translations/
    fi
    mkdir -p ~/.local/share/gajim/plugins/locale/$1/LC_MESSAGES/
    cp $1.mo ~/.local/share/gajim/plugins/locale/$1/LC_MESSAGES/gajim_plugins.mo
}


case "$1" in
    make_po)
        check_args $@
        init_ln
        make_pot
        make_po $2
        ;;
    make_mo)
        check_args $@
        make_mo $2
        ;;
    install_mo)
        install_mo $2
        ;;
    all)
        check_args $@
        init_ln
        make_pot
        make_po $2
        make_mo $2
        install_mo $2
        ;;
    *)
        echo "Usage: plugins_translation {all|make_po|make_mo|install_mo}" >&2
        echo "example: plugins_translation make_po fr_FR"
        exit 2
        ;;
esac
