URI: 
       annna-say - 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
       ---
       annna-say (2095B)
       ---
            1 #!/bin/sh
            2 #
            3 # annna-say -a $HOME/annna -s irc.bitreich.org -c '#bitreich-en' Hello World!
            4 # export ANNNA_BASE=$HOME/annna
            5 # annna-say -c 'irc.bitreich.org/#bitreich-en' Hello World!
            6 #
            7 
            8 usage() {
            9         printf "usage: %s [-h] [-a ANNNA_BASE] [-s IRC_SERVER] -c \"[IRC_SERVER/]channel0 ... [IRC_SERVER/]channel1 ...\" text\n" \
           10                 "$(basename "$1")" >&2
           11         exit 1
           12 }
           13 
           14 outfile="in"
           15 [ "$(basename "$0")" = "annna-cmd" ] && outfile="out"
           16 
           17 channels="${IRC_CHANNEL}"
           18 [ -z "${IRC_SERVER}" ] && export IRC_SERVER="irc.bitreich.org"
           19 while getopts "ha:c:s:" opt;
           20 do
           21         case $opt in
           22         a) export ANNNA_IRCBASE="$OPTARG";;
           23         c) channels="$OPTARG" ;;
           24         s) export IRC_SERVER="$OPTARG";;
           25         *) usage $0;;
           26         esac
           27 done
           28 shift $(expr $OPTIND - 1)
           29 [ -z "$channels" ] && usage $0
           30 
           31 [ -z "${ANNNA_BASE}" ] && export ANNNA_BASE="/home/annna/annna"
           32 [ -z "${ANNNA_IRCBASE}" ] && export ANNNA_IRCBASE="$(cat "$ANNNA_BASE/ircbase")"
           33 [ -z "${ANNNA_MODBASE}" ] && export ANNNA_MODBASE="$(cat "$ANNNA_BASE/modbase")"
           34 [ -z "${ANNNA_BINBASE}" ] && export ANNNA_BINBASE="$(cat "$ANNNA_BASE/binbase")"
           35 export PATH="$PATH:${ANNNA_BINBASE}"
           36 
           37 annna-alive || exit 0
           38 annna-sleeps && exit 0
           39 
           40 for c in $channels;
           41 do
           42         case "${c}" in
           43         *"/"*)
           44                 cserver="$(printf "%s\n" "${c}" | cut -d'/' -f 1)"
           45                 cname="$(printf "%s\n" "${c}" | cut -d'/' -f 2)"
           46                 ;;
           47         *)
           48                 cserver="${IRC_SERVER}"
           49                 cname="${c}"
           50                 ;;
           51         esac
           52 
           53         ircpath="${ANNNA_IRCBASE}/${cserver}/${cname}"
           54         if [ -e "$ircpath/in" ];
           55         then
           56                 case "${outfile}" in
           57                 "in")
           58                         # Timeout, to solve ii hangs.
           59                         printf "%s\n" "$@" \
           60                                 | fold -w 250 -s \
           61                                 | timeout 5 cat \
           62                                 > "${ircpath}/${outfile}"
           63                         ;;
           64                 "out")
           65                         export IRC_PASS=
           66                         export IRC_CMD="PRIVMSG"
           67                         export IRC_CMD_USER="annna-cmd"
           68                         export IRC_PRIVMSG_TEXT="$@"
           69                         export IRC_SERVER="${cserver}"
           70                         annna-channel-message
           71                         ;;
           72                 esac
           73         else
           74                 ircpath="${ANNNA_IRCBASE}/${cserver}"
           75                 case "${outfile}" in
           76                 "in")
           77                         printf "%s\n" "$@" \
           78                         | fold -w 250 -s \
           79                         | while read -r line;
           80                         do
           81                                 printf "/j %s %s\n" "$c" "$line" > "${ircpath}/in"
           82                         done
           83                         ;;
           84                 "out");; # We do not give users commands.
           85                 esac
           86         fi
           87 done
           88 
           89 exit 0
           90