move per-channel daemon to its own script - annna - Annna the nice friendly bot.
 (HTM) git clone git://bitreich.org/annna/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/annna/
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Tags
 (DIR) README
       ---
 (DIR) commit 0b40cdabd01e90ea614605fc00819fefa30b1a76
 (DIR) parent aea4bdf3acd506f2486022fac38f2cd7ea3d1c86
 (HTM) Author: Josuah Demangeon <mail@josuah.net>
       Date:   Mon,  8 Mar 2021 00:56:10 +0100
       
       move per-channel daemon to its own script
       
       This permits to add a check for only running channel serivces once per channel,
       using pgrep of the script name along with its arguments.
       
       The script kills its matching entr at exit or interruption to make sure that no
       stale entr live in the background while the channel service stopped.
       
       Signed-off-by: Annna Robert-Houdin <annna@bitreich.org>
       
       Diffstat:
         A annna-channel-service               |      29 +++++++++++++++++++++++++++++
         M annna-start-services                |      22 ++--------------------
       
       2 files changed, 31 insertions(+), 20 deletions(-)
       ---
 (DIR) diff --git a/annna-channel-service b/annna-channel-service
       @@ -0,0 +1,29 @@
       +#!/bin/sh
       +#
       +# Per-channel daemon that monitors incoming messages from ii out script.
       +#
       +
       +pgrep -f "$0 $*" | grep -vxq "$$" && exec echo "$0 $* already running"
       +trap 'exec pkill -U annna -f "entr .* ${PWD}/out"' INT TERM EXIT HUP
       +
       +server="$1"
       +channel="$2"
       +
       +iiroot="/home/annna/irc"
       +iibase="/home/annna/irc/${server}"
       +
       +ls "${iibase}/${channel}/out" | entr tail -n 1 "${iibase}/${channel}/out" \
       +        | sed -nu 's,[0-9]* <\([^ >]*\)> \(.*\),\1 \2,p' \
       +        | {
       +while read -r user text;
       +do
       +        case "${channel}" in
       +        \#bitreich-radio)
       +                annna-message-radio "${channel}" "${user}" "${text}"
       +                ;;
       +        *)
       +                annna-message-common "${channel}" "${user}" "${text}"
       +                ;;
       +        esac
       +done
       +}
 (DIR) diff --git a/annna-start-services b/annna-start-services
       @@ -28,27 +28,9 @@ do
                [ -p "${iibase}/${channel}/in" ] \
                        && chmod o+w "${iibase}/${channel}/in"
        
       -        if [ ! -f "${iibase}/${channel}/out" ];
       +        if [ -f "${iibase}/${channel}/out" ];
                then
       -                continue
       +                annna-channel-service "${server}" "${channel}" &
                fi
       -
       -        {
       -                ls "${iibase}/${channel}/out" | entr tail -n 1 "${iibase}/${channel}/out" \
       -                        | sed -nu 's,[0-9]* <\([^ >]*\)> \(.*\),\1 \2,p' \
       -                        | {
       -                while read -r user text;
       -                do
       -                        case "${channel}" in
       -                        \#bitreich-radio)
       -                                annna-message-radio "${channel}" "${user}" "${text}"
       -                                ;;
       -                        *)
       -                                annna-message-common "${channel}" "${user}" "${text}"
       -                                ;;
       -                        esac
       -                done
       -                }
       -        } &
        done