Created
September 28, 2010 14:00
-
-
Save deluan/601039 to your computer and use it in GitHub Desktop.
Script for selecting and calling the correct Grails version when you have more than one version installed
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# Author: Deluan (http://techbeats.deluan.com) | |
# Check if GRAILS_HOME is set | |
if [ -z "$GRAILS_HOME" -o ! -d "$GRAILS_HOME" ]; then | |
echo "Error: GRAILS_HOME not set" | |
exit 2 | |
fi | |
# Extract the base path from GRAILS_HOME | |
BASE_GRAILS_PATH=`echo $GRAILS_HOME | sed -e "s/[^\/\\]*$//" -e "s/^$/./"` | |
APP_PROP="application.properties" | |
# Try to get the version from the command line | |
TRY_VERSION=$1 | |
if [ -d "${BASE_GRAILS_PATH}/grails-${TRY_VERSION}" ]; then | |
VERSION=$TRY_VERSION | |
shift | |
fi | |
# Or else get the version from the application.properties in the current directory | |
[ -z "$VERSION" -a -f "$APP_PROP" ] && | |
VERSION=`awk -F'=' '/app.grails.version/ { print $2 }' $APP_PROP | tr -d '\r\n'` | |
# Or else use the default version | |
if [ -z "$VERSION" ]; then | |
VERSION=`basename $GRAILS_HOME | cut -f 2 -d "-"` | |
fi | |
export GRAILS_HOME=${BASE_GRAILS_PATH}/grails-${VERSION} | |
GRAILS_CMD=${GRAILS_HOME}/bin/grails | |
if [ ! -x "$GRAILS_CMD" ]; then | |
echo "Error: grails command not found at '$GRAILS_CMD'!" | |
exit 3 | |
fi | |
exec $GRAILS_CMD $* |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Prerequisites
All your Grails versions must be installed under the same base directory. Ex:
GRAILS_HOME
environment variable must be set and point to your "default" Grails installationThis script was tested on Mac OS X (Snow Leopard), Linux (Ubuntu) and Windows (with cygwin)
Installation
PATH
.$GRAILS_HOME/bin
from yourPATH
Usage
Using the script is as transparent as possible:
If you invoke it from a project folder, it will detect the version used by the project and call the correct grails (if it is installed in your system)
If you invoke it from any other folder that does not contain a Grails project, it will call the "default" Grails installation
If you want to call a specific Grails version (i.e. when doing an upgrade) you can specify the version you want in the first parameter. Ex: