18ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar#!/usr/bin/env bash
28ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar
38ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar##############################################################################
48ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar##
58ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar##  Gradle start up script for UN*X
68ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar##
78ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar##############################################################################
88ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar
98ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
108ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit BoyarDEFAULT_JVM_OPTS=""
118ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar
128ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit BoyarAPP_NAME="Gradle"
138ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit BoyarAPP_BASE_NAME=`basename "$0"`
148ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar
158ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar# Use the maximum available, or set MAX_FD != -1 to use that value.
168ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit BoyarMAX_FD="maximum"
178ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar
188ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyarwarn ( ) {
198ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    echo "$*"
208ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar}
218ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar
228ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyardie ( ) {
238ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    echo
248ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    echo "$*"
258ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    echo
268ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    exit 1
278ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar}
288ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar
298ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar# OS specific support (must be 'true' or 'false').
308ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyarcygwin=false
318ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyarmsys=false
328ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyardarwin=false
338ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyarcase "`uname`" in
348ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar  CYGWIN* )
358ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    cygwin=true
368ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    ;;
378ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar  Darwin* )
388ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    darwin=true
398ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    ;;
408ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar  MINGW* )
418ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    msys=true
428ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    ;;
438ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyaresac
448ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar
458ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar# For Cygwin, ensure paths are in UNIX format before anything is touched.
468ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyarif $cygwin ; then
478ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
488ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyarfi
498ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar
508ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar# Attempt to set APP_HOME
518ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar# Resolve links: $0 may be a link
528ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit BoyarPRG="$0"
538ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar# Need this for relative symlinks.
548ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyarwhile [ -h "$PRG" ] ; do
558ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    ls=`ls -ld "$PRG"`
568ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    link=`expr "$ls" : '.*-> \(.*\)$'`
578ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    if expr "$link" : '/.*' > /dev/null; then
588ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar        PRG="$link"
598ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    else
608ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar        PRG=`dirname "$PRG"`"/$link"
618ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    fi
628ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyardone
638ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit BoyarSAVED="`pwd`"
648ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyarcd "`dirname \"$PRG\"`/" >&-
658ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit BoyarAPP_HOME="`pwd -P`"
668ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyarcd "$SAVED" >&-
678ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar
688ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit BoyarCLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
698ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar
708ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar# Determine the Java command to use to start the JVM.
718ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyarif [ -n "$JAVA_HOME" ] ; then
728ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
738ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar        # IBM's JDK on AIX uses strange locations for the executables
748ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar        JAVACMD="$JAVA_HOME/jre/sh/java"
758ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    else
768ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar        JAVACMD="$JAVA_HOME/bin/java"
778ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    fi
788ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    if [ ! -x "$JAVACMD" ] ; then
798ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
808ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar
818ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit BoyarPlease set the JAVA_HOME variable in your environment to match the
828ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyarlocation of your Java installation."
838ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    fi
848ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyarelse
858ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    JAVACMD="java"
868ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
878ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar
888ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit BoyarPlease set the JAVA_HOME variable in your environment to match the
898ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyarlocation of your Java installation."
908ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyarfi
918ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar
928ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar# Increase the maximum file descriptors if we can.
938ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyarif [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
948ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    MAX_FD_LIMIT=`ulimit -H -n`
958ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    if [ $? -eq 0 ] ; then
968ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
978ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar            MAX_FD="$MAX_FD_LIMIT"
988ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar        fi
998ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar        ulimit -n $MAX_FD
1008ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar        if [ $? -ne 0 ] ; then
1018ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar            warn "Could not set maximum file descriptor limit: $MAX_FD"
1028ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar        fi
1038ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    else
1048ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
1058ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    fi
1068ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyarfi
1078ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar
1088ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar# For Darwin, add options to specify how the application appears in the dock
1098ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyarif $darwin; then
1108ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
1118ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyarfi
1128ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar
1138ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar# For Cygwin, switch paths to Windows format before running java
1148ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyarif $cygwin ; then
1158ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
1168ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
1178ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar
1188ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    # We build the pattern for arguments to be converted via cygpath
1198ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
1208ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    SEP=""
1218ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    for dir in $ROOTDIRSRAW ; do
1228ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar        ROOTDIRS="$ROOTDIRS$SEP$dir"
1238ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar        SEP="|"
1248ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    done
1258ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    OURCYGPATTERN="(^($ROOTDIRS))"
1268ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    # Add a user-defined pattern to the cygpath arguments
1278ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
1288ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
1298ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    fi
1308ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    # Now convert the arguments - kludge to limit ourselves to /bin/sh
1318ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    i=0
1328ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    for arg in "$@" ; do
1338ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
1348ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
1358ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar
1368ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
1378ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
1388ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar        else
1398ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar            eval `echo args$i`="\"$arg\""
1408ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar        fi
1418ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar        i=$((i+1))
1428ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    done
1438ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    case $i in
1448ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar        (0) set -- ;;
1458ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar        (1) set -- "$args0" ;;
1468ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar        (2) set -- "$args0" "$args1" ;;
1478ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar        (3) set -- "$args0" "$args1" "$args2" ;;
1488ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
1498ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
1508ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
1518ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
1528ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
1538ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
1548ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    esac
1558ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyarfi
1568ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar
1578ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
1588ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyarfunction splitJvmOpts() {
1598ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar    JVM_OPTS=("$@")
1608ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar}
1618ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyareval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
1628ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit BoyarJVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
1638ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyar
1648ffce57a6056a34c9568ef1893d6e36ce80f2245Yigit Boyarexec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
165