chiark / gitweb /
83bf60804aa21ba143cffbf823f0cf99820e062f
[post-pizza-notify.git] / notify
1 #!/bin/bash
2 set -e
3
4 case "$#.$1" in
5 3.[^-]*)        ;;
6 *)              echo >&2 "usage: ./notify senderfile recipientsfile 'message'"
7                 exit 1 ;;
8 esac
9
10 senderinfo="$1"
11 rcpts="$2"
12 msg="$3"
13
14 exec <"$senderinfo"
15 while read settingname value; do
16         case "$settingname" in
17         #*|'')  continue;;
18         *)      vn=PIZZANOTIFY_$settingname
19                 eval "$vn=\"\$value\""
20                 export $vn
21                 ;;
22         esac
23 done
24
25 exec <"$rcpts"
26 line=0
27 while read method data; do
28         line=$(( $line+1 ))
29         case "$method" in
30         #*|'')  continue ;;
31         [^a-z]*) echo >&2 "huh ? $rcpts:$line: $method"; continue ;;
32         esac
33         log=log-$method-$line.txt
34         exec >$log
35         set +e
36         printf >&2 "$method"
37         exec 3>&2 2>&1
38         set -x
39         ./"via-$method" "$msg" $data 2>&1
40         rc=$?
41         set +x
42         exec 2>&3 3>&-
43         set -e
44         if [ $rc != 0 ]; then
45                 printf >&2 -- "-FAIL:%s\n" $log
46         else
47                 printf >&2 " "
48         fi
49 done
50 exec >&2
51 echo >&2