#!/bin/bash
-set -e; . /usr/local/lib/err; set +e
+# I, Ian Kelling, follow the GNU license recommendations at
+# https://www.gnu.org/licenses/license-recommendations.en.html. They
+# recommend that small programs, < 300 lines, be licensed under the
+# Apache License 2.0. This file contains or is part of one or more small
+# programs. If a small program grows beyond 300 lines, I plan to switch
+# its license to GPL.
+
+# Copyright 2024 Ian Kelling
+
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+
+# http://www.apache.org/licenses/LICENSE-2.0
+
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# hacky way to kill off old leftover processes
+pkill -O 1 -x 'prof-tail'
+
+set -e; . /usr/local/lib/bash-bear; set +e
+
+# kill 0 doesn't seem to be documented in man bash, but it kills the
+# background processes.
+# https://unix.stackexchange.com/questions/67532/what-does-kill-0-do-actually/67552
+# commented out because the way I exit prof-tail is from an ssh disconnect from
+# the connection dying or killing konsole, and this has no effect on either.
+#trap "kill 0" EXIT
xmpp_users=(
jtuttle
)
+# start emacs daemon for profanity if it doesnt exist.
+if ! pgrep -f '^emacs --daemon=profanity$' &>/dev/null; then
+ emacs --daemon=profanity &>/dev/null
+fi
+
while true; do
midnight=$(date -d '00:00:00 tomorrow' +%s)
log_today=$(date '+%Y_%m_%d').log
logdir=/home/iank/.local/share/profanity/chatlogs/iank_at_fsf.org
+ # when this fails, it has PIPESTATUS: 124 0 1 0 0, which seems to end up with 1 as the overall code, which is not what
+ # i expected. todo: investigate if and why that is, and narrow the ||:
+ # shellcheck disable=SC2046 # intentional
timeout --foreground $secs_till_midnight tail -n0 -qF \
$(for u in ${xmpp_users[@]}; do echo $logdir/${u}_at_fsf.org/$log_today; done) 2>/dev/null \
- | awk '$3 != "me:" {print $3; fflush()}' | sed -u 's/^/pm /;s/@.*//' || [[ $? == 124 ]] &
+ | awk '$3 != "me:" {print $3; fflush()}' | sed -u 's/^/pm /;s/@.*//' ||: &
timeout --foreground $secs_till_midnight tail -n0 -qF \
$logdir/rooms/*/$log_today 2>/dev/null \
- | awk '$3 != "iank:"' | grep -i '\biank\b' | awk '{print $3; fflush()}' | sed 's/^/room /;s/@.*//' || [[ $? == 124 ]]
+ | awk '$3 != "iank:"' | grep -i '\biank\b' | awk '{print $3; fflush()}' | sed 's/^/room /;s/@.*//' ||:
+ kill %
sleep 1
-
done