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