#!/bin/sh
# postinst script for ls-config
#
# see: dh_installdeb(1)

set -e

# summary of how this script can be called:
#        * <postinst> `configure' <most-recently-configured-version>
#        * <old-postinst> `abort-upgrade' <new version>
#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
#          <new-version>
#        * <postinst> `abort-remove'
#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
#          <failed-install-package> <version> `removing'
#          <conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package

config_path() {
    local CHK="$(echo ":$PATH:" | grep ":/usr/share/ls/lib:")"
    if [ "$CHK" != "" ]; then
	return 0;
    fi;
    local BIFS="$IFS"
    IFS=$'\n'
    local PR="$(</etc/profile)"
    local NF=""
    local L
    for L in $PR
    do
	CHK="$(echo "$L" | sed -E 's/^([\ \t]+)//g')"
	CHK="${CHK:0:5}"
	NF="$NF$IFS$L"
	if [ "$CHK" = "PATH=" ]; then
	    NF="$NF$IFS#Configuration path for ls scripting"
	    NF="$NF$IFS"
	    NF="${NF}PATH=\"\$PATH:/usr/share/ls/lib\"$IFS"
	fi;
    done
    NF="$NF$IFS"
    IFS="$BIFS"
    echo "$NF" > /etc/profile
}

case "$1" in
    configure)
	if [ ! -e "/etc/ls" ]; then
	    mkdir -p "/etc/ls/"
	    config_path
	fi;
    ;;

    abort-upgrade|abort-remove|abort-deconfigure)
    ;;

    *)
        echo "postinst called with unknown argument \`$1'" >&2
        exit 1
    ;;
esac

# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.

#DEBHELPER#

exit 0
