#!/bin/sh

# 	Copyright (C) 2001,02,03,2004 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this software; see the file COPYING.  If not, write to
# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# As a special exception, the Free Software Foundation gives permission
# for additional uses of the text contained in its release of GUILE.
#
# The exception is that, if you link the GUILE library with other files
# to produce an executable, this does not by itself cause the
# resulting executable to be covered by the GNU General Public License.
# Your use of that executable is in no way restricted on account of
# linking the GUILE library code into it.
#
# This exception does not however invalidate any other reasons why
# the executable file might be covered by the GNU General Public License.
#
# This exception applies only to the code released by the
# Free Software Foundation under the name GUILE.  If you copy
# code from other Free Software Foundation releases into a copy of
# GUILE, as the General Public License permits, the exception does
# not apply to the code that you add in this way.  To avoid misleading
# anyone as to the status of such modified files, you must delete
# this exception notice from them.
#
# If you write modifications of your own for GUILE, it is your choice
# whether to permit this exception to apply to your modifications.
# If you do not wish that, delete this exception notice.

# Usage: See `help' func below.
#
# TODO
# - handle pre-install invocation
# - "full" option processing (but see comment below)
#
# Author: Thien-Thi Nguyen

help ()
{
    cat <<EOF
Usage: guile-tools --version
       guile-tools --help
       guile-tools [OPTION] PROGRAM [ARGS]

If PROGRAM is "list" or omitted, display contents of scripts dir, otherwise
PROGRAM is run w/ ARGS.  Options (only one of which may be used at a time):
 --scriptsdir DIR    -- Look in DIR for scripts
 --guileversion VERS -- Look in $pkglibdir/VERS/scripts for scripts
 --source            -- Display PROGRAM source (ignore ARGS) to stdout
 --help-all          -- call each PROGRAM --help

Note that some PROGRAMs may also take --help or --version.

Default scripts dir: $default_scriptsdir
EOF
}

prefix="/usr"
exec_prefix="/usr"
pkglibdir="/usr/lib/guile"
guileversion="1.4.1.104"
default_scriptsdir=$pkglibdir/$guileversion/scripts

# option processing -- basically, you can override either the script dir
# completely, or just the guile version.  we choose implementation simplicity
# over orthogonality.

case x"$1" in
x--version)
    echo `basename $0` "(Guile)" $guileversion
    exit 0
    ;;
x--help)
    help
    exit 0
    ;;
esac

if [ x"$1" = x--scriptsdir ] ; then
    user_scriptsdir=$2
    shift
    shift
elif [ x"$1" = x--guileversion ] ; then
    user_scriptsdir=$pkglibdir/$2/scripts
    shift
    shift
fi

scriptsdir=${user_scriptsdir-$default_scriptsdir}

if [ ! -d $scriptsdir ] ; then
    echo $0: no such directory: $scriptsdir
    exit 1
fi

if [ x"$1" = x -o x"$1" = xlist ] ; then
    ls $scriptsdir
    exit 0
fi

if [ x"$1" = x--help-all ] ; then
    for tool in `$0` ; do echo ${tool}: ; $0 $tool --help ; done
    exit 0
fi

if [ x"$1" = x--source ] ; then
    if [ x"$2" = x ] ; then echo $0: need to specify program ; exit 1 ; fi
    if [ -x $scriptsdir/$2 ] ; then
        cat $scriptsdir/$2
        exit 0
    else
        echo $0: no such program: $2
        exit 1
    fi
fi

program=$scriptsdir/$1
shift

if [ -x $program ] ; then
    exec $program "$@"
else
    echo $0: no such program: $program
    exit 1
fi

# guile-tools ends here
