assertion
[fedora-idea.git] / build / lib / gant / bin / startGroovy
blob050c59dad207bd55406b3315a5789d5f7852d23e
1 # -*- mode:sh -*-
3 ##############################################################################
4 ##                                                                          ##
5 ##  Groovy JVM Bootstrap for UN*X                                           ##
6 ##                                                                          ##
7 ##############################################################################
9 ##
10 ## $Revision$
11 ## $Date$
14 PROGNAME=`basename "$0"`
16 #DIRNAME=`dirname "$0"`
18 SCRIPT_PATH="$0"
20 # Use the maximum available, or set MAX_FD != -1 to use that value.
21 MAX_FD="maximum"
23 warn ( ) {
24     echo "${PROGNAME}: $*"
27 die ( ) {
28     warn "$*"
29     exit 1
32 earlyInit ( ) {
33     return
36 lateInit ( ) {
37     return
40 GROOVY_STARTUP="$HOME/.groovy/startup"
41 if [ -r "$GROOVY_STARTUP" ] ; then
42     . "$GROOVY_STARTUP"
45 earlyInit
47 # OS specific support (must be 'true' or 'false').
48 cygwin=false
49 msys=false
50 darwin=false
51 case "`uname`" in
52   CYGWIN* )
53     cygwin=true
54     ;; 
55   Darwin* )
56     darwin=true
57     ;;
58   MINGW* )
59     msys=true
60     ;;
61 esac
63 if [ "$1" = "-cp" -o "$1" = "-classpath" ] ; then
64     CP=$2
65     shift 2
68 # Attempt to set JAVA_HOME if it's not already set.
69 if [ -z "$JAVA_HOME" ] ; then
70     if $darwin ; then 
71         [ -z "$JAVA_HOME" -a -d "/Library/Java/Home" ] && export JAVA_HOME="/Library/Java/Home"
72         [ -z "$JAVA_HOME" -a -d "/System/Library/Frameworks/JavaVM.framework/Home" ] && export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Home"
73     else
74         javaExecutable="`which javac`"
75         [ -z "$javaExecutable" -o "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ] && die "JAVA_HOME not set and cannot find javac to deduce location, please set JAVA_HOME."
76         # readlink(1) is not available as standard on Solaris 10.
77         readLink=`which readlink`
78         [ `expr "$readLink" : '\([^ ]*\)'` = "no" ] && die "JAVA_HOME not set and readlink not available, please set JAVA_HOME."
79         javaExecutable="`readlink -f \"$javaExecutable\"`"
80         javaHome="`dirname \"$javaExecutable\"`"
81         javaHome=`expr "$javaHome" : '\(.*\)/bin'`
82         JAVA_HOME="$javaHome"
83         export JAVA_HOME
85     fi
88 # For Cygwin, ensure paths are in UNIX format before anything is touched.
89 if $cygwin ; then
90     [ -n "$GROOVY_HOME" ] && GROOVY_HOME=`cygpath --unix "$GROOVY_HOME"`
91     [ -n "$JAVACMD" ] && JAVACMD=`cygpath --unix "$JAVACMD"`
92     [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
93     [ -n "$CP" ] && CP=`cygpath --path --unix "$CP"`
94 else
95     if [ -n "$GROOVY_HOME" -a `expr "$GROOVY_HOME":'\/$'` ] ; then
96         GROOVY_HOME=`echo $GROOVY_HOME | sed -e 's/\/$//'`
97     fi
100 #  For MSYS, ensure paths are in appropriate format.
101 if $msys
102 then
103     [ -n "$JAVA_HOME" ] && JAVA_HOME=`( cd "$JAVA_HOME" ; pwd )`
106 # Attempt to set GROOVY_HOME if it is not already set.
107 if [ -z "$GROOVY_HOME" -o ! -d "$GROOVY_HOME" ] ; then
108     # Resolve links: $0 may be a link to groovy's home.
109     PRG="$0"
110     # Need this for relative symlinks.
111     while [ -h "$PRG" ] ; do
112         ls=`ls -ld "$PRG"`
113         link=`expr "$ls" : '.*-> \(.*\)$'`
114         if expr "$link" : '/.*' > /dev/null; then
115             PRG="$link"
116         else
117             PRG=`dirname "$PRG"`"/$link"
118         fi
119     done
120     SAVED="`pwd`"
121     cd "`dirname \"$PRG\"`/.."
122     GROOVY_HOME="`pwd -P`"
123     cd "$SAVED"
126 # Set the default Groovy config if no specific one is mentioned.
127 if [ -z "$GROOVY_CONF" ] ; then
128     GROOVY_CONF="$GROOVY_HOME/conf/groovy-starter.conf"
130 STARTER_CLASSPATH="$GROOVY_HOME/lib/groovy-all-1.6.4.jar"
132 # Create the final classpath. Setting a classpath using the -cp or -classpath option means not to use the
133 # global classpath. Groovy behaves then the same as the java interpreter
134 if [ -n "$CP" ] ; then
135     CP="$CP":.
136 elif [ -n "$CLASSPATH" ] ; then
137     CP="$CLASSPATH":.
138 else
139     CP=.
142 # Determine the Java command to use to start the JVM.
143 if [ -z "$JAVACMD" ] ; then
144     if [ -n "$JAVA_HOME" ] ; then
145         if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
146             # IBM's JDK on AIX uses strange locations for the executables
147             JAVACMD="$JAVA_HOME/jre/sh/java"
148         else
149             JAVACMD="$JAVA_HOME/bin/java"
150         fi
151     else
152         JAVACMD="java"
153     fi
155 if [ ! -x "$JAVACMD" ] ; then
156     die "JAVA_HOME is not defined correctly, can not execute: $JAVACMD"
158 if [ -z "$JAVA_HOME" ] ; then
159     warn "JAVA_HOME environment variable is not set"
162 # Increase the maximum file descriptors if we can.
163 if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
164     MAX_FD_LIMIT=`ulimit -H -n`
165     if [ $? -eq 0 ] ; then
166         if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
167             MAX_FD="$MAX_FD_LIMIT"
168         fi
169         ulimit -n $MAX_FD
170         if [ $? -ne 0 ] ; then
171             warn "Could not set maximum file descriptor limit: $MAX_FD"
172         fi
173     else
174         warn "Could not query businessSystem maximum file descriptor limit: $MAX_FD_LIMIT"
175     fi
178 # Setup Profiler
179 useprofiler=false
180 if [ "$PROFILER" != "" ] ; then
181     if [ -r "$PROFILER" ] ; then
182         . $PROFILER
183         useprofiler=true
184     else
185         die "Profiler file not found: $PROFILER"
186     fi
189 # For Darwin, use classes.jar for TOOLS_JAR
190 TOOLS_JAR="$JAVA_HOME/lib/tools.jar"
191 #if $darwin; then
192 #    TOOLS_JAR="/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Classes/classes.jar"
195 # For Darwin, add GROOVY_APP_NAME to the JAVA_OPTS as -Xdock:name
196 if $darwin; then
197     JAVA_OPTS="$JAVA_OPTS -Xdock:name=$GROOVY_APP_NAME"
198 # we may also want to set -Xdock:image    
201 # For Cygwin, switch paths to Windows format before running java
202 if $cygwin ; then
203     GROOVY_HOME=`cygpath --mixed "$GROOVY_HOME"`
204     JAVA_HOME=`cygpath --mixed "$JAVA_HOME"`
205     GROOVY_CONF=`cygpath --mixed "$GROOVY_CONF"`
206     CP=`cygpath --path --mixed "$CP"`    
207     TOOLS_JAR=`cygpath --mixed "$TOOLS_JAR"`
208     STARTER_CLASSPATH=`cygpath --path --mixed "$STARTER_CLASSPATH"`
210     # We build the pattern for arguments to be converted via cygpath
211     ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
212     SEP=""
213     for dir in $ROOTDIRSRAW ; do
214         ROOTDIRS="$ROOTDIRS$SEP$dir"
215         SEP="|"
216     done
217     OURCYGPATTERN="(^($ROOTDIRS))"
218     # Add a user-defined pattern to the cygpath arguments
219     if [ "$GROOVY_CYGPATTERN" != "" ] ; then
220         OURCYGPATTERN="$OURCYGPATTERN|($GROOVY_CYGPATTERN)"
221     fi
222     # Now convert the arguments - kludge to limit ourselves to /bin/sh
223     i=0
224     for arg in "$@" ; do
225         CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
226         if [ $CHECK -ne 0 ] ; then
227             eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
228         else
229             eval `echo args$i`="\"$arg\""
230         fi
231         i=`expr $i + 1`
232     done
233     case $i in
234         0) set -- ;;
235         1) set -- "$args0" ;;
236         2) set -- "$args0" "$args1" ;;
237         3) set -- "$args0" "$args1" "$args2" ;;
238         4) set -- "$args0" "$args1" "$args2" "$args3" ;;
239         5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
240         6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
241         7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
242         8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
243         9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
244     esac
248 startGroovy ( ) {
249     CLASS=$1
250     shift
251     # Start the Profiler or the JVM
252     if $useprofiler ; then
253         runProfiler
254     else
255         exec "$JAVACMD" $JAVA_OPTS \
256             -classpath "$STARTER_CLASSPATH" \
257             -Dscript.name="$SCRIPT_PATH" \
258             -Dprogram.name="$PROGNAME" \
259             -Dgroovy.starter.conf="$GROOVY_CONF" \
260             -Dgroovy.home="$GROOVY_HOME" \
261             -Dtools.jar="$TOOLS_JAR" \
262             $STARTER_MAIN_CLASS \
263             --main $CLASS \
264             --conf "$GROOVY_CONF" \
265             --classpath "$CP" \
266             "$@"
267     fi
270 STARTER_MAIN_CLASS=org.codehaus.groovy.tools.GroovyStarter
272 lateInit