#!/bin/sh
MAIN_CLASS="com.icegreen.greenmail.standalone.GreenMailStandaloneRunner"
CLASSPATH_FILE="@GREENMAIL_STANDALONE_DIR@/greenmail-standalone.classpath"
JAVA_EXTRA=""

usage() {
    echo "Usage: greenmail [JAVA_OPTS]" >&2
    echo "  Example: greenmail -Dgreenmail.setup.test.smtp -Dgreenmail.setup.test.api" >&2
    echo "  Env var: GREENMAIL_STANDALONE_JAVA_OPTS='-Dgreenmail.setup.test.all'" >&2
}

while [ $# -gt 0 ]; do
    case "$1" in
        --java-opt)
            [ $# -ge 2 ] || { usage; exit 2; }
            JAVA_EXTRA="${JAVA_EXTRA} $2"
            shift 2
            ;;
        --help|-h)
            usage
            exit 0
            ;;
        --)
            shift
            break
            ;;
        -D*|-X*|-XX:*|-agentlib:*|-agentpath:*|-javaagent:*)
            JAVA_EXTRA="${JAVA_EXTRA} $1"
            shift
            ;;
        *)
            break
            ;;
    esac
done

GM_JAVA_OPTS="${GREENMAIL_STANDALONE_JAVA_OPTS:-}"
if [ -n "$JAVA_EXTRA" ]; then
    JAVA_EXTRA=${JAVA_EXTRA# }
    if [ -n "$GM_JAVA_OPTS" ]; then
        GM_JAVA_OPTS="$GM_JAVA_OPTS $JAVA_EXTRA"
    else
        GM_JAVA_OPTS="$JAVA_EXTRA"
    fi
fi

if ! command -v build-classpath >/dev/null 2>&1; then
    echo "greenmail: build-classpath not found" >&2
    echo "Install javapackages-tools package." >&2
    exit 1
fi

if [ ! -r "$CLASSPATH_FILE" ]; then
    echo "greenmail: classpath file not found: $CLASSPATH_FILE" >&2
    exit 1
fi

CLASSPATH_ARGS=""
while IFS= read -r entry; do
    [ -n "$entry" ] || continue
    CLASSPATH_ARGS="${CLASSPATH_ARGS}${CLASSPATH_ARGS:+ }${entry}"
done < "$CLASSPATH_FILE"

GM_CLASSPATH=$(build-classpath $CLASSPATH_ARGS) || exit $?

if [ -n "$GM_JAVA_OPTS" ]; then
    exec java $GM_JAVA_OPTS -cp "$GM_CLASSPATH" "$MAIN_CLASS" "$@"
fi

exec java -cp "$GM_CLASSPATH" "$MAIN_CLASS" "$@"
