#!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
urequire DEFAULTS java

function display_help() {
    uecho "$scriptname: Lancer un script après avoir sélectionné une version de java

USAGE
    $scriptname [options] version [args...]

OPTIONS
    -b, --bits 32|64|auto
    --32
    --64
        Sélectionner une version 32 ou 64 bits de java
    -e, --exact
        Sélectionner la version *exacte* de java demandée, au lieu de la version
        minimum correspondant à la version demandée.
        Si la version requise de java n'est pas trouvée, retourner avec le code
        d'erreur 254.

La version de java attendue peut-être exprimée de l'une des façons suivantes:
1.4 1.4+ 1.5 1.5+ 1.6 1.6+ 1.7 1.7+
Si args n'est pas spécifié, un shell est lancé dans lequel les variables
JAVA_HOME, JAVA, JAVAC et PATH sont mis à jour."
}

bits=
exact=
parse_opts + "${PRETTYOPTS[@]}" \
    --help '$exit_with display_help' \
    -b:,--bits: bits= \
    -2,--32 bits=32 \
    -4,--64 bits=64 \
    -e,--exact exact=1 \
    @ args -- "$@" && set -- "${args[@]}" || die "$args"

[ "$bits" == "auto" ] && bits=
javavers="${1:-1.5+}"; shift
javadesc="Java $javavers${bits:+ / $bits bits}"

estep "Sélection de $javadesc"
found=
if [ -n "$exact" ]; then
    select_java_exact "$javavers" "$bits" && found=1
else
    select_java "$javavers" "$bits" && found=1
fi
if [ -z "$found" ]; then
    eerror "Impossible de trouver $javadesc"
    exit 254
fi
eecho "JAVA_HOME=$JAVA_HOME"

if [ -n "$*" ]; then
    estep "Lancement de $*"
    if [ "${1%.jar}" != "$1" ]; then
        exec java -jar "$@"
    else
        exec "$@"
    fi
else
    estep "Lancement d'un sous-shell"
    exec "${SHELL:-bash}"
fi