#!/bin/bash
#                       /usr/local/bin/watchlogs
#  http://crystalfaeries.net/posix/bin/watchlogs
# celeste:crystalfaery WATCHLOGS 2019-07-18 23:17:29+00:00
# we need finer control on journalctl, being flooded with ntp messages!
# watch logs in the background on a terminal.
# we take an optional -k argument to simply kill running watches.
# the logs we watch are absolute paths taken from our configuration:
# $HOME/.config/watchlogs/watchlogs.cfg
# which, if missing, will be generated with a default watch list.
help=10	# of header lines to spew as "help" (number of this line -1)
while [ $# != 0 ]
do	# iterate arguments
	case "$1" in
-h)
	head -n $help $0
	exit
	;;
--help)
	head -n $help $0
	exit
	;;
-v)
	tail -n +4 $0 | head -n 1
	exit
	;;
--version)
	tail -n +4 $0 | head -n 1
	exit
	;;
-k)
	pkill tail
	pkill journalctl
	exit
	;;
-e)
	vi .config/watchlogs/watchlogs.cfg	# edit the config file
	exit
	;;
*)
	echo "$0 does not cognize $1"
	exit
	;;
esac
shift	# consume argument
done	# iterating arguments

if [ \! -r /home/`whoami`/.config/watchlogs/watchlogs.cfg ]
then	# default logs:
	echo $HOME/.chronicle.log			>> /home/`whoami`/.config/watchlogs/watchlogs.cfg
	echo $HOME/.rawdog/log.txt			>> /home/`whoami`/.config/watchlogs/watchlogs.cfg
	echo $HOME/downloads/youtube.com/.youlog.txt	>> /home/`whoami`/.config/watchlogs/watchlogs.cfg
	echo /usr/local/share/ag/silverlog.txt		>> /home/`whoami`/.config/watchlogs/watchlogs.cfg
	echo /var/log/apache2/error.log			>> /home/`whoami`/.config/watchlogs/watchlogs.cfg
	echo /var/log/dar.log				>> /home/`whoami`/.config/watchlogs/watchlogs.cfg
	echo /var/log/darchive.log			>> /home/`whoami`/.config/watchlogs/watchlogs.cfg
	echo /var/log/rsnapshot.log			>> /home/`whoami`/.config/watchlogs/watchlogs.cfg
fi
echo "=======	`/usr/local/bin/now`	=======	$0	======="
echo -n "tail -n 1 -F "					>> /tmp/$$.txt

for domain in $(ps -ef --forest | grep wg[e]t | grep -v " sed " | sed 's/https:\/\/// ; s/http:\/\/// ; s/^.* // ; s/\/.*$//' | sort -u)
do
	if [ -r $HOME/downloads/$domain/.wget.txt ]
	then
		echo -n "$HOME/downloads/$domain/.wget.txt "	>> /tmp/$$.txt
	else
		echo "`/usr/local/bin/now` $0: $HOME/downloads/$domain/.wget.txt not readable."	1>&2
	fi
done

for f in $(cat $HOME/.config/watchlogs/watchlogs.cfg)
do
	echo -n "$f "						>> /tmp/$$.txt
done
pkill tail	# terminate previous incarnation(s) (-: and maybe some others)
`cat /tmp/$$.txt` 	& disown %1	# tail non-systemd	in background

# We really should learn the standard RUN / PID protocols...
# Kill our previous execution so that:
# * we cease tailing wgets no longer running
# * we begin tailing wgets started since then
# same for journalctl, so we don't run multiple copies

if [ -x $( which journalctl 2>/dev/null ) ]
then
	pkill	journalctl
#		journalctl -f	& disown %1	# tail     systemd	in background
else
	echo "journalctl not found in $PATH"
fi
fg	# bring the background job forward, versus old:
	# sleep	1	# give the background job some time to run before we exit and user gets a prompt for next command

echo ""
echo "_______________	\"
echo "Upcoming Events:	|"
/usr/local/bin/events	# one-shot notice of upcoming events
echo "_______________	/"
echo ""
exit
