194599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver#!/usr/bin/env bash
294599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver
394599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver##############################################################################
494599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver##
594599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver##  Gradle start up script for UN*X
694599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver##
794599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver##############################################################################
894599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver
994599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
1094599babbb437dd6bbd51d61dce42b57b71d88deBen GruverDEFAULT_JVM_OPTS=""
1194599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver
1294599babbb437dd6bbd51d61dce42b57b71d88deBen GruverAPP_NAME="Gradle"
1394599babbb437dd6bbd51d61dce42b57b71d88deBen GruverAPP_BASE_NAME=`basename "$0"`
1494599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver
1594599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver# Use the maximum available, or set MAX_FD != -1 to use that value.
1694599babbb437dd6bbd51d61dce42b57b71d88deBen GruverMAX_FD="maximum"
1794599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver
1894599babbb437dd6bbd51d61dce42b57b71d88deBen Gruverwarn ( ) {
1994599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    echo "$*"
2094599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver}
2194599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver
2294599babbb437dd6bbd51d61dce42b57b71d88deBen Gruverdie ( ) {
2394599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    echo
2494599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    echo "$*"
2594599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    echo
2694599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    exit 1
2794599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver}
2894599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver
2994599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver# OS specific support (must be 'true' or 'false').
3094599babbb437dd6bbd51d61dce42b57b71d88deBen Gruvercygwin=false
3194599babbb437dd6bbd51d61dce42b57b71d88deBen Gruvermsys=false
3294599babbb437dd6bbd51d61dce42b57b71d88deBen Gruverdarwin=false
3394599babbb437dd6bbd51d61dce42b57b71d88deBen Gruvercase "`uname`" in
3494599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver  CYGWIN* )
3594599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    cygwin=true
3694599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    ;;
3794599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver  Darwin* )
3894599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    darwin=true
3994599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    ;;
4094599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver  MINGW* )
4194599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    msys=true
4294599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    ;;
4394599babbb437dd6bbd51d61dce42b57b71d88deBen Gruveresac
4494599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver
4594599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver# For Cygwin, ensure paths are in UNIX format before anything is touched.
4694599babbb437dd6bbd51d61dce42b57b71d88deBen Gruverif $cygwin ; then
4794599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
4894599babbb437dd6bbd51d61dce42b57b71d88deBen Gruverfi
4994599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver
5094599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver# Attempt to set APP_HOME
5194599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver# Resolve links: $0 may be a link
5294599babbb437dd6bbd51d61dce42b57b71d88deBen GruverPRG="$0"
5394599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver# Need this for relative symlinks.
5494599babbb437dd6bbd51d61dce42b57b71d88deBen Gruverwhile [ -h "$PRG" ] ; do
5594599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    ls=`ls -ld "$PRG"`
5694599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    link=`expr "$ls" : '.*-> \(.*\)$'`
5794599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    if expr "$link" : '/.*' > /dev/null; then
5894599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver        PRG="$link"
5994599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    else
6094599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver        PRG=`dirname "$PRG"`"/$link"
6194599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    fi
6294599babbb437dd6bbd51d61dce42b57b71d88deBen Gruverdone
6394599babbb437dd6bbd51d61dce42b57b71d88deBen GruverSAVED="`pwd`"
6494599babbb437dd6bbd51d61dce42b57b71d88deBen Gruvercd "`dirname \"$PRG\"`/"
6594599babbb437dd6bbd51d61dce42b57b71d88deBen GruverAPP_HOME="`pwd -P`"
6694599babbb437dd6bbd51d61dce42b57b71d88deBen Gruvercd "$SAVED"
6794599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver
6894599babbb437dd6bbd51d61dce42b57b71d88deBen GruverCLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
6994599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver
7094599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver# Determine the Java command to use to start the JVM.
7194599babbb437dd6bbd51d61dce42b57b71d88deBen Gruverif [ -n "$JAVA_HOME" ] ; then
7294599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
7394599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver        # IBM's JDK on AIX uses strange locations for the executables
7494599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver        JAVACMD="$JAVA_HOME/jre/sh/java"
7594599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    else
7694599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver        JAVACMD="$JAVA_HOME/bin/java"
7794599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    fi
7894599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    if [ ! -x "$JAVACMD" ] ; then
7994599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
8094599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver
8194599babbb437dd6bbd51d61dce42b57b71d88deBen GruverPlease set the JAVA_HOME variable in your environment to match the
8294599babbb437dd6bbd51d61dce42b57b71d88deBen Gruverlocation of your Java installation."
8394599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    fi
8494599babbb437dd6bbd51d61dce42b57b71d88deBen Gruverelse
8594599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    JAVACMD="java"
8694599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
8794599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver
8894599babbb437dd6bbd51d61dce42b57b71d88deBen GruverPlease set the JAVA_HOME variable in your environment to match the
8994599babbb437dd6bbd51d61dce42b57b71d88deBen Gruverlocation of your Java installation."
9094599babbb437dd6bbd51d61dce42b57b71d88deBen Gruverfi
9194599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver
9294599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver# Increase the maximum file descriptors if we can.
9394599babbb437dd6bbd51d61dce42b57b71d88deBen Gruverif [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
9494599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    MAX_FD_LIMIT=`ulimit -H -n`
9594599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    if [ $? -eq 0 ] ; then
9694599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
9794599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver            MAX_FD="$MAX_FD_LIMIT"
9894599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver        fi
9994599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver        ulimit -n $MAX_FD
10094599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver        if [ $? -ne 0 ] ; then
10194599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver            warn "Could not set maximum file descriptor limit: $MAX_FD"
10294599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver        fi
10394599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    else
10494599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
10594599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    fi
10694599babbb437dd6bbd51d61dce42b57b71d88deBen Gruverfi
10794599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver
10894599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver# For Darwin, add options to specify how the application appears in the dock
10994599babbb437dd6bbd51d61dce42b57b71d88deBen Gruverif $darwin; then
11094599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
11194599babbb437dd6bbd51d61dce42b57b71d88deBen Gruverfi
11294599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver
11394599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver# For Cygwin, switch paths to Windows format before running java
11494599babbb437dd6bbd51d61dce42b57b71d88deBen Gruverif $cygwin ; then
11594599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
11694599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
11794599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver
11894599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    # We build the pattern for arguments to be converted via cygpath
11994599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
12094599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    SEP=""
12194599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    for dir in $ROOTDIRSRAW ; do
12294599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver        ROOTDIRS="$ROOTDIRS$SEP$dir"
12394599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver        SEP="|"
12494599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    done
12594599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    OURCYGPATTERN="(^($ROOTDIRS))"
12694599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    # Add a user-defined pattern to the cygpath arguments
12794599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
12894599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
12994599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    fi
13094599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    # Now convert the arguments - kludge to limit ourselves to /bin/sh
13194599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    i=0
13294599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    for arg in "$@" ; do
13394599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
13494599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
13594599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver
13694599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
13794599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
13894599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver        else
13994599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver            eval `echo args$i`="\"$arg\""
14094599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver        fi
14194599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver        i=$((i+1))
14294599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    done
14394599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    case $i in
14494599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver        (0) set -- ;;
14594599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver        (1) set -- "$args0" ;;
14694599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver        (2) set -- "$args0" "$args1" ;;
14794599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver        (3) set -- "$args0" "$args1" "$args2" ;;
14894599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
14994599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
15094599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
15194599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
15294599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
15394599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
15494599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    esac
15594599babbb437dd6bbd51d61dce42b57b71d88deBen Gruverfi
15694599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver
15794599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
15894599babbb437dd6bbd51d61dce42b57b71d88deBen Gruverfunction splitJvmOpts() {
15994599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver    JVM_OPTS=("$@")
16094599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver}
16194599babbb437dd6bbd51d61dce42b57b71d88deBen Gruvereval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
16294599babbb437dd6bbd51d61dce42b57b71d88deBen GruverJVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
16394599babbb437dd6bbd51d61dce42b57b71d88deBen Gruver
16494599babbb437dd6bbd51d61dce42b57b71d88deBen Gruverexec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
165