b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger#!/bin/sh
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger# Supported Environment Variables:
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger# - OPENGROK_STANDARD_ENV Run Time Shell Environment (Shell Script)
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger# - OPENGROK_CONFIGURATION User Configuration (Shell Script)
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger#
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger# Supported Environment Variables for configuring the default setup:
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger# - OPENGROK_DISTRIBUTION_BASE Base Directory of the OpenGrok Distribution
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger# - containing the opengrok.jar
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger# - OPENGROK_JAR Directly specify the opengrok.jar file
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger# - OPENGROK_INSTANCE_BASE Base Directory of the OpenGrok User Data Area
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger# - determining the configuration
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger# switch), default is DATA_ROOT/etc/ctags.config
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger# - JAVA_HOME Full Path to Java Installation Root
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger# - JAVA Full Path to java binary (to enable 64bit JDK)
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger# - JAVA_OPTS Java options (e.g. for JVM memory increase view
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger# - READ_XML_CONFIGURATION file with read only configuration
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger# - determining the configuration
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof TulingerPROGNAME=`basename $0`
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof TulingerSCRIPT_DIRECTORY=`dirname "${0}"`
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof TulingerSCRIPT_DIRECTORY=`cd "${SCRIPT_DIRECTORY}"; pwd`
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof TulingerUsage()
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger{
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger exec >&2
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger echo ""
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger echo "Usage: ${PROGNAME} <add|delete|match|list|help> [--help] [--verbose] [-d]"
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger echo " ${PROGNAME} add <name> <pattern>"
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger echo " ${PROGNAME} delete <name>"
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger echo " ${PROGNAME} match <project name>"
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger echo ""
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger echo " The script searches for the configuration in"
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger echo " OPENGROK_INSTANCE_BASE/etc/configuration.xml or"
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger echo " READ_XML_CONFIGURATION files or"
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger echo " you can use the -i option."
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger echo " When no such file exists it uses an empty configuration."
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger echo ""
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger echo " Optional environment variables:"
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger echo " OPENGROK_CONFIGURATION - location of your configuration"
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger echo " e.g. $ OPENGROK_CONFIGURATION=/var/opengrok/myog.conf ${0} ... "
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger echo ""
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger echo " See the code for more information on configuration options /" \
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger "variables"
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger echo ""
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger}
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof TulingerCommonInvocation()
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger{
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ${DO} \
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ${JAVA} \
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ${JAVA_OPTS} \
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ${JAVA_CLASSPATH:+-classpath} ${JAVA_CLASSPATH} \
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ${MAIN_CLASS} \
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ${INPUT_FILE:+-i} ${INPUT_FILE:+"$INPUT_FILE"} \
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ${OUTPUT_FILE:+-o} ${OUTPUT_FILE:+"$OUTPUT_FILE"} \
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger "${@}"
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger}
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof TulingerStdInvocation()
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger{
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger CommonInvocation \
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ${NAME:+-n} ${NAME:+"$NAME"} \
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ${PATTERN:+-r} ${PATTERN:+"$PATTERN"} \
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ${PARENT:+-p} ${PARENT:+"$PARENT"} \
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ${MATCH:+-m} ${MATCH:+"$MATCH"} \
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ${LIST:+-l} \
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ${DELETE:+-d} \
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger "${@}"
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger}
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof TulingerCheckInputFile()
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger{
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger if [ -n "$INPUT_FILE" ] && ( [ ! -e "$INPUT_FILE" ] || [ ! -f "$INPUT_FILE" ] )
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger then
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "input file does not exist or is not readable"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger LocalUsage
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger exit 5
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger fi
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger}
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof TulingerOneArgument()
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger{
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger if [ $# -gt 0 ]
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger then
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "$1"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger fi
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger}
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof TulingerExpectOption()
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger{
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger if [ $# -lt 2 ]
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger then
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "Argument \"$1\" expects a value"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger exit 3
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger fi
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger}
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof TulingerInfo()
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger{
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger if $VERBOSE
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger then
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "Configuration loaded"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "\tJAVA_HOME = "${JAVA_HOME}
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger if [ -n "$JAVA_HOME" ]
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger then
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "\tJAVA = $JAVA_HOME/bin/java"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger else
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "\tJAVA ="
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger fi
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "\tJAVA_OPTS = "${JAVA_OPTS}
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "\tJAVA_CLASSPATH = "${JAVA_CLASSPATH}
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "\tOPENGROK_JAR = "${OPENGROK_JAR}
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "\tOPENGROK_CONFIGURATION = "${OPENGROK_CONFIGURATION}
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "\tOPENGROK_STANDARD_ENV = "${OPENGROK_STANDARD_ENV}
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "\tOPENGROK_INSTANCE_BASE = "${OPENGROK_INSTANCE_BASE}
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "\tOPENGROK_DISTRIBUTION_BASE = "${OPENGROK_DISTRIBUTION_BASE}
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "\tREAD_XML_CONFIGURATION = "${READ_XML_CONFIGURATION}
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "\tOPENGROK_JAR = "${OPENGROK_JAR}
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo ""
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "Files used"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "\tINPUT_FILE = "${INPUT_FILE:-empty configuration}
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "\tOUTPUT_FILE = "${OUTPUT_FILE:-standard output}
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "\tPATTERN = "${PATTERN:-$PATTERN}
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "\tNAME = "${NAME:-$NAME}
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "\tPARENT = "${PARENT:-$PARENT}
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo ""
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger fi
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger}
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof TulingerProgress()
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger{
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger if $VERBOSE
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger then
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "$@"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger fi
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger}
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof TulingerMatch ()
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger{
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger LocalUsage()
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger {
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "Usage:"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "${PROGNAME} match <project name> [-i|--input <file>] [-v|--verbose] [-d]"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo ""
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo " Lists which groups would match the project name (description)"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo ""
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "Options:"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo " -d option performs dry run with verbose mode"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo " -i option can be used for specifying the input file"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger }
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger while [ $# -gt 0 ]
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger do
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger opt="$1"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger case $opt in
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger -i|--input)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ExpectOption "$@"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger shift
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger INPUT_FILE=$(OneArgument "$@")
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger -d)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger DO=echo
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger VERBOSE=true
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger -v|--verbose)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger VERBOSE=true
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger -h|--help)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger LocalUsage
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger exit 0
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger -*)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "Uknown option \"$opt\"" && LocalUsage && exit 5
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger *)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger if [ "x$MATCH" = "x" ]
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger then
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger MATCH=$(OneArgument "$@")
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger else
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "match must be specified only once" && LocalUsage && exit 5
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger fi
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger esac
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger shift
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger done
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger [ -z "$MATCH" ] && echo "project name must be specified" && LocalUsage && exit 5
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger CheckInputFile
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger Info
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger StdInvocation
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger}
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof TulingerList ()
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger{
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger LocalUsage()
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger {
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "Usage:"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "${PROGNAME} list [-i|--input <file>] [-v|--verbose] [-d]"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo ""
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo " Lists the current configuration"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo ""
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "Options:"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo " -d option performs dry run with verbose mode"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo " -i option can be used for specifying the input file"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger }
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger while [ $# -gt 0 ]
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger do
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger opt="$1"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger case $opt in
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger -i|--input)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ExpectOption "$@"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger shift
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger INPUT_FILE=$(OneArgument "$@")
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger -d)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger DO=echo
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger VERBOSE=true
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger -v|--verbose)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger VERBOSE=true
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger -h|--help)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger LocalUsage
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger exit 0
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger -*)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "Uknown option \"$opt\"" && LocalUsage && exit 5
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger *)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "this requires no other parameter"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger LocalUsage
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger exit 5
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger esac
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger shift
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger done
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger LIST=true
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger CheckInputFile
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger Info
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger StdInvocation
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger}
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof TulingerDelete ()
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger{
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger LocalUsage()
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger {
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "Usage:"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "${PROGNAME} delete <name> [-i|--input <file>] [-o|--output <file>] [-l] [-v|--verbose] [-u|--update] [-d]"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo ""
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo " Deletes a group with given name from the input configuration"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo ""
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "Options:"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo " -d option performs dry run with verbose mode"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo " -i option can be used for specifying the input file"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo " -l option prints the overview to stdout (still -o can be used)"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo " -o option can be used for saving the result"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo " -u option forces the script to use same output file as input file (overwrite)"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger }
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger while [ $# -gt 0 ]
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger do
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger opt="$1"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger case $opt in
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger -i|--input)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ExpectOption "$@"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger shift
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger INPUT_FILE=$(OneArgument "$@")
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger -o|--output)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ExpectOption "$@"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger shift
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger OUTPUT_FILE=$(OneArgument "$@")
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger -u|--update)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger OUTPUT_FILE="$INPUT_FILE"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger -l|--list)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger LIST=true
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger -d)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger DO=echo
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger VERBOSE=true
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger -v|--verbose)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger VERBOSE=true
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger -h|--help)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger LocalUsage
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger exit 0
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger -*)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "Uknown option \"$opt\"" && LocalUsage && exit 5
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger *)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger if [ "x$NAME" = "x" ]
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger then
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger NAME=$(OneArgument "$@")
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger else
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "name must be specified only once" && LocalUsage && exit 5
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger fi
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger esac
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger shift
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger done
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger [ -z "$NAME" ] && echo "name must be specified" && LocalUsage && exit 5
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger DELETE=true
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger CheckInputFile
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger Info
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger StdInvocation
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger}
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof TulingerAdd ()
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger{
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger LocalUsage()
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger {
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "Usage:"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "${PROGNAME} add <name> <pattern> [-i|--input <file>] [-o|--output <file>] [-l] [-v|--verbose] [-u|--update] [-d]"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo ""
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo " Adds or updates a group with given name"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo " 1) If given group name already exists, the pattern is updated."
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo " 2) If given group name does not exist, the group is inserted"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo " 3) If the parent group exists, the group is inserted as its child"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo ""
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "Options:"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo " -d option performs dry run with verbose mode"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo " -i option can be used for specifying the input file"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo " -l option prints the overview to stdout (still -o can be used)"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo " -o option can be used for saving the result"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo " -u option forces the script to use same output file as input file (overwrite)"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger }
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger NAME=""
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger PATTERN=""
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger while [ $# -gt 0 ]
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger do
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger opt="$1"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger case $opt in
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger -i|--input)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ExpectOption "$@"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger shift
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger INPUT_FILE=$(OneArgument "$@")
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger -o|--output)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ExpectOption "$@"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger shift
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger OUTPUT_FILE=$(OneArgument "$@")
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger -p|--parent)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ExpectOption "$@"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger shift
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger PARENT=$(OneArgument "$@")
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger -u|--update)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger OUTPUT_FILE="$INPUT_FILE"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger -l|--list)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger LIST=true
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger -d)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger DO=echo
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger VERBOSE=true
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger -v|--verbose)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger VERBOSE=true
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger -h|--help)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger LocalUsage
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger exit 0
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger -*)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "Uknown option \"$opt\"" && LocalUsage && exit 5
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger *)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger if [ "x$NAME" = "x" ]
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger then
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger NAME=$(OneArgument "$@")
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger elif [ "x$PATTERN" = "x" ]
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger then
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger PATTERN=$(OneArgument "$@")
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger else
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "name and pattern must be specified only once" && LocalUsage && exit 5
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger fi
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger esac
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger shift
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger done
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger [ -z "$NAME" ] && echo "name must be specified" && LocalUsage && exit 5
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger [ -z "$PATTERN" ] && echo "pattern must be specified" && LocalUsage && exit 5
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger CheckInputFile
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger Info
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger StdInvocation
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger}
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger# Find and load relevant configuration
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger#
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger# Taken (and modified) from original OpenGrok shell wrapper
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger#
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof TulingerSetupInstanceConfiguration()
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger{
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger VERBOSE="${VERBOSE:-false}"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger OPENGROK_INSTANCE_BASE="${OPENGROK_INSTANCE_BASE:-/var/opengrok}"
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger if [ -f "${OPENGROK_STANDARD_ENV}" ]
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger then
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger Progress "Loading ${OPENGROK_STANDARD_ENV} ..."
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger . "${OPENGROK_STANDARD_ENV}"
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger fi
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger if [ -n "${OPENGROK_CONFIGURATION}" -a -f "${OPENGROK_CONFIGURATION}" ]
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger then
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger # Load the Local OpenGrok Configuration Environment
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger Progress "Loading ${OPENGROK_CONFIGURATION} ..."
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger . "${OPENGROK_CONFIGURATION}"
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger fi
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger # REQUIRED: Java Home
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger JAVA_HOME="${JAVA_HOME:-`FindJavaHome`}"
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger # REQUIRED: Java Virtual Machine
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger JAVA="${JAVA:-$JAVA_HOME/bin/java}"
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger if [ -z "${OPENGROK_DISTRIBUTION_BASE}" ]
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger then
3d4f2c2ca2b88224b3808aa18937a3872d3f3aa8Kryštof Tulinger if [ -d "${SCRIPT_DIRECTORY}/../dist" -a \
3d4f2c2ca2b88224b3808aa18937a3872d3f3aa8Kryštof Tulinger -f "${SCRIPT_DIRECTORY}/../dist/opengrok.jar" -a \
3d4f2c2ca2b88224b3808aa18937a3872d3f3aa8Kryštof Tulinger -f "${SCRIPT_DIRECTORY}/../dist/source.war" \
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ]
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger then
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger # Handle Developer Build Environments
3d4f2c2ca2b88224b3808aa18937a3872d3f3aa8Kryštof Tulinger OPENGROK_DISTRIBUTION_BASE="${SCRIPT_DIRECTORY}/../dist"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger else
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger # Handle Binary Distributions
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger OPENGROK_DISTRIBUTION_BASE="${SCRIPT_DIRECTORY}/../lib"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger fi
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger fi
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger # REQUIRED: Java Archive of OpenGrok (Installation Location)
3d4f2c2ca2b88224b3808aa18937a3872d3f3aa8Kryštof Tulinger OPENGROK_JAR="${OPENGROK_JAR:-${OPENGROK_DISTRIBUTION_BASE}/opengrok.jar}"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger JAVA_CLASSPATH="$CLASSPATH"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger JAVA_CLASSPATH="${JAVA_CLASSPATH}:${OPENGROK_JAR}"
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger JAVA_OPTS="${JAVA_OPTS:--Xmx2048m}"
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger MAIN_CLASS="org.opensolaris.opengrok.configuration.Groups"
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger unset NAME
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger unset PATTERN
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger unset PARENT
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger unset DELETE
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger unset MATCH
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger unset LIST
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger if [ -n "$OPENGROK_INSTANCE_BASE" ] && [ -f "$OPENGROK_INSTANCE_BASE/etc/configuration.xml" ]
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger then
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger INPUT_FILE="$OPENGROK_INSTANCE_BASE/etc/configuration.xml"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger elif [ -n "$READ_XML_CONFIGURATION" ] && [ -f "$READ_XML_CONFIGURATION" ]
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger then
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger INPUT_FILE="$READ_XML_CONFIGURATION"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger fi
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger}
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger# Find java home based on your system information
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger#
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger# Taken from original OpenGrok shell wrapper
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger#
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof TulingerFindJavaHome()
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger{
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger if [ -x "/bin/uname" ]; then
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger OS_NAME="`/bin/uname -s`"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger OS_VERSION="`/bin/uname -r`"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger elif [ -x "/usr/bin/uname" ]; then
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger OS_NAME="`/usr/bin/uname -s`"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger OS_VERSION="`/usr/bin/uname -r`"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger else
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger echo "Cannot determine operating system version"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger exit 3
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger fi
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger javaHome=""
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger case "${OS_NAME}:${OS_VERSION}" in
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger SunOS:5.10) javaHome="/usr/jdk/instances/jdk1.7.0" ;;
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger SunOS:5.11) javaHome="/usr/jdk/latest" ;;
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger SunOS:5.12) javaHome="/usr/jdk/latest" ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger Darwin:*) javaHome=`/usr/libexec/java_home` ;;
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger Linux:*)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger if [ -f /etc/alternatives/java ]
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger then
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger javaHome=`ls -l /etc/alternatives/java | cut -f 2 -d \> `
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger javaHome=`dirname $javaHome`
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger javaHome=`dirname $javaHome`
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger fi
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger esac
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger if [ -z "${javaHome}" ]
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger then
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger echo "Unable to determine Java Home" \
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger "for ${OS_NAME} ${OS_VERSION}"
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger exit 3
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger fi
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger if [ ! -d "${javaHome}" ]
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger then
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger echo "Missing Java Home ${javaHome}"
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger exit 3
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger fi
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger echo "${javaHome}"
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger}
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulingerif [ $# -eq 0 ]
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulingerthen
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger Usage
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger exit 1
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulingerfi
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof TulingerSetupInstanceConfiguration
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulingercase "${1}" in
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulinger match)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger shift
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger Match "$@"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger delete)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger shift
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger Delete "$@"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger add)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger shift
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger Add "$@"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger list)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger shift
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger List "$@"
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger help)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger Usage
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger exit 0
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger *)
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger Usage
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger exit 5
37f9c1e7d36aad830845ddc6a1bb3c978e5a5bd1Kryštof Tulinger ;;
b4b45a7526fef6a514d6c746d80a05f898ba573dKryštof Tulingeresac