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