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