1*56b170dbSXin Li#!/usr/bin/env sh 2*56b170dbSXin Li 3*56b170dbSXin Li############################################################################## 4*56b170dbSXin Li## 5*56b170dbSXin Li## Gradle start up script for UN*X 6*56b170dbSXin Li## 7*56b170dbSXin Li############################################################################## 8*56b170dbSXin Li 9*56b170dbSXin Li# Attempt to set APP_HOME 10*56b170dbSXin Li# Resolve links: $0 may be a link 11*56b170dbSXin LiPRG="$0" 12*56b170dbSXin Li# Need this for relative symlinks. 13*56b170dbSXin Liwhile [ -h "$PRG" ] ; do 14*56b170dbSXin Li ls=`ls -ld "$PRG"` 15*56b170dbSXin Li link=`expr "$ls" : '.*-> \(.*\)$'` 16*56b170dbSXin Li if expr "$link" : '/.*' > /dev/null; then 17*56b170dbSXin Li PRG="$link" 18*56b170dbSXin Li else 19*56b170dbSXin Li PRG=`dirname "$PRG"`"/$link" 20*56b170dbSXin Li fi 21*56b170dbSXin Lidone 22*56b170dbSXin LiSAVED="`pwd`" 23*56b170dbSXin Licd "`dirname \"$PRG\"`/" >/dev/null 24*56b170dbSXin LiAPP_HOME="`pwd -P`" 25*56b170dbSXin Licd "$SAVED" >/dev/null 26*56b170dbSXin Li 27*56b170dbSXin LiAPP_NAME="Gradle" 28*56b170dbSXin LiAPP_BASE_NAME=`basename "$0"` 29*56b170dbSXin Li 30*56b170dbSXin Li# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 31*56b170dbSXin LiDEFAULT_JVM_OPTS="" 32*56b170dbSXin Li 33*56b170dbSXin Li# Use the maximum available, or set MAX_FD != -1 to use that value. 34*56b170dbSXin LiMAX_FD="maximum" 35*56b170dbSXin Li 36*56b170dbSXin Liwarn () { 37*56b170dbSXin Li echo "$*" 38*56b170dbSXin Li} 39*56b170dbSXin Li 40*56b170dbSXin Lidie () { 41*56b170dbSXin Li echo 42*56b170dbSXin Li echo "$*" 43*56b170dbSXin Li echo 44*56b170dbSXin Li exit 1 45*56b170dbSXin Li} 46*56b170dbSXin Li 47*56b170dbSXin Li# OS specific support (must be 'true' or 'false'). 48*56b170dbSXin Licygwin=false 49*56b170dbSXin Limsys=false 50*56b170dbSXin Lidarwin=false 51*56b170dbSXin Linonstop=false 52*56b170dbSXin Licase "`uname`" in 53*56b170dbSXin Li CYGWIN* ) 54*56b170dbSXin Li cygwin=true 55*56b170dbSXin Li ;; 56*56b170dbSXin Li Darwin* ) 57*56b170dbSXin Li darwin=true 58*56b170dbSXin Li ;; 59*56b170dbSXin Li MINGW* ) 60*56b170dbSXin Li msys=true 61*56b170dbSXin Li ;; 62*56b170dbSXin Li NONSTOP* ) 63*56b170dbSXin Li nonstop=true 64*56b170dbSXin Li ;; 65*56b170dbSXin Liesac 66*56b170dbSXin Li 67*56b170dbSXin LiCLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 68*56b170dbSXin Li 69*56b170dbSXin Li# Determine the Java command to use to start the JVM. 70*56b170dbSXin Liif [ -n "$JAVA_HOME" ] ; then 71*56b170dbSXin Li if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 72*56b170dbSXin Li # IBM's JDK on AIX uses strange locations for the executables 73*56b170dbSXin Li JAVACMD="$JAVA_HOME/jre/sh/java" 74*56b170dbSXin Li else 75*56b170dbSXin Li JAVACMD="$JAVA_HOME/bin/java" 76*56b170dbSXin Li fi 77*56b170dbSXin Li if [ ! -x "$JAVACMD" ] ; then 78*56b170dbSXin Li die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 79*56b170dbSXin Li 80*56b170dbSXin LiPlease set the JAVA_HOME variable in your environment to match the 81*56b170dbSXin Lilocation of your Java installation." 82*56b170dbSXin Li fi 83*56b170dbSXin Lielse 84*56b170dbSXin Li JAVACMD="java" 85*56b170dbSXin Li which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 86*56b170dbSXin Li 87*56b170dbSXin LiPlease set the JAVA_HOME variable in your environment to match the 88*56b170dbSXin Lilocation of your Java installation." 89*56b170dbSXin Lifi 90*56b170dbSXin Li 91*56b170dbSXin Li# Increase the maximum file descriptors if we can. 92*56b170dbSXin Liif [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then 93*56b170dbSXin Li MAX_FD_LIMIT=`ulimit -H -n` 94*56b170dbSXin Li if [ $? -eq 0 ] ; then 95*56b170dbSXin Li if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 96*56b170dbSXin Li MAX_FD="$MAX_FD_LIMIT" 97*56b170dbSXin Li fi 98*56b170dbSXin Li ulimit -n $MAX_FD 99*56b170dbSXin Li if [ $? -ne 0 ] ; then 100*56b170dbSXin Li warn "Could not set maximum file descriptor limit: $MAX_FD" 101*56b170dbSXin Li fi 102*56b170dbSXin Li else 103*56b170dbSXin Li warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 104*56b170dbSXin Li fi 105*56b170dbSXin Lifi 106*56b170dbSXin Li 107*56b170dbSXin Li# For Darwin, add options to specify how the application appears in the dock 108*56b170dbSXin Liif $darwin; then 109*56b170dbSXin Li GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 110*56b170dbSXin Lifi 111*56b170dbSXin Li 112*56b170dbSXin Li# For Cygwin, switch paths to Windows format before running java 113*56b170dbSXin Liif $cygwin ; then 114*56b170dbSXin Li APP_HOME=`cygpath --path --mixed "$APP_HOME"` 115*56b170dbSXin Li CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 116*56b170dbSXin Li JAVACMD=`cygpath --unix "$JAVACMD"` 117*56b170dbSXin Li 118*56b170dbSXin Li # We build the pattern for arguments to be converted via cygpath 119*56b170dbSXin Li ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 120*56b170dbSXin Li SEP="" 121*56b170dbSXin Li for dir in $ROOTDIRSRAW ; do 122*56b170dbSXin Li ROOTDIRS="$ROOTDIRS$SEP$dir" 123*56b170dbSXin Li SEP="|" 124*56b170dbSXin Li done 125*56b170dbSXin Li OURCYGPATTERN="(^($ROOTDIRS))" 126*56b170dbSXin Li # Add a user-defined pattern to the cygpath arguments 127*56b170dbSXin Li if [ "$GRADLE_CYGPATTERN" != "" ] ; then 128*56b170dbSXin Li OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 129*56b170dbSXin Li fi 130*56b170dbSXin Li # Now convert the arguments - kludge to limit ourselves to /bin/sh 131*56b170dbSXin Li i=0 132*56b170dbSXin Li for arg in "$@" ; do 133*56b170dbSXin Li CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 134*56b170dbSXin Li CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 135*56b170dbSXin Li 136*56b170dbSXin Li if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 137*56b170dbSXin Li eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 138*56b170dbSXin Li else 139*56b170dbSXin Li eval `echo args$i`="\"$arg\"" 140*56b170dbSXin Li fi 141*56b170dbSXin Li i=$((i+1)) 142*56b170dbSXin Li done 143*56b170dbSXin Li case $i in 144*56b170dbSXin Li (0) set -- ;; 145*56b170dbSXin Li (1) set -- "$args0" ;; 146*56b170dbSXin Li (2) set -- "$args0" "$args1" ;; 147*56b170dbSXin Li (3) set -- "$args0" "$args1" "$args2" ;; 148*56b170dbSXin Li (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 149*56b170dbSXin Li (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 150*56b170dbSXin Li (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 151*56b170dbSXin Li (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 152*56b170dbSXin Li (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 153*56b170dbSXin Li (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 154*56b170dbSXin Li esac 155*56b170dbSXin Lifi 156*56b170dbSXin Li 157*56b170dbSXin Li# Escape application args 158*56b170dbSXin Lisave () { 159*56b170dbSXin Li for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done 160*56b170dbSXin Li echo " " 161*56b170dbSXin Li} 162*56b170dbSXin LiAPP_ARGS=$(save "$@") 163*56b170dbSXin Li 164*56b170dbSXin Li# Collect all arguments for the java command, following the shell quoting and substitution rules 165*56b170dbSXin Lieval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" 166*56b170dbSXin Li 167*56b170dbSXin Li# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong 168*56b170dbSXin Liif [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then 169*56b170dbSXin Li cd "$(dirname "$0")" 170*56b170dbSXin Lifi 171*56b170dbSXin Li 172*56b170dbSXin Liexec "$JAVACMD" "$@" 173