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