#!/bin/sh
#
# Small script to install a jar in multiple version-specific locations
#
# JPackage project
#
# $Id: jvmjar,v 1.1 2004/12/15 16:23:45 robert Exp $

# System-wide java configuration
JAVA_CONF=/etc/java/java.conf

if [ -z "$JAVA_LIBDIR" ] ; then 
    [ -r "$JAVA_CONF" ] && . "$JAVA_CONF" || JAVA_LIBDIR=/usr/share/java
fi

usage() {
/bin/cat << EOF_USAGE
Usage: $0 <l|u> <jar> <extension> <version> [<versionB> ... <versionZ>]
- l|u: link/unlink jars
- jar: name of the jar present in $JAVA_LIBDIR-ext to install as a jvm extension
       For example: jaf for $JAVA_LIBDIR-ext/jaf.jar
       Only required with -l
- extension: name under which the jar should be known in the jvm dirs
             For example: activation for activation.jar
             This is necessary when the same extension is provided by different
             jars depending on jvm version (i.e. classes.jar, classes12.jar and
             so on).
- versionX: versions of the java standard (1.2, 1.3...) that support this jar as
            an external extension
EOF_USAGE
exit 0
}

[ $# -lt 3 ] && usage

case "$1" in
    -l|--link|-c|--create)
    LINK="true"
    [ $# -lt 4 ] && usage
    shift
    ORIGINAL_JAR_NAME="$1"
    if ! [ -e "$JAVA_LIBDIR-ext/$ORIGINAL_JAR_NAME.jar" ] ; then
        echo "Could not find $JAVA_LIBDIR-ext/$ORIGINAL_JAR_NAME.jar" >&2
        exit 1
    fi
    ;;
    -u|--unlink|-d|--delete)
    LINK="false"
    ;;
    *)
    usage
esac

shift
EXTENSION_NAME="$1"
shift

for version in "$@" ; do
    if [ $LINK = "true" ] ; then
    [ -d $JAVA_LIBDIR-$version ] || /usr/bin/install -d -m 755 $JAVA_LIBDIR-$version
    /bin/ln -fs "../java-ext/$ORIGINAL_JAR_NAME.jar" \
        $JAVA_LIBDIR-$version/$EXTENSION_NAME.jar
    else
    /bin/rm -f "$JAVA_LIBDIR-$version/$EXTENSION_NAME.jar"
    fi
done