#!/bin/sh -e

if [ -z "$1" ]; then
    echo "Usage: $0 <language code>"
    exit 0
fi

[ -f /etc/locale.gen ] || exit 0

NEW=$(mktemp -t locale.gen.XXXXXX)
trap "rm -f $NEW" 0 1 2 3 5 7 10 13 15

unset changed

deflocale=None
if [ -e /etc/environment ]; then
    deflocale=$(awk 'BEGIN {lang="None"} /^LANG=/ {gsub("\"", ""); sub("LANG=", ""); lang=$0;} END {print lang}' /etc/environment)
fi

# remove all lines which match the selected language (in $1), but not
# $deflocale

cat /etc/locale.gen | (
    while read line; do
        if echo "$line" | grep -q "^$deflocale" || 
            ! echo "$line" | grep -q "^$1_.*UTF-8$"; then
            echo "$line" >> $NEW
        fi
    done
)

cmp -s /etc/locale.gen $NEW || changed=1

if [ "$changed" ]; then
    mv -b --suffix ".old" -f $NEW /etc/locale.gen
    chmod 644 /etc/locale.gen
    /usr/sbin/locale-gen
fi
