OpenGrok revision 787
#
# OpenGrok Wrapper (initial setup and cron job updating)
# targeted against OpenSolaris + Debian , tomcat6 and glassfish
#
# `date +%Y-%m-%d-%H-%M`
#
# Usage
#
Usage()
{
echo 1>&2
echo "Usage: ${0} <deploy|update|updateQuietly|updateConfiguration|usage>" 1>&2
echo "Optional env variables: "1>&2
echo 1>&2
exit 1
}
#
# Configuration
#
if [ -n "${OPENGROK_CONFIGURATION}" -a -f "${OPENGROK_CONFIGURATION}" ]
then
# Load the Local OpenGrok Configuration Environment
echo Loading ${OPENGROK_CONFIGURATION} ...
. "${OPENGROK_CONFIGURATION}"
else
# Use the built-in defaults. This section can be copied to its own
# file and tailored to your local requirements. Then simply set
# OPENGROK_CONFIGURATION=/path/to/your/configuration, before using
# this wrapper. It will save you hand editing in your settings
# on each new release. A sample Cron Entry might look like:
# Note: below is doing some small autodetection, use own config in case it fails
# Note: It is not really possible to ever provided defaults for
# these values which will run in every UNIX-like environment.
# So I have provided a set which are functional for a given
# environment on which you can based you own configuration.
# Setup a standard execution environment
if [ -f $STANDARD_ENV ]
then
echo Loading $STANDARD_ENV ...
fi
if [ x"$OS" = x"SunOS" ]; then
BINARYBASE="/usr/share/lib/java"
elif [ x"$OS" = x"Linux" ]; then
BINARYBASE="/usr/share/java"
fi
# BINARYBASE="./" in case of local execution ...
# REQUIRED: Source Code/Repository Root
# (your source code or the root of all repositories)
# REQUIRED: OpenGrok Generate Data Root
# (for Lucene index and hypertext cross-references)
# This area is rebuilt by "update" / "updateQuietly"
# OPTIONAL: User Provided Source Path to Description Mapping (Tab Separated Value)
# (The user maintained source of the generated EftarFile file)
# REQUIRED: XML Configuration
# REQUIRED: Java Archive of OpenGrok
# (user building from source code will find this other key
# files in the "dist" directory after the build is completed)
# REQUIRED: Exuberant CTags (http://ctags.sf.net)
if [ x"$OS" = x"SunOS" ]; then
EXCTAGS="exctags"
elif [ x"$OS" = x"Linux" ]; then
EXCTAGS="ctags-exuberant"
fi
# REQUIRED: Java Home
if [ x"$OS" = x"SunOS" ]; then
elif [ x"$OS" = x"Linux" ]; then
fi
export JAVA_HOME
# REQUIRED: Java Virtual Machine
# OPTIONAL: Uncomment the following line if your source contains Mercurial repositories.
SCAN_FOR_REPOSITORY="-S"
# OPTIONAL: Override Built-in Properties
# OPTIONAL: JVM Options
#JAVA_OPTS="-server -Xmx1024m"
# DELIVERED: An update program for EftarFile
# Usage: <class> inputFile [inputFile ...] outputFile
# EftarFile == An Extremely Fast Tagged Attribute Read-only File System
# HARDCODED: Generated EftarFile (See web/*.jsp)
EFTAR_OUTPUT_FILE="${DATA_ROOT}/index/dtags.eftar"
# Be Quiet? (set indirectly by command line arguments in the main program)
# or alternatively, Be Verbose!
#VERBOSE="-v"
fi
if [ ! -x $EXUBERANT_CTAGS ] ; then
echo "Exuberant ctags for $OS: $EXCTAGS not found or not executable, exiting until this dependency is resolved ..."
exit 2
fi
if [ ! -d $SRC_ROOT ] ; then
echo "The source path: $SRC_ROOT doesn't exist, exiting cowardly ..."
exit 2
fi
if [ ! -d $DATA_ROOT ] ; then
echo "Index path $DATA_ROOT nonexistent, attempting to create one ... "
mkdir -p $DATA_ROOT
fi
#
# Implementation
#
# The variable "DO" can usefully be set to "echo" to aid in script debugging
{
${DO} ${JAVA} ${JAVA_OPTS} ${PROPERTIES} \
-jar ${OPENGROK_JAR} \
${SCAN_FOR_REPOSITORY} ${VERBOSE} ${QUIET} \
${EXUBERANT_CTAGS:+-c} ${EXUBERANT_CTAGS} \
"${@}"
}
{
}
{
}
{
# OPTIONAL : Update the EftarFile data
if [ -n "${PATH_DESC}" -o -s "${PATH_DESC}" ]
then
${DO} ${JAVA} -classpath ${OPENGROK_JAR} \
${EFTAR_UPDATE} ${PATH_DESC} ${EFTAR_OUTPUT_FILE}
fi
}
{
${DO} ${JAVA} ${JAVA_OPTS} -jar ${OPENGROK_JAR} '-?'
}
{
# detection mechanism could be better, but as a starter this will do the job,
# if you expect more, write it, we accept patches !
CONTAINER=""
# tomcat is preffered
fi
CONTAINER="tomcat"
if [ ! -d $WARDIR ]; then
# test whether glassfish is there, only if tomcat webapp dir is not present
if [ -d $DOMAINDIR ]; then
FIRSTDOMAIN=`ls -1 $DOMAINDIR | head -1`
CONTAINER="glassfish"
else
error "Glassfish installed, but cannot get first domain from $DOMAINDIR."
exit 1;
fi
else
error "$WARDIR doesn't exist, seems this combination of application container and $OS is unsupported"
exit 1;
fi
fi
echo "Copying $WAR to $WARDIR , start your $CONTAINER or wait until it loads the war"
RC=$?
echo "OpenGrok should be listening on HOST:PORT/source , where HOST and PORT are configured in your $CONTAINER."
else
echo "There was a problem copying the web archive to target directory, consult error message above."
fi
}
#
# Main Program
#
if [ $# -ne 1 ]
then
fi
case "${1}" in
;;
;;
QUIET="-q"
VERBOSE=""
;;
;;
;;
*)
;;
esac
#
# End of File
#