#!/bin/sh
##
## Licensed to the Apache Software Foundation (ASF) under one
## or more contributor license agreements.  See the NOTICE file
## distributed with this work for additional information
## regarding copyright ownership.  The ASF licenses this file
## to you under the Apache License, Version 2.0 (the
## "License"); you may not use this file except in compliance
## with the License.  You may obtain a copy of the License at
##
## http://www.apache.org/licenses/LICENSE-2.0
##
## Unless required by applicable law or agreed to in writing,
## software distributed under the License is distributed on an
## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
## KIND, either express or implied.  See the License for the
## specific language governing permissions and limitations
## under the License.
##

##
## $Rev$ $Date$
##

export BINDIR=`cd "$DIRNAME" && pwd`
export BASEDIR=`cd "$BINDIR/.." && pwd`

export GROOVY_HOME="$BASEDIR/groovy"
GROOVY="$GROOVY_HOME/bin/groovy"

# Make sure we can exec it
chmod +x "$GROOVY"

# Use 1.5 for Groovy
export JAVA_HOME="$JAVA_HOME_1_5"

# Display the current environment
# set

groovy() {
    cd "$BINDIR"
    exec "$GROOVY" "$PROGNAME.groovy" $*
    
    ##
    ## NOTE: Can't capture logs like this, as we need to preserve the return value
    ##
    
    # | 2>&1 tee "$BASEDIR/$PROGNAME.log"
}

