wesnoth/utils/mp-server/tail_log_irc
2018-03-11 14:59:37 +11:00

62 lines
1.5 KiB
Bash
Executable File

#!/bin/sh
die() { echo >&2 "$@"; exit 1; }
ARGS=$(getopt --options cdmlo --longoptions color,colour,dry-run,debug,logged,mod,old --name `basename $0` -- "$@")
[ $? = 0 ] || die "Syntax: $0 [-c|--color|colour] [-d|--debug|--dry-run] [-l|--logged] [-m|--mod] [-o|--old] <server version>"
set -o errexit
set -o nounset
COLOR=
EVAL=eval
LOGGED=
MOD=
OLD=
FILE=current.log
eval set -- "$ARGS"
while true
do
case "$1" in
-c|--color|--colour)
COLOR=_color; shift ;;
-l|--logged)
LOGGED=_logged; shift ;;
-m|--mod)
MOD=_mod; shift ;;
-d|--debug|--dry-run)
EVAL=echo; shift ;;
-o|--old)
OLD=OLD:; FILE=old.log; shift ;;
--) shift; break ;;
*) echo "Unhandled option '$1'!"; shift ;;
esac
done
[ $# -ge 1 ] || die "No server version specified!"
VERSION=$1
# on the alternates use the trunk server as the dev server and always show logged on/off messages
case $(hostname) in gonzo.dicp.de|basilic)
LOGGED=_logged
[ $VERSION = dev ] && VERSION=trunk ;;
esac
PARAMS="-n 0 -F"
[ -n "$OLD" ] && PARAMS="-n 0 --pid=\$(cat \"$HOME/servers/$VERSION/old.pid\") -f"
LOG="$HOME/servers/$VERSION/$FILE"
#[ -r "$LOG" ] || die "Server log file '$LOG' is not readable!"
FILTER=logfilter_irc$LOGGED$COLOR
PREV=
case $VERSION in *prev) PREV=PREV: ;; esac
PREFIX=
[ -n "$MOD" ] && PREFIX="$VERSION:" && FILTER=logfilter_irc$MOD
PREFIX="$PREFIX$PREV$OLD"
[ -n "$PREFIX" ] && PREFIX=" | sed --unbuffered \"s/^/$PREFIX &/\""
COMMAND="tail $PARAMS \"$LOG\" | \"$HOME/bin/$FILTER\" --unbuffered$PREFIX"
$EVAL $COMMAND