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