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