1 ##############################################################################
3 ## Groovy JVM Bootstrap for UN*X ##
5 ##############################################################################
8 ## $Revision: 4181 $ $Date: 2006-10-28 15:36:34 +0000 (Sat, 28 Oct 2006) $
11 PROGNAME=`basename "$0"`
12 DIRNAME=`dirname "$0"`
14 # Use the maximum available, or set MAX_FD != -1 to use that
18 echo "${PROGNAME}: $*"
33 GROOVY_STARTUP=~/.groovy/startup
34 if [ -r "$GROOVY_STARTUP" ]; then
40 # OS specific support (must be 'true' or 'false').
53 if [ "$1" = "-cp" ] || [ "$1" = "-classpath" ]; then
60 # Attempt to set JAVA_HOME if it's not already set
61 if [ -z "$JAVA_HOME" ]; then
63 # Set JAVA_HOME for Darwin
66 [ -z "$JAVA_HOME" -a -d "/Library/Java/Home" ] &&
67 export JAVA_HOME="/Library/Java/Home"
69 [ -z "$JAVA_HOME" -a -d "/System/Library/Frameworks/JavaVM.framework/Home" ] &&
70 export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Home"
76 # For Cygwin, ensure paths are in UNIX format before anything is touched
78 [ -n "$GRAILS_HOME" ] &&
79 GRAILS_HOME=`cygpath --unix "$GRAILS_HOME"`
81 JAVACMD=`cygpath --unix "$JAVACMD"`
82 [ -n "$JAVA_HOME" ] &&
83 JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
85 CP=`cygpath --path --unix "$CP"`
88 # Remove possible trailing slash (after possible cygwin correction)
89 GRAILS_HOME=`echo $GRAILS_HOME | sed -e 's|/$||g'`
91 # Locate GRAILS_HOME if not it is not set
92 if [ -z "$GRAILS_HOME" -o ! -d "$GRAILS_HOME" ] ; then
93 # resolve links - $0 may be a link to groovy's home
96 # need this for relative symlinks
97 while [ -h "$PRG" ] ; do
99 link=`expr "$ls" : '.*-> \(.*\)$'`
100 if expr "$link" : '/.*' > /dev/null; then
103 PRG=`dirname "$PRG"`"/$link"
108 cd "`dirname \"$PRG\"`/.."
109 GRAILS_HOME="`pwd -P`"
113 # Use default groovy-conf config
114 if [ -z "$GROOVY_CONF" ]; then
115 GROOVY_CONF="$GRAILS_HOME/conf/groovy-starter.conf"
117 STARTER_CLASSPATH="$GRAILS_HOME/lib/groovy-all-1.5.6.jar:$GRAILS_HOME/dist/grails-cli-1.0.3.jar"
119 # Allow access to Cocoa classes on OS X
121 STARTER_CLASSPATH="$STARTER_CLASSPATH:/System/Library/Java"
124 # Create the final classpath
125 # Setting a classpath using the -cp or -classpath option means not to use
126 # the global classpath. Groovy behaves then the same as the java
128 if [ -n "$CP" ] ; then
130 elif [ -n "$CLASSPATH" ] ; then
136 # Determine the Java command to use to start the JVM
137 if [ -z "$JAVACMD" ]; then
138 if [ -n "$JAVA_HOME" ]; then
139 if [ -x "$JAVA_HOME/jre/sh/java" ]; then
140 # IBM's JDK on AIX uses strange locations for the executables
141 JAVACMD="$JAVA_HOME/jre/sh/java"
143 JAVACMD="$JAVA_HOME/bin/java"
149 if [ ! -x "$JAVACMD" ]; then
150 die "JAVA_HOME is not defined correctly; can not execute: $JAVACMD"
152 if [ -z "$JAVA_HOME" ] ; then
153 warn "JAVA_HOME environment variable is not set"
156 # Increase the maximum file descriptors if we can
157 if [ "$cygwin" = "false" ]; then
158 MAX_FD_LIMIT=`ulimit -H -n`
159 if [ "$MAX_FD_LIMIT" != "unlimited" ]; then
160 if [ $? -eq 0 ]; then
161 if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ]; then
162 # use the businessSystem max
163 MAX_FD="$MAX_FD_LIMIT"
167 if [ $? -ne 0 ]; then
168 warn "Could not set maximum file descriptor limit: $MAX_FD"
171 warn "Could not query businessSystem maximum file descriptor limit: $MAX_FD_LIMIT"
178 if [ "x$PROFILER" != "x" ]; then
179 if [ -r "$PROFILER" ]; then
183 die "Profiler file not found: $PROFILER"
187 # For Darwin, use classes.jar for TOOLS_JAR
188 TOOLS_JAR="$JAVA_HOME/lib/tools.jar"
190 # TOOLS_JAR="/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Classes/classes.jar"
193 # For Cygwin, switch paths to Windows format before running java
195 GRAILS_HOME=`cygpath --path --mixed "$GRAILS_HOME"`
196 JAVA_HOME=`cygpath --path --mixed "$JAVA_HOME"`
197 GROOVY_CONF=`cygpath --path --mixed "$GROOVY_CONF"`
198 CP=`cygpath --path --mixed "$CP"`
199 TOOLS_JAR=`cygpath --path --mixed "$TOOLS_JAR"`
200 STARTER_CLASSPATH=`cygpath --path --mixed "$STARTER_CLASSPATH"`
201 # We build the pattern for arguments to be converted via cygpath
202 ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
204 for dir in $ROOTDIRSRAW; do
205 ROOTDIRS="$ROOTDIRS$SEP$dir"
208 OURCYGPATTERN="(^($ROOTDIRS))"
209 # Add a user-defined pattern to the cygpath arguments
210 if [ "$GROOVY_CYGPATTERN" != "" ] ; then
211 OURCYGPATTERN="$OURCYGPATTERN|($GROOVY_CYGPATTERN)"
213 # Now convert the arguments
216 CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
217 if [ $CHECK -ne 0 ] ; then
218 convArg=`cygpath --path --ignore --mixed "$arg"`
222 ARGUMENTS="$ARGUMENTS $convArg"
226 STARTER_MAIN_CLASS=org.codehaus.groovy.grails.cli.support.GrailsStarter
233 JAVA_OPTS="-server -Xmx512M $JAVA_OPTS"
234 # Start the Profiler or the JVM
235 if $useprofiler; then
238 if [ $# -eq 0 ] ; then # no argument given
239 exec "$JAVACMD" $JAVA_OPTS \
240 -classpath "$STARTER_CLASSPATH" \
241 -Dprogram.name="$PROGNAME" \
242 -Dgroovy.starter.conf="$GROOVY_CONF" \
243 -Dgrails.home="$GRAILS_HOME" \
245 -Dtools.jar="$TOOLS_JAR" \
246 $STARTER_MAIN_CLASS \
248 --conf "$GROOVY_CONF" \
251 exec "$JAVACMD" $JAVA_OPTS \
252 -classpath "$STARTER_CLASSPATH" \
253 -Dprogram.name="$PROGNAME" \
254 -Dgroovy.starter.conf="$GROOVY_CONF" \
255 -Dgrails.home="$GRAILS_HOME" \
257 -Dtools.jar="$TOOLS_JAR" \
258 $STARTER_MAIN_CLASS \
260 --conf "$GROOVY_CONF" \