#! /bin/sh

prefix=/usr/local
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${exec_prefix}/lib

usage()
{
    cat 1>&2 <<EOF
Usage: $0 [OPTION]

Known values for OPTION are:

  --libs            print library linking information
  --cxxflags        print pre-processor and compiler flags
  --logging         configured logging type
  --properties app  print logging-properties-template for application "app"
  --logfile file    set logfile to "file" in following "--properties"
  --help            display this help and exit
  --version         output version information
EOF

    exit 1
}

start_template()
{
  cat <<EOF
# sample logging-properties for application ++APP++
# put this in ++APP++.properties and use:
#   log_init("++APP++.properties");
# in your application to initialize logging
#
# define categories with:
#   log_define("some.category")
# this defines a static function, so you must put it outside other functions.
# you can define a category per file or a category per namespace.
#
# print logging-messages with:
#   log_fatal("some fatal message");
#   log_error("some error message");
#   log_warn("some warn message");
#   log_info("some info message");
#   log_debug("some debug message");
#
EOF
}

log4cxx_template()
{
  start_template

  if [ -z "$LOGFILE_SET" ]
  then
    rootlogger=console
  else
    rootlogger=file
  fi

  cat <<EOF
# define the root-category
log4j.rootLogger=INFO, $rootlogger

# define logger-categories
log4j.logger.++APP++=INFO

# console-appender
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=TTCCLayout
log4j.appender.console.layout.DateFormat=ISO8601

# rolling-file-appender
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=$LOGFILE
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=TTCCLayout
log4j.appender.file.layout.ContextPrinting=enabled
log4j.appender.file.layout.DateFormat=ISO8601
EOF
}

log4cplus_template()
{
  start_template

  if [ -z "$LOGFILE_SET" ]
  then
    rootlogger=console
  else
    rootlogger=file
  fi

  cat <<EOF
# define the root-category
log4cplus.rootLogger=INFO, $rootlogger

# define logger-categories
log4cplus.logger.++APP++=INFO

# console-appender
log4cplus.appender.console=log4cplus::ConsoleAppender
log4cplus.appender.console.layout=log4cplus::TTCCLayout
log4cplus.appender.console.ImmediateFlush=true

# rolling-file-appender
log4cplus.appender.file=log4cplus::RollingFileAppender
log4cplus.appender.file.File=$LOGFILE
log4cplus.appender.file.layout=log4cplus::TTCCLayout
log4cplus.appender.file.MaxFileSize=1MB
log4cplus.appender.file.MaxBackupIndex=10
log4cplus.appender.file.ImmediateFlush=true
EOF
}

cxxtools_template()
{
  start_template

  cat <<EOF
rootLogger=INFO

# define logger-categories
logger.++APP++=INFO

EOF

  if [ -z "$LOGFILE_SET" ]
  then
    cat <<EOF
# uncomment if you want to log to a file
#file=$LOGFILE
#maxfilesize=1MB
#maxbackupindex=10
#host=localhost:1234  # send log-messages with udp
#disabled=1  # disable logging
#logprocess=1  # log through separate process
#logprocesuser=someuser  # change to user in log process
#logprocesgroup=somegroup  # change to group in log process
EOF
  else
    cat <<EOF
file=$LOGFILE
maxfilesize=1MB
maxbackupindex=10
flushdelay=100  # delay write in milliseconds
#host=localhost:1234  # send log-messages with udp
#disabled=1  # disable logging
#logprocess=1  # log in separate process
#logprocesuser=someuser  # change to user in log process
#logprocesgroup=somegroup  # change to group in log process
EOF
  fi

}

disable_template()
{
  :
}

if test $# -eq 0; then
    usage 1
fi

LOGFILE=++APP++.log

while test $# -gt 0; do
    case "$1" in

    --version)
        echo 1.4.7
        exit 0
        ;;

    --help)
        usage 0
        ;;

    --cxxflags)
        echo -I${includedir}
        ;;

    --libs)
        echo -L${libdir} -lcxxtools 
        ;;

    --logging)
        echo cxxtools 
        ;;

    --properties)
        if test $# -gt 1
        then
          cxxtools_template | sed "s/++APP++/$2/"
          shift
        else
          usage 1
        fi
        ;;

    --logfile)
        if test $# -gt 1
        then
          LOGFILE=$2
          LOGFILE_SET=1
          shift
        else
          usage 1
        fi
        ;;

    *)
        usage 1
        ;;
    esac
    shift
done

exit 0
