#!/bin/sh
# Synopsis: [DEBIAN_EL_DEBUG=1] emacsen-install [--test] emacs24 ...

set -e

if [ "$DEBIAN_EL_DEBUG" ]; then
    set -x
fi

PACKAGE=edb
MESSAGE="install/$PACKAGE:"
unset test

Run ()
{
    ${test+echo} "$@"
}

Install ()
{
    # set ARGS and FLAVOR before calling

    ELDIR=/usr/share/emacs/site-lisp/$PACKAGE
    ELCDIR=/usr/share/$FLAVOR/site-lisp/$PACKAGE

    BYTECOMP=BYTE-COMPILE.el
    EL_LIBS="-l ./$BYTECOMP -l bfuncs -l database.el"
    EL_FLAGS="-batch -q -no-site-file"
    EMACS="$FLAVOR $EL_LIBS $EL_FLAGS"

    echo "install/$PACKAGE: Handling install of emacsen flavor $FLAVOR"

    case "$FLAVOR" in
	xemacs*|emacs23|emacs22|emacs21|emacs20|emacs19|mule2)
	    echo "$MESSAGE [$FLAVOR] ignored."
	    ;;

	*)
	    echo "$MESSAGE Byte-Compiling in dir $ELDIR/ ..."

	    Run install -m 755 -d $ELCDIR
	    Run rm -f $ELCDIR/*.el $ELCDIR/*.elc

	    Run cd $ELDIR

	    cat << EOF > $BYTECOMP
(setq load-path (cons "." load-path))
(setq edb-directory ".")
EOF

	    Run $EMACS \
		-f edb-bfunc-make-all \
		-f batch-byte-compile \
		   database.el

	    rm -f $BYTECOMP
	    Run mv -f *.elc $ELCDIR/

	    for file in $ELDIR/*.el
	    do
		if [ ! -f $file ]; then
		    echo "$MESSAGE [ERROR] No $file in $(pwd)"
		    exit 1
		fi

		Run ln -sf $file $ELCDIR
	    done

	    echo "$MESSAGE Byte-Compiling... done."
	    ;;
    esac
}

Main ()
{
    ARGS="$*"

    if [ "$1" = "--test" ]; then
	test="test-mode"
	echo "$MESSAGE [TEST MODE $1] No real commands run"
	shift
    fi

    FLAVOR=$1
    [ ! "$1" ] || shift

    if [ "$FLAVOR" = emacs ]; then
	return 0
    fi

    Install $FLAVOR

    exit 0
}

Main  "$@"

# Endo file
