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