Messages revision 838924562130977ca1a3d3839d146fcda39ea1af
970N/A#!/bin/ksh
970N/A
970N/A# Supported Environment Variables:
970N/A# - OPENGROK_STANDARD_ENV Run Time Shell Environment (Shell Script)
1447N/A# - OPENGROK_CONFIGURATION User Configuration (Shell Script)
970N/A#
970N/A# Supported Environment Variables for configuring the default setup:
970N/A# - OPENGROK_DISTRIBUTION_BASE Base Directory of the OpenGrok Distribution
970N/A# - containing the opengrok.jar
970N/A# - OPENGROK_JAR OpenGrok java package
970N/A# switch), default is DATA_ROOT/etc/ctags.config
970N/A# - JAVA_HOME Full Path to Java Installation Root
970N/A# - JAVA Full Path to java binary (to enable 64bit JDK)
970N/A# - JAVA_OPTS Java options (e.g. for JVM memory increase view
970N/A
970N/APROGNAME=`basename $0`
970N/ADATE="${DATE:-date}"
970N/A
970N/ASCRIPT_DIRECTORY=`dirname "${0}"`
970N/ASCRIPT_DIRECTORY=`cd "${SCRIPT_DIRECTORY}"; pwd`
970N/A
970N/AUsage()
970N/A{
970N/A exec >&2
970N/A echo ""
970N/A echo "Usage: ${PROGNAME} [options] <text>"
970N/A echo ""
970N/A echo "[OPTIONS]:"
970N/A echo " -e|--expire human readable date string of expiration (default +5 min) (*)"
970N/A echo " --expire-timestamp explicit UTC timestamp for expiration in sec"
970N/A echo " -c|--class css class to apply for the message (default info)"
970N/A echo " -p|--port remote port number of the application (default 2424)"
970N/A echo " -s|--server remote server of the application (default localhost)"
970N/A echo " -t|--tag tag the message/multiple options (default main)"
970N/A echo " --type type of the message (default normal)"
970N/A echo " -v verbose"
970N/A echo ""
970N/A echo " (*) see man date: option --date"
970N/A echo " css classes: success, info, warning, error"
970N/A echo " types: normal, abort"
970N/A echo " tags: main, $projectDescription"
970N/A echo " text: supports html markup"
970N/A echo ""
1105N/A echo " Optional environment variables:"
970N/A echo " OPENGROK_CONFIGURATION - location of your configuration"
970N/A echo " e.g. $ OPENGROK_CONFIGURATION=/var/opengrok/myog.conf ${0} ... "
970N/A echo ""
970N/A echo " See the code for more information on configuration options /" \
970N/A "variables"
970N/A echo ""
970N/A}
970N/A
970N/ACommonInvocation()
970N/A{
970N/A ${DO} \
970N/A ${JAVA} \
970N/A ${JAVA_OPTS} \
970N/A ${JAVA_CLASSPATH:+-classpath} ${JAVA_CLASSPATH} \
970N/A ${MAIN_CLASS} \
970N/A "${@}"
970N/A}
970N/A
970N/AStdInvocation()
970N/A{
970N/A CommonInvocation \
970N/A ${MESSAGE_TYPE:+-m} ${MESSAGE_TYPE:+"$MESSAGE_TYPE"} \
970N/A ${MESSAGE_CLASS:+-c} ${MESSAGE_CLASS:+"$MESSAGE_CLASS"} \
970N/A ${MESSAGE_TAGS:+"${MESSAGE_TAGS[@]}"} \
970N/A ${MESSAGE_EXPIRE_TIMESTAMP:+-e} ${MESSAGE_EXPIRE_TIMESTAMP:+"$MESSAGE_EXPIRE_TIMESTAMP"} \
1130N/A ${REMOTE_SERVER:+-s} ${REMOTE_SERVER:+"$REMOTE_SERVER"} \
970N/A ${REMOTE_PORT_NUM:+-p} ${REMOTE_PORT_NUM:+"$REMOTE_PORT_NUM"} \
970N/A ${MESSAGE_TEXT:+-t} ${MESSAGE_TEXT:+"$MESSAGE_TEXT"} \
970N/A "${@}"
970N/A}
970N/A
970N/A
970N/AOneArgument()
970N/A{
970N/A if [ $# -gt 0 ]
970N/A then
970N/A echo "$1"
970N/A fi
970N/A}
970N/A
970N/AExpectOption()
970N/A{
970N/A if [ $# -lt 2 ]
970N/A then
970N/A echo "Argument \"$1\" expects a value"
970N/A exit 3
970N/A fi
970N/A}
970N/A
970N/AInfo()
970N/A{
970N/A if $VERBOSE
970N/A then
970N/A echo "Configuration loaded"
1105N/A echo -e "\tJAVA_HOME = "${JAVA_HOME}
1105N/A if [ -n "$JAVA_HOME" ]
970N/A then
1105N/A echo -e "\tJAVA = $JAVA_HOME/bin/java"
970N/A else
970N/A echo -e "\tJAVA ="
970N/A fi
970N/A echo -e "\tJAVA_OPTS = "${JAVA_OPTS}
970N/A echo -e "\tJAVA_CLASSPATH = "${JAVA_CLASSPATH}
970N/A echo -e "\tOPENGROK_JAR = "${OPENGROK_JAR}
1154N/A echo -e "\tOPENGROK_CONFIGURATION = "${OPENGROK_CONFIGURATION}
1152N/A echo -e "\tOPENGROK_STANDARD_ENV = "${OPENGROK_STANDARD_ENV}
970N/A echo -e "\tOPENGROK_DISTRIBUTION_BASE = "${OPENGROK_DISTRIBUTION_BASE}
1172N/A echo -e "\tOPENGROK_JAR = "${OPENGROK_JAR}
1172N/A echo ""
1172N/A echo "Files used"
970N/A echo -e "\tDATE = "${DATE:-$DATE}
1105N/A echo -e "\tREMOTE_SERVER = "${REMOTE_SERVER:-$REMOTE_SERVER}
970N/A echo -e "\tREMOTE_PORT_NUM = "${REMOTE_PORT_NUM:-$REMOTE_PORT_NUM}
970N/A echo -e "\tMESSAGE_TYPE = "${MESSAGE_TYPE:-$MESSAGE_TYPE}
1105N/A echo -e "\tMESSAGE_TAGS = "${MESSAGE_TAGS[*]:-${MESSAGE_TAGS[*]}}
970N/A echo -e "\tMESSAGE_CLASS = "${MESSAGE_CLASS:-$MESSAGE_CLASS}
970N/A echo -e "\tMESSAGE_EXPIRE = "${MESSAGE_EXPIRE:-$MESSAGE_EXPIRE}
1120N/A echo -e "\tMESSAGE_EXPIRE_TIMESTAMP = "${MESSAGE_EXPIRE_TIMESTAMP:-$MESSAGE_EXPIRE_TIMESTAMP}
1120N/A echo -e "\tMESSAGE_TEXT = "${MESSAGE_TEXT:-$MESSAGE_TEXT}
1120N/A echo ""
1423N/A fi
1423N/A}
1172N/A
1172N/AProgress()
1153N/A{
970N/A if $VERBOSE
970N/A then
1339N/A echo "$@"
1339N/A fi
1339N/A}
1339N/A
1339N/A# Find and load relevant configuration
1339N/A#
1339N/A# Taken (and modified) from original OpenGrok shell wrapper
1339N/A#
1339N/ASetupInstanceConfiguration()
1339N/A{
970N/A VERBOSE="${VERBOSE:-false}"
970N/A
1105N/A if [ -f "${OPENGROK_STANDARD_ENV}" ]
1105N/A then
1105N/A Progress "Loading ${OPENGROK_STANDARD_ENV} ..."
970N/A . "${OPENGROK_STANDARD_ENV}"
970N/A fi
970N/A
1423N/A if [ -n "${OPENGROK_CONFIGURATION}" -a -f "${OPENGROK_CONFIGURATION}" ]
1423N/A then
1105N/A # Load the Local OpenGrok Configuration Environment
970N/A Progress "Loading ${OPENGROK_CONFIGURATION} ..."
970N/A . "${OPENGROK_CONFIGURATION}"
1423N/A fi
1423N/A
970N/A if [ -z "${OPENGROK_DISTRIBUTION_BASE}" ]
970N/A then
970N/A if [ -d "${SCRIPT_DIRECTORY}/../dist" -a \
970N/A -f "${SCRIPT_DIRECTORY}/../dist/opengrok.jar" -a \
970N/A -f "${SCRIPT_DIRECTORY}/../dist/source.war" \
970N/A ]
970N/A then
970N/A # Handle Developer Build Environments
1189N/A OPENGROK_DISTRIBUTION_BASE="${SCRIPT_DIRECTORY}/../dist"
1189N/A else
1189N/A # Handle Binary Distributions
1189N/A OPENGROK_DISTRIBUTION_BASE="${SCRIPT_DIRECTORY}/../lib"
1189N/A fi
1189N/A fi
1189N/A
1189N/A # REQUIRED: Java Home
970N/A JAVA_HOME="${JAVA_HOME:-`FindJavaHome`}"
970N/A
970N/A # REQUIRED: Java Virtual Machine
970N/A JAVA="${JAVA:-$JAVA_HOME/bin/java}"
970N/A
1189N/A # REQUIRED: OpenGrok library
1189N/A OPENGROK_JAR="${OPENGROK_JAR:-${OPENGROK_DISTRIBUTION_BASE}/opengrok.jar}"
970N/A
970N/A JAVA_CLASSPATH="$CLASSPATH"
970N/A JAVA_CLASSPATH="${JAVA_CLASSPATH}:${OPENGROK_JAR}"
1132N/A JAVA_OPTS="${JAVA_OPTS:--Xmx2048m}"
1132N/A MAIN_CLASS="org.opensolaris.opengrok.configuration.messages.Messages"
1132N/A
970N/A
970N/A REMOTE_SERVER="localhost"
970N/A REMOTE_PORT_NUM=2424
970N/A MESSAGE_TYPE="normal"
970N/A typeset -a MESSAGE_TAGS
1276N/A MESSAGE_CLASS="info"
1132N/A MESSAGE_EXPIRE="+5 min"
970N/A unset MESSAGE_TEXT
970N/A VERBOSE=false
1132N/A}
1132N/A
1132N/A# Find java home based on your system information
1132N/A#
1132N/A# Taken from original OpenGrok shell wrapper
970N/A#
1132N/AFindJavaHome()
1132N/A{
1132N/A if [ -x "/bin/uname" ]; then
1132N/A OS_NAME="`/bin/uname -s`"
1132N/A OS_VERSION="`/bin/uname -r`"
1147N/A elif [ -x "/usr/bin/uname" ]; then
1147N/A OS_NAME="`/usr/bin/uname -s`"
1147N/A OS_VERSION="`/usr/bin/uname -r`"
1147N/A else
1132N/A echo "Cannot determine operating system version"
1132N/A exit 3
1132N/A fi
1132N/A
1132N/A javaHome=""
1132N/A case "${OS_NAME}:${OS_VERSION}" in
1298N/A SunOS:5.10) javaHome="/usr/jdk/instances/jdk1.7.0" ;;
1298N/A SunOS:5.11) javaHome="/usr/jdk/latest" ;;
1298N/A SunOS:5.12) javaHome="/usr/jdk/latest" ;;
1298N/A Darwin:*) javaHome=`/usr/libexec/java_home` ;;
1423N/A Linux:*)
1423N/A if [ -f /etc/alternatives/java ]
1423N/A then
1298N/A javaHome=`ls -l /etc/alternatives/java | cut -f 2 -d \> `
1153N/A javaHome=`dirname $javaHome`
1153N/A javaHome=`dirname $javaHome`
1153N/A fi
1153N/A ;;
1172N/A esac
970N/A
970N/A if [ -z "${javaHome}" ]
1003N/A then
1003N/A echo "Unable to determine Java Home" \
1360N/A "for ${OS_NAME} ${OS_VERSION}"
970N/A exit 3
970N/A fi
1153N/A
1172N/A if [ ! -d "${javaHome}" ]
1172N/A then
970N/A echo "Missing Java Home ${javaHome}"
1172N/A exit 3
1154N/A fi
970N/A
970N/A echo "${javaHome}"
970N/A}
970N/A
970N/A
970N/Aif [ $# -eq 0 ]
970N/Athen
970N/A echo "Bad syntax. Expecting some arguments."
1105N/A echo "Maybe try --help option?"
1105N/A exit 3
970N/Afi
1105N/A
1105N/ASetupInstanceConfiguration
1153N/A
1153N/Awhile [ $# -gt 0 ]
970N/Ado
1153N/A opt="$1"
1153N/A case $opt in
1153N/A -s|--server)
1153N/A ExpectOption "$@"
970N/A shift
1423N/A REMOTE_SERVER=$(OneArgument "$@")
1423N/A ;;
1423N/A -p|--port)
1423N/A ExpectOption "$@"
1423N/A shift
1423N/A REMOTE_PORT_NUM=$(OneArgument "$@")
1423N/A ;;
1423N/A --type)
970N/A ExpectOption "$@"
1261N/A shift
1261N/A MESSAGE_TYPE=$(OneArgument "$@")
1261N/A ;;
1261N/A -t|--tag)
1261N/A ExpectOption "$@"
970N/A shift
1261N/A MESSAGE_TAGS+=(-g "$(OneArgument "$@")")
1261N/A ;;
1152N/A -c|--class)
1261N/A ExpectOption "$@"
1152N/A shift
970N/A MESSAGE_CLASS=$(OneArgument "$@")
970N/A ;;
970N/A -e|--expire)
970N/A ExpectOption "$@"
970N/A shift
970N/A MESSAGE_EXPIRE=$(OneArgument "$@")
970N/A ;;
970N/A --expire-timestamp)
970N/A ExpectOption "$@"
970N/A shift
970N/A MESSAGE_EXPIRE_TIMESTAMP=$(OneArgument "$@")
970N/A ;;
970N/A -v|--verbose)
970N/A VERBOSE=true
970N/A ;;
970N/A -h|--help)
970N/A Usage
1153N/A exit 0
970N/A ;;
970N/A -*)
970N/A echo "Uknown option \"$opt\"" && Usage && exit 5
970N/A ;;
970N/A *)
970N/A if [ $# -ne 1 ]
1152N/A then
970N/A echo "Bad syntax. The text should be the last argument."
970N/A echo "Stopped near \"$@\"."
970N/A echo "Check the quotes around the arguments?"
970N/A exit 3
970N/A fi
1261N/A if [ "x$MESSAGE_TEXT" = "x" ]
1261N/A then
1261N/A MESSAGE_TEXT="$@"
1261N/A break # exit the while cycle
970N/A else
970N/A echo "Bad syntax. The text must be specified only once."
970N/A exit 3
970N/A fi
970N/A ;;
1046N/A esac
1046N/A shift
1046N/Adone
1046N/A
1261N/A
1261N/A[ -z "$MESSAGE_TEXT" ] && echo "The text of the message must be specified" && Usage && exit 3
1261N/A[ -z "$MESSAGE_EXPIRE" ] && echo "The expire must be set" && Usage && exit 5
1261N/A
1261N/Aif [ -z "$MESSAGE_EXPIRE_TIMESTAMP" ]
1261N/Athen
1261N/A MESSAGE_EXPIRE_TIMESTAMP=`"$DATE" --date="$MESSAGE_EXPIRE" +"%s"`
1261N/A if [ $? -ne 0 ]
1261N/A then
1261N/A echo "The date couldn't parse the input '$MESSAGE_EXPIRE'."
1152N/A echo "Consider installing gnu date and setting env variable DATE."
1152N/A exit 5;
1261N/A fi
1152N/Afi
970N/A
1152N/A[ -z "${MESSAGE_TAGS[*]}" ] && MESSAGE_TAGS=(-g 'main')
1152N/A
970N/AInfo
970N/AStdInvocation
970N/A