173391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia#!/usr/bin/env bash
273391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia
373391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia##############################################################################
473391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia##
573391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia##  Gradle start up script for UN*X
673391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia##
773391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia##############################################################################
873391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia
973391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
1073391c7b0650f8b96d9976c0fe36a967900958c5Ricardo GarciaDEFAULT_JVM_OPTS=""
1173391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia
1273391c7b0650f8b96d9976c0fe36a967900958c5Ricardo GarciaAPP_NAME="Gradle"
1373391c7b0650f8b96d9976c0fe36a967900958c5Ricardo GarciaAPP_BASE_NAME=`basename "$0"`
1473391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia
1573391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia# Use the maximum available, or set MAX_FD != -1 to use that value.
1673391c7b0650f8b96d9976c0fe36a967900958c5Ricardo GarciaMAX_FD="maximum"
1773391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia
1873391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garciawarn ( ) {
1973391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    echo "$*"
2073391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia}
2173391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia
2273391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garciadie ( ) {
2373391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    echo
2473391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    echo "$*"
2573391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    echo
2673391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    exit 1
2773391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia}
2873391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia
2973391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia# OS specific support (must be 'true' or 'false').
3073391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garciacygwin=false
3173391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garciamsys=false
3273391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garciadarwin=false
3373391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garciacase "`uname`" in
3473391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia  CYGWIN* )
3573391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    cygwin=true
3673391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    ;;
3773391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia  Darwin* )
3873391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    darwin=true
3973391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    ;;
4073391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia  MINGW* )
4173391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    msys=true
4273391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    ;;
4373391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garciaesac
4473391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia
4573391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia# For Cygwin, ensure paths are in UNIX format before anything is touched.
4673391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garciaif $cygwin ; then
4773391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
4873391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garciafi
4973391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia
5073391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia# Attempt to set APP_HOME
5173391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia# Resolve links: $0 may be a link
5273391c7b0650f8b96d9976c0fe36a967900958c5Ricardo GarciaPRG="$0"
5373391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia# Need this for relative symlinks.
5473391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garciawhile [ -h "$PRG" ] ; do
5573391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    ls=`ls -ld "$PRG"`
5673391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    link=`expr "$ls" : '.*-> \(.*\)$'`
5773391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    if expr "$link" : '/.*' > /dev/null; then
5873391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia        PRG="$link"
5973391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    else
6073391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia        PRG=`dirname "$PRG"`"/$link"
6173391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    fi
6273391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garciadone
6373391c7b0650f8b96d9976c0fe36a967900958c5Ricardo GarciaSAVED="`pwd`"
6473391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garciacd "`dirname \"$PRG\"`/" >&-
6573391c7b0650f8b96d9976c0fe36a967900958c5Ricardo GarciaAPP_HOME="`pwd -P`"
6673391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garciacd "$SAVED" >&-
6773391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia
6873391c7b0650f8b96d9976c0fe36a967900958c5Ricardo GarciaCLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
6973391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia
7073391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia# Determine the Java command to use to start the JVM.
7173391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garciaif [ -n "$JAVA_HOME" ] ; then
7273391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
7373391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia        # IBM's JDK on AIX uses strange locations for the executables
7473391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia        JAVACMD="$JAVA_HOME/jre/sh/java"
7573391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    else
7673391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia        JAVACMD="$JAVA_HOME/bin/java"
7773391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    fi
7873391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    if [ ! -x "$JAVACMD" ] ; then
7973391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
8073391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia
8173391c7b0650f8b96d9976c0fe36a967900958c5Ricardo GarciaPlease set the JAVA_HOME variable in your environment to match the
8273391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcialocation of your Java installation."
8373391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    fi
8473391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garciaelse
8573391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    JAVACMD="java"
8673391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
8773391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia
8873391c7b0650f8b96d9976c0fe36a967900958c5Ricardo GarciaPlease set the JAVA_HOME variable in your environment to match the
8973391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcialocation of your Java installation."
9073391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garciafi
9173391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia
9273391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia# Increase the maximum file descriptors if we can.
9373391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garciaif [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
9473391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    MAX_FD_LIMIT=`ulimit -H -n`
9573391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    if [ $? -eq 0 ] ; then
9673391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
9773391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia            MAX_FD="$MAX_FD_LIMIT"
9873391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia        fi
9973391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia        ulimit -n $MAX_FD
10073391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia        if [ $? -ne 0 ] ; then
10173391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia            warn "Could not set maximum file descriptor limit: $MAX_FD"
10273391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia        fi
10373391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    else
10473391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
10573391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    fi
10673391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garciafi
10773391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia
10873391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia# For Darwin, add options to specify how the application appears in the dock
10973391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garciaif $darwin; then
11073391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
11173391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garciafi
11273391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia
11373391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia# For Cygwin, switch paths to Windows format before running java
11473391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garciaif $cygwin ; then
11573391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
11673391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
11773391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia
11873391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    # We build the pattern for arguments to be converted via cygpath
11973391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
12073391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    SEP=""
12173391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    for dir in $ROOTDIRSRAW ; do
12273391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia        ROOTDIRS="$ROOTDIRS$SEP$dir"
12373391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia        SEP="|"
12473391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    done
12573391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    OURCYGPATTERN="(^($ROOTDIRS))"
12673391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    # Add a user-defined pattern to the cygpath arguments
12773391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
12873391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
12973391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    fi
13073391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    # Now convert the arguments - kludge to limit ourselves to /bin/sh
13173391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    i=0
13273391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    for arg in "$@" ; do
13373391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
13473391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
13573391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia
13673391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
13773391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
13873391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia        else
13973391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia            eval `echo args$i`="\"$arg\""
14073391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia        fi
14173391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia        i=$((i+1))
14273391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    done
14373391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    case $i in
14473391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia        (0) set -- ;;
14573391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia        (1) set -- "$args0" ;;
14673391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia        (2) set -- "$args0" "$args1" ;;
14773391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia        (3) set -- "$args0" "$args1" "$args2" ;;
14873391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
14973391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
15073391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
15173391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
15273391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
15373391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
15473391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    esac
15573391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garciafi
15673391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia
15773391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
15873391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garciafunction splitJvmOpts() {
15973391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia    JVM_OPTS=("$@")
16073391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia}
16173391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garciaeval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
16273391c7b0650f8b96d9976c0fe36a967900958c5Ricardo GarciaJVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
16373391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garcia
16473391c7b0650f8b96d9976c0fe36a967900958c5Ricardo Garciaexec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
165