OpenGrok revision 294
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk#!/bin/sh
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk#
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk# OpenGrok Wrapper (Interactive GUI, Initial Generation and Cron Job Updating)
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk#
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk#
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk# Usage
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk#
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenkUsage()
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk{
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk echo 1>&2
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk echo "Usage: ${0} <update|updateQuietly|updateConfiguration|usage|gui>" 1>&2
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk echo 1>&2
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk exit 1
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk}
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk#
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk# Configuration
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk#
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenkif [ -n "${OPENGROK_CONFIGURATION}" -a -f "${OPENGROK_CONFIGURATION}" ]
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenkthen
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # Load the Local OpenGrok Configuration Environment
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk . "${OPENGROK_CONFIGURATION}"
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenkelse
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # Use the built-in defaults. This section can be copied to its own
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # file and tailored to your local requirements. Then simply set
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # OPENGROK_CONFIGURATION=/path/to/your/configuration, before using
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # this wrapper. It will save you hand editing in your settings
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # on each new release. A sample Cron Entry might look like:
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # 15 0 * * * OPENGROK_CONFIGURATION=/pkgs/etc/OpenGrok.sh /pkgs/sbin/OpenGrok updateQuietly
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # Note: It is not really possible to ever provided defaults for
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # these values which will run in every UNIX-like environment.
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # So I have provided a set which are functional for a given
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # environment on which you can based you own configuration.
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # Setup a standard execution environment
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk if [ -f /pkgs/sbin/CronExecutionEnvironment.sh ]
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk then
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk . /pkgs/sbin/CronExecutionEnvironment.sh
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk fi
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # REQUIRED: Source Code/Repository Root
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # (your source code or the root of all repositories)
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk SRC_ROOT="/data/opengrok/src"
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # REQUIRED: OpenGrok Generate Data Root
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # (for Lucene index and hypertext cross-references)
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # This area is rebuilt by "update" / "updateQuietly"
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk DATA_ROOT="/data/opengrok/data"
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # OPTIONAL: User Provided Source Path to Description Mapping (Tab Separated Value)
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # (The user maintained source of the generated EftarFile file)
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk PATH_DESC="/data/opengrok/etc/paths.tsv"
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # REQUIRED: XML Configuration
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # (the configuration used by Web/GUI interfaces)
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk XML_CONFIGURATION="/data/opengrok/configuration.xml"
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # REQUIRED: Java Archive of OpenGrok
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # (user building from source code will find this other key
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # files in the "dist" directory after the build is completed)
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk OPENGROK_JAR="/data/opengrok/opengrok.jar"
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # REQUIRED: Exuberant CTags (http://ctags.sf.net)
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk EXUBERANT_CTAGS="/pkgs/64-bit/release/ctags-5.7/bin/ctags"
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # REQUIRED: Java Home
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk JAVA_HOME="/usr/jdk/instances/jdk1.6.0"
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk export JAVA_HOME
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # REQUIRED: Java Virtual Machine
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk JAVA="${JAVA_HOME}/bin/java"
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # OPTIONAL: Uncomment the following line if your source contains Mercurial repositories.
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk SCAN_FOR_REPOSITORY="-S"
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # OPTIONAL: Override Built-in Properties
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk PROPERTIES="-Dorg.opensolaris.opengrok.history.Mercurial=/pkgs/bin/hg"
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # OPTIONAL: JVM Options
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk #JAVA_OPTS="-server -Xmx1024m"
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # DELIVERED: An update program for EftarFile
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # Usage: <class> inputFile [inputFile ...] outputFile
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # EftarFile == An Extremely Fast Tagged Attribute Read-only File System
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk EFTAR_UPDATE="org.opensolaris.opengrok.web.EftarFile"
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # HARDCODED: Generated EftarFile (See web/*.jsp)
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk EFTAR_OUTPUT_FILE="${DATA_ROOT}/index/dtags.eftar"
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # Be Quiet? (set indirectly by command line arguments in the main program)
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk QUIET=
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # or alternatively, Be Verbose!
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk #VERBOSE="-v"
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenkfi
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk#
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk# Implementation
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk#
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk# The variable "DO" can usefully be set to "echo" to aid in script debugging
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenkStdInvocation()
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk{
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk ${DO} ${JAVA} ${JAVA_OPTS} ${PROPERTIES} \
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk -jar ${OPENGROK_JAR} \
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk ${SCAN_FOR_REPOSITORY} ${VERBOSE} ${QUIET} \
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk ${EXUBERANT_CTAGS:+-c} ${EXUBERANT_CTAGS} \
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk -s ${SRC_ROOT} -d ${DATA_ROOT} \
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk "${@}"
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk}
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenkUpdateGeneratedConfiguration()
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk{
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk StdInvocation -W ${XML_CONFIGURATION}
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk}
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenkUpdateGeneratedData()
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk{
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk StdInvocation -H
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk}
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenkUpdateDescriptionCache()
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk{
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk # OPTIONAL : Update the EftarFile data
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk if [ -n "${PATH_DESC}" -o -s "${PATH_DESC}" ]
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk then
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk ${DO} ${JAVA} -classpath ${OPENGROK_JAR} \
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk ${EFTAR_UPDATE} ${PATH_DESC} ${EFTAR_OUTPUT_FILE}
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk fi
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk}
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenkInvokeGUI()
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk{
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk ${DO} ${JAVA} ${JAVA_OPTS} -jar ${OPENGROK_JAR} &
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk}
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenkOpenGrokUsage()
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk{
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk ${DO} ${JAVA} ${JAVA_OPTS} -jar ${OPENGROK_JAR} '-?'
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk}
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk#
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk# Main Program
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk#
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenkif [ $# -ne 1 ]
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenkthen
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk Usage
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenkfi
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenkcase "${1}" in
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk update)
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk UpdateGeneratedData
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk UpdateDescriptionCache
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk ;;
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk updateQuietly)
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk QUIET="-q"
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk VERBOSE=""
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk UpdateGeneratedData
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk UpdateDescriptionCache
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk ;;
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk updateConfiguration)
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk UpdateGeneratedConfiguration
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk ;;
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk usage)
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk OpenGrokUsage
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk ;;
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk gui)
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk InvokeGUI
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk ;;
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk *)
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk Usage
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk ;;
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenkesac
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk#
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk# End of File
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk#
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk