14e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson#!/usr/bin/env bash
24e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson
34e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson##############################################################################
44e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson##
54e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson##  Gradle start up script for UN*X
64e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson##
74e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson##############################################################################
84e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson
94e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
104e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil ArfvidssonDEFAULT_JVM_OPTS=""
114e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson
124e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil ArfvidssonAPP_NAME="Gradle"
134e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil ArfvidssonAPP_BASE_NAME=`basename "$0"`
144e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson
154e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson# Use the maximum available, or set MAX_FD != -1 to use that value.
164e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil ArfvidssonMAX_FD="maximum"
174e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson
184e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidssonwarn ( ) {
194e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    echo "$*"
204e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson}
214e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson
224e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidssondie ( ) {
234e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    echo
244e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    echo "$*"
254e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    echo
264e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    exit 1
274e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson}
284e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson
294e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson# OS specific support (must be 'true' or 'false').
304e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidssoncygwin=false
314e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidssonmsys=false
324e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidssondarwin=false
334e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidssoncase "`uname`" in
344e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson  CYGWIN* )
354e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    cygwin=true
364e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    ;;
374e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson  Darwin* )
384e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    darwin=true
394e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    ;;
404e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson  MINGW* )
414e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    msys=true
424e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    ;;
434e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidssonesac
444e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson
454e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson# For Cygwin, ensure paths are in UNIX format before anything is touched.
464e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidssonif $cygwin ; then
474e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
484e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidssonfi
494e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson
504e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson# Attempt to set APP_HOME
514e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson# Resolve links: $0 may be a link
524e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil ArfvidssonPRG="$0"
534e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson# Need this for relative symlinks.
544e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidssonwhile [ -h "$PRG" ] ; do
554e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    ls=`ls -ld "$PRG"`
564e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    link=`expr "$ls" : '.*-> \(.*\)$'`
574e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    if expr "$link" : '/.*' > /dev/null; then
584e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson        PRG="$link"
594e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    else
604e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson        PRG=`dirname "$PRG"`"/$link"
614e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    fi
624e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidssondone
634e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil ArfvidssonSAVED="`pwd`"
644e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidssoncd "`dirname \"$PRG\"`/" >&-
654e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil ArfvidssonAPP_HOME="`pwd -P`"
664e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidssoncd "$SAVED" >&-
674e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson
684e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil ArfvidssonCLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
694e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson
704e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson# Determine the Java command to use to start the JVM.
714e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidssonif [ -n "$JAVA_HOME" ] ; then
724e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
734e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson        # IBM's JDK on AIX uses strange locations for the executables
744e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson        JAVACMD="$JAVA_HOME/jre/sh/java"
754e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    else
764e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson        JAVACMD="$JAVA_HOME/bin/java"
774e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    fi
784e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    if [ ! -x "$JAVACMD" ] ; then
794e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
804e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson
814e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil ArfvidssonPlease set the JAVA_HOME variable in your environment to match the
824e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidssonlocation of your Java installation."
834e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    fi
844e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidssonelse
854e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    JAVACMD="java"
864e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
874e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson
884e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil ArfvidssonPlease set the JAVA_HOME variable in your environment to match the
894e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidssonlocation of your Java installation."
904e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidssonfi
914e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson
924e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson# Increase the maximum file descriptors if we can.
934e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidssonif [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
944e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    MAX_FD_LIMIT=`ulimit -H -n`
954e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    if [ $? -eq 0 ] ; then
964e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
974e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson            MAX_FD="$MAX_FD_LIMIT"
984e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson        fi
994e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson        ulimit -n $MAX_FD
1004e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson        if [ $? -ne 0 ] ; then
1014e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson            warn "Could not set maximum file descriptor limit: $MAX_FD"
1024e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson        fi
1034e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    else
1044e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
1054e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    fi
1064e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidssonfi
1074e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson
1084e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson# For Darwin, add options to specify how the application appears in the dock
1094e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidssonif $darwin; then
1104e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
1114e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidssonfi
1124e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson
1134e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson# For Cygwin, switch paths to Windows format before running java
1144e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidssonif $cygwin ; then
1154e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
1164e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
1174e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson
1184e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    # We build the pattern for arguments to be converted via cygpath
1194e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
1204e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    SEP=""
1214e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    for dir in $ROOTDIRSRAW ; do
1224e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson        ROOTDIRS="$ROOTDIRS$SEP$dir"
1234e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson        SEP="|"
1244e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    done
1254e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    OURCYGPATTERN="(^($ROOTDIRS))"
1264e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    # Add a user-defined pattern to the cygpath arguments
1274e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
1284e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
1294e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    fi
1304e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    # Now convert the arguments - kludge to limit ourselves to /bin/sh
1314e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    i=0
1324e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    for arg in "$@" ; do
1334e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
1344e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
1354e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson
1364e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
1374e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
1384e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson        else
1394e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson            eval `echo args$i`="\"$arg\""
1404e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson        fi
1414e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson        i=$((i+1))
1424e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    done
1434e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    case $i in
1444e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson        (0) set -- ;;
1454e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson        (1) set -- "$args0" ;;
1464e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson        (2) set -- "$args0" "$args1" ;;
1474e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson        (3) set -- "$args0" "$args1" "$args2" ;;
1484e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
1494e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
1504e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
1514e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
1524e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
1534e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
1544e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    esac
1554e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidssonfi
1564e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson
1574e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
1584e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidssonfunction splitJvmOpts() {
1594e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson    JVM_OPTS=("$@")
1604e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson}
1614e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidssoneval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
1624e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil ArfvidssonJVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
1634e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidsson
1644e3f6162369c45d9fc1d2c9049452236bbb77ffdEmil Arfvidssonexec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
165