106956f3dd31a7e71bac119982a9a7db31259050eYabin Cui#!/usr/bin/env bash
206956f3dd31a7e71bac119982a9a7db31259050eYabin Cui
306956f3dd31a7e71bac119982a9a7db31259050eYabin Cui##############################################################################
406956f3dd31a7e71bac119982a9a7db31259050eYabin Cui##
506956f3dd31a7e71bac119982a9a7db31259050eYabin Cui##  Gradle start up script for UN*X
606956f3dd31a7e71bac119982a9a7db31259050eYabin Cui##
706956f3dd31a7e71bac119982a9a7db31259050eYabin Cui##############################################################################
806956f3dd31a7e71bac119982a9a7db31259050eYabin Cui
906956f3dd31a7e71bac119982a9a7db31259050eYabin Cui# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
1006956f3dd31a7e71bac119982a9a7db31259050eYabin CuiDEFAULT_JVM_OPTS=""
1106956f3dd31a7e71bac119982a9a7db31259050eYabin Cui
1206956f3dd31a7e71bac119982a9a7db31259050eYabin CuiAPP_NAME="Gradle"
1306956f3dd31a7e71bac119982a9a7db31259050eYabin CuiAPP_BASE_NAME=`basename "$0"`
1406956f3dd31a7e71bac119982a9a7db31259050eYabin Cui
1506956f3dd31a7e71bac119982a9a7db31259050eYabin Cui# Use the maximum available, or set MAX_FD != -1 to use that value.
1606956f3dd31a7e71bac119982a9a7db31259050eYabin CuiMAX_FD="maximum"
1706956f3dd31a7e71bac119982a9a7db31259050eYabin Cui
1806956f3dd31a7e71bac119982a9a7db31259050eYabin Cuiwarn ( ) {
1906956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    echo "$*"
2006956f3dd31a7e71bac119982a9a7db31259050eYabin Cui}
2106956f3dd31a7e71bac119982a9a7db31259050eYabin Cui
2206956f3dd31a7e71bac119982a9a7db31259050eYabin Cuidie ( ) {
2306956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    echo
2406956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    echo "$*"
2506956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    echo
2606956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    exit 1
2706956f3dd31a7e71bac119982a9a7db31259050eYabin Cui}
2806956f3dd31a7e71bac119982a9a7db31259050eYabin Cui
2906956f3dd31a7e71bac119982a9a7db31259050eYabin Cui# OS specific support (must be 'true' or 'false').
3006956f3dd31a7e71bac119982a9a7db31259050eYabin Cuicygwin=false
3106956f3dd31a7e71bac119982a9a7db31259050eYabin Cuimsys=false
3206956f3dd31a7e71bac119982a9a7db31259050eYabin Cuidarwin=false
3306956f3dd31a7e71bac119982a9a7db31259050eYabin Cuicase "`uname`" in
3406956f3dd31a7e71bac119982a9a7db31259050eYabin Cui  CYGWIN* )
3506956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    cygwin=true
3606956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    ;;
3706956f3dd31a7e71bac119982a9a7db31259050eYabin Cui  Darwin* )
3806956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    darwin=true
3906956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    ;;
4006956f3dd31a7e71bac119982a9a7db31259050eYabin Cui  MINGW* )
4106956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    msys=true
4206956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    ;;
4306956f3dd31a7e71bac119982a9a7db31259050eYabin Cuiesac
4406956f3dd31a7e71bac119982a9a7db31259050eYabin Cui
4506956f3dd31a7e71bac119982a9a7db31259050eYabin Cui# Attempt to set APP_HOME
4606956f3dd31a7e71bac119982a9a7db31259050eYabin Cui# Resolve links: $0 may be a link
4706956f3dd31a7e71bac119982a9a7db31259050eYabin CuiPRG="$0"
4806956f3dd31a7e71bac119982a9a7db31259050eYabin Cui# Need this for relative symlinks.
4906956f3dd31a7e71bac119982a9a7db31259050eYabin Cuiwhile [ -h "$PRG" ] ; do
5006956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    ls=`ls -ld "$PRG"`
5106956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    link=`expr "$ls" : '.*-> \(.*\)$'`
5206956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    if expr "$link" : '/.*' > /dev/null; then
5306956f3dd31a7e71bac119982a9a7db31259050eYabin Cui        PRG="$link"
5406956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    else
5506956f3dd31a7e71bac119982a9a7db31259050eYabin Cui        PRG=`dirname "$PRG"`"/$link"
5606956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    fi
5706956f3dd31a7e71bac119982a9a7db31259050eYabin Cuidone
5806956f3dd31a7e71bac119982a9a7db31259050eYabin CuiSAVED="`pwd`"
5906956f3dd31a7e71bac119982a9a7db31259050eYabin Cuicd "`dirname \"$PRG\"`/" >/dev/null
6006956f3dd31a7e71bac119982a9a7db31259050eYabin CuiAPP_HOME="`pwd -P`"
6106956f3dd31a7e71bac119982a9a7db31259050eYabin Cuicd "$SAVED" >/dev/null
6206956f3dd31a7e71bac119982a9a7db31259050eYabin Cui
6306956f3dd31a7e71bac119982a9a7db31259050eYabin CuiCLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
6406956f3dd31a7e71bac119982a9a7db31259050eYabin Cui
6506956f3dd31a7e71bac119982a9a7db31259050eYabin Cui# Determine the Java command to use to start the JVM.
6606956f3dd31a7e71bac119982a9a7db31259050eYabin Cuiif [ -n "$JAVA_HOME" ] ; then
6706956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
6806956f3dd31a7e71bac119982a9a7db31259050eYabin Cui        # IBM's JDK on AIX uses strange locations for the executables
6906956f3dd31a7e71bac119982a9a7db31259050eYabin Cui        JAVACMD="$JAVA_HOME/jre/sh/java"
7006956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    else
7106956f3dd31a7e71bac119982a9a7db31259050eYabin Cui        JAVACMD="$JAVA_HOME/bin/java"
7206956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    fi
7306956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    if [ ! -x "$JAVACMD" ] ; then
7406956f3dd31a7e71bac119982a9a7db31259050eYabin Cui        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
7506956f3dd31a7e71bac119982a9a7db31259050eYabin Cui
7606956f3dd31a7e71bac119982a9a7db31259050eYabin CuiPlease set the JAVA_HOME variable in your environment to match the
7706956f3dd31a7e71bac119982a9a7db31259050eYabin Cuilocation of your Java installation."
7806956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    fi
7906956f3dd31a7e71bac119982a9a7db31259050eYabin Cuielse
8006956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    JAVACMD="java"
8106956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
8206956f3dd31a7e71bac119982a9a7db31259050eYabin Cui
8306956f3dd31a7e71bac119982a9a7db31259050eYabin CuiPlease set the JAVA_HOME variable in your environment to match the
8406956f3dd31a7e71bac119982a9a7db31259050eYabin Cuilocation of your Java installation."
8506956f3dd31a7e71bac119982a9a7db31259050eYabin Cuifi
8606956f3dd31a7e71bac119982a9a7db31259050eYabin Cui
8706956f3dd31a7e71bac119982a9a7db31259050eYabin Cui# Increase the maximum file descriptors if we can.
8806956f3dd31a7e71bac119982a9a7db31259050eYabin Cuiif [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
8906956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    MAX_FD_LIMIT=`ulimit -H -n`
9006956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    if [ $? -eq 0 ] ; then
9106956f3dd31a7e71bac119982a9a7db31259050eYabin Cui        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
9206956f3dd31a7e71bac119982a9a7db31259050eYabin Cui            MAX_FD="$MAX_FD_LIMIT"
9306956f3dd31a7e71bac119982a9a7db31259050eYabin Cui        fi
9406956f3dd31a7e71bac119982a9a7db31259050eYabin Cui        ulimit -n $MAX_FD
9506956f3dd31a7e71bac119982a9a7db31259050eYabin Cui        if [ $? -ne 0 ] ; then
9606956f3dd31a7e71bac119982a9a7db31259050eYabin Cui            warn "Could not set maximum file descriptor limit: $MAX_FD"
9706956f3dd31a7e71bac119982a9a7db31259050eYabin Cui        fi
9806956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    else
9906956f3dd31a7e71bac119982a9a7db31259050eYabin Cui        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
10006956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    fi
10106956f3dd31a7e71bac119982a9a7db31259050eYabin Cuifi
10206956f3dd31a7e71bac119982a9a7db31259050eYabin Cui
10306956f3dd31a7e71bac119982a9a7db31259050eYabin Cui# For Darwin, add options to specify how the application appears in the dock
10406956f3dd31a7e71bac119982a9a7db31259050eYabin Cuiif $darwin; then
10506956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
10606956f3dd31a7e71bac119982a9a7db31259050eYabin Cuifi
10706956f3dd31a7e71bac119982a9a7db31259050eYabin Cui
10806956f3dd31a7e71bac119982a9a7db31259050eYabin Cui# For Cygwin, switch paths to Windows format before running java
10906956f3dd31a7e71bac119982a9a7db31259050eYabin Cuiif $cygwin ; then
11006956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
11106956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
11206956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    JAVACMD=`cygpath --unix "$JAVACMD"`
11306956f3dd31a7e71bac119982a9a7db31259050eYabin Cui
11406956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    # We build the pattern for arguments to be converted via cygpath
11506956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
11606956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    SEP=""
11706956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    for dir in $ROOTDIRSRAW ; do
11806956f3dd31a7e71bac119982a9a7db31259050eYabin Cui        ROOTDIRS="$ROOTDIRS$SEP$dir"
11906956f3dd31a7e71bac119982a9a7db31259050eYabin Cui        SEP="|"
12006956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    done
12106956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    OURCYGPATTERN="(^($ROOTDIRS))"
12206956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    # Add a user-defined pattern to the cygpath arguments
12306956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
12406956f3dd31a7e71bac119982a9a7db31259050eYabin Cui        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
12506956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    fi
12606956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    # Now convert the arguments - kludge to limit ourselves to /bin/sh
12706956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    i=0
12806956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    for arg in "$@" ; do
12906956f3dd31a7e71bac119982a9a7db31259050eYabin Cui        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
13006956f3dd31a7e71bac119982a9a7db31259050eYabin Cui        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
13106956f3dd31a7e71bac119982a9a7db31259050eYabin Cui
13206956f3dd31a7e71bac119982a9a7db31259050eYabin Cui        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
13306956f3dd31a7e71bac119982a9a7db31259050eYabin Cui            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
13406956f3dd31a7e71bac119982a9a7db31259050eYabin Cui        else
13506956f3dd31a7e71bac119982a9a7db31259050eYabin Cui            eval `echo args$i`="\"$arg\""
13606956f3dd31a7e71bac119982a9a7db31259050eYabin Cui        fi
13706956f3dd31a7e71bac119982a9a7db31259050eYabin Cui        i=$((i+1))
13806956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    done
13906956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    case $i in
14006956f3dd31a7e71bac119982a9a7db31259050eYabin Cui        (0) set -- ;;
14106956f3dd31a7e71bac119982a9a7db31259050eYabin Cui        (1) set -- "$args0" ;;
14206956f3dd31a7e71bac119982a9a7db31259050eYabin Cui        (2) set -- "$args0" "$args1" ;;
14306956f3dd31a7e71bac119982a9a7db31259050eYabin Cui        (3) set -- "$args0" "$args1" "$args2" ;;
14406956f3dd31a7e71bac119982a9a7db31259050eYabin Cui        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
14506956f3dd31a7e71bac119982a9a7db31259050eYabin Cui        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
14606956f3dd31a7e71bac119982a9a7db31259050eYabin Cui        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
14706956f3dd31a7e71bac119982a9a7db31259050eYabin Cui        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
14806956f3dd31a7e71bac119982a9a7db31259050eYabin Cui        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
14906956f3dd31a7e71bac119982a9a7db31259050eYabin Cui        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
15006956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    esac
15106956f3dd31a7e71bac119982a9a7db31259050eYabin Cuifi
15206956f3dd31a7e71bac119982a9a7db31259050eYabin Cui
15306956f3dd31a7e71bac119982a9a7db31259050eYabin Cui# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
15406956f3dd31a7e71bac119982a9a7db31259050eYabin Cuifunction splitJvmOpts() {
15506956f3dd31a7e71bac119982a9a7db31259050eYabin Cui    JVM_OPTS=("$@")
15606956f3dd31a7e71bac119982a9a7db31259050eYabin Cui}
15706956f3dd31a7e71bac119982a9a7db31259050eYabin Cuieval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
15806956f3dd31a7e71bac119982a9a7db31259050eYabin CuiJVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
15906956f3dd31a7e71bac119982a9a7db31259050eYabin Cui
16006956f3dd31a7e71bac119982a9a7db31259050eYabin Cuiexec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
161