move channel-specific code to its own function - annna - Annna the nice friendly bot. HTML git clone git://bitreich.org/annna/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/annna/ DIR Log DIR Files DIR Refs DIR Tags DIR README --- DIR commit 4196051654532e3ec00421b6fbaeb425c6418b6f DIR parent 39f8fef14370ba20fa10d72e8508ffe7694f228f HTML Author: Josuah Demangeon <mail@josuah.net> Date: Mon, 8 Mar 2021 00:08:19 +0100 move channel-specific code to its own function - Use a single channel list. - Use one function per channel. - Factorise a few per-channel code. - Use the same style with case "${text}" in... everywhere Signed-off-by: Annna Robert-Houdin <annna@bitreich.org> Diffstat: M annna-start-services | 80 ++++++++++++++----------------- 1 file changed, 35 insertions(+), 45 deletions(-) --- DIR diff --git a/annna-start-services b/annna-start-services @@ -779,13 +779,35 @@ annna_common() { } +annna_radio() { + channel="$1" + user="$2" + text="$3" + + [ "$user" = "${botname}" ] && return + + case "${text}" in + ${botname}, next please.) + /br/bin/bitreich-radio-playlist-next + annna-say -c "${channel}" "You are very kind ${user}. To your command." + return # stop here + ;; + ${botname}, please help.) + annna-say -c "${user}" "»next please.« gets the playlist further, ${user}." + annna-say -c "${user}" "»please help.« gives you this help listing, ${user}." + ;; + esac + + annna_common "${channel}" "${user}" "${text}" +} + # Permissions [ -d ${iiroot} ] && chmod o+rx ${iiroot} [ -d ${iibase} ] && chmod o+rx ${iibase} -# All channels only requiring annna_common. -common_channels="#bitreich-en #bitreich-fr #bitreich-de #bitreich-nl #bitreich-it #bitreich-con #bitreich-scm #bitreich-cooking #bitreich-lawn #bitreich-tv #bitreich-meme" -for chan in $common_channels; +# All channels +channel_list="#bitreich-en #bitreich-fr #bitreich-de #bitreich-nl #bitreich-it #bitreich-con #bitreich-scm #bitreich-cooking #bitreich-lawn #bitreich-tv #bitreich-meme #bitreich-radio" +for chan in $channel_list; do [ -d "${iibase}/${chan}" ] \ && chmod o+rx "${iibase}/${chan}" @@ -795,7 +817,7 @@ done # Channels with extra features or external scripts. ## SCM (/scm/post-receive) -## This one is handled by common_channels. +## This one is handled by channel_list. ## Radio (/br/radio/playlist.sh + this script) [ -d "${iibase}/#bitreich-radio" ] \ @@ -806,47 +828,8 @@ done # Channel handlers. -## Special handlers first. -if [ -f "${iibase}/#bitreich-radio/out" ]; -then -{ - channel="#bitreich-radio" - ls "${iibase}/${channel}/out" | entr tail -n 1 "${iibase}/${channel}/out" \ - | grep -v --line-buffered '[0-9]* -!- ' \ - | sed -u 's,[0-9]* <\([^ >]*\)> \(.*\),\1\n\2,' \ - | { - while read -r user; - do - read -r text - - [ "$user" = "${botname}" ] && continue - - if [ "${text}" = "${botname}, next please." ]; - then - /br/bin/bitreich-radio-playlist-next - annna-say -c "${channel}" "You are very kind ${user}. To your command." - continue; - fi - - if [ "${text}" = "${botname}, please help." ]; - then - annna-say -c "${user}" "»next please.« gets the playlist further, ${user}." - annna-say -c "${user}" "»please help.« gives you this help listing, ${user}." - - # Give out common help too. - annna_common "${channel}" "${user}" "${text}" - continue; - fi - - # Allow common functions too. - annna_common "${channel}" "${user}" "${text}" - done - } -} & -fi - ## Common channel handler. -for channel in $common_channels; +for channel in $channel_list; do if [ -f "${iibase}/${channel}/out" ]; then @@ -859,7 +842,14 @@ do do read -r text - annna_common "${channel}" "${user}" "${text}" + case "${channel}" in + \#bitreich-radio) + annna_radio "${channel}" "${user}" "${text}" + ;; + *) + annna_common "${channel}" "${user}" "${text}" + ;; + esac done } } &