#! /bin/sh
set -e 

# Files
LG="/etc/locale.gen"
EE="/etc/locale.conf"
LEGACY_EE="/etc/default/locale"

# Sanitize environnement
LC_ALL=C
LANG=C

if [ "$1" = configure ]; then
    # Transition to /etc/locale.conf
    if [ -f "$LEGACY_EE" ] && [ ! -L "$LEGACY_EE" ] && [ ! -e "$EE" ]; then
        mv "$LEGACY_EE" "$EE"
    fi
    if [ ! -e "$LEGACY_EE"  ]; then
        ln -sfr "$EE" "$LEGACY_EE"
    fi

    # Load debconf
    . /usr/share/debconf/confmodule
    db_version 2.0

    db_get locales/default_environment_locale && DEFAULT_ENVIRONMENT="$RET"
    db_get locales/locales_to_be_generated && SELECTED_LOCALES=$RET
    SELECTED_LOCALES="$(echo $SELECTED_LOCALES | sed -e 's/, /\n/g')"

    if [ "$SELECTED_LOCALES" = "All locales" ]; then
        [ -e $LG ] && rm -f $LG
        ln -s /usr/share/i18n/SUPPORTED $LG
    else
        [ -L $LG ] && [ "$(readlink $LG)" = "/usr/share/i18n/SUPPORTED" ] && rm -f $LG
        if [ ! -e $LG ] ; then
            cat > $LG << EOF
# This file lists locales that you wish to have built. You can find a list
# of valid supported locales at /usr/share/i18n/SUPPORTED, and you can add
# user defined locales to /usr/local/share/i18n/SUPPORTED. If you change
# this file, you need to rerun locale-gen.
#

EOF
        fi

        # Comment previous defined locales
        sed -i -e 's/^ *[a-zA-Z]/# &/' $LG

        # Get list of supported locales
        if [ -f "/usr/local/share/i18n/SUPPORTED" ] ; then
            SUPPORTED_LOCALES="$(sed -e '/^[a-zA-Z]/!d' -e 's/ *$//g' /usr/share/i18n/SUPPORTED /usr/local/share/i18n/SUPPORTED | sort -u)"
        else
            SUPPORTED_LOCALES="$(sed -e '/^[a-zA-Z]/!d' -e 's/ *$//g' /usr/share/i18n/SUPPORTED | sort -u)"
        fi

        # Make sure all locales exist in locales.gen
        echo "$SUPPORTED_LOCALES" | while read locale ; do
           if ! grep -q "^[# ]*$locale *\$" $LG; then 
             echo "# $locale" >> $LG
           fi
        done

        # Uncomment selected locales
        echo "$SELECTED_LOCALES" | while read locale ; do
            sed -i -e "0,/^[# ]*$locale *$/ s/^[# ]*$locale *$/$locale/" $LG
        done
    fi

    # Update requested locales if locales-all is not installed
    if [ "$(dpkg-query -W -f='${db:Status-Want}' locales-all 2>/dev/null)" = 'install' ] ; then
        echo "locales-all installed, skipping locales generation"
    else
        locale-gen
    fi

    if ! [ -e $EE ] || [ -n "$DEBCONF_RECONFIGURE" ] ; then
        # Remove previous definitions
        update-locale --no-checks LANG

        # Set default LANG environment variable
        if [ -n "$DEFAULT_ENVIRONMENT" ] && [ "$DEFAULT_ENVIRONMENT" != "None" ]; then
            update-locale "LANG=$DEFAULT_ENVIRONMENT"
        fi
    fi
fi



exit 0
