chiark / gitweb /
New notification mechanism 'userv'.
[post-pizza-notify.git] / notify
1 #!/bin/bash
2 set -e
3 usage () { cat <<END
4
5 usage: ./notify senderfile recipientsfile 'message'
6
7 recipientsfile: see test-recipients for an example
8 see comments in via-* scripts for individual line formats
9
10 senderinfo: file containing
11    email YOUREMAILADDRESS@EXAMPLE.COM
12    name YOUR NAME
13
14 END
15 }
16
17 case "$#.$1" in
18 3.[^-]*)        ;;
19 *)              usage >&2; exit 1 ;;
20 esac
21
22 senderinfo="$1"
23 rcpts="$2"
24 msg="$3"
25
26 exec <"$senderinfo"
27 while read settingname value; do
28         case "$settingname" in
29         #*|'')  continue;;
30         *)      vn=PIZZANOTIFY_$settingname
31                 eval "$vn=\"\$value\""
32                 export $vn
33                 ;;
34         esac
35 done
36
37 exec <"$rcpts"
38 line=0
39 while read method data; do
40         line=$(( $line+1 ))
41         case "$method" in
42         #*|'')  continue ;;
43         [^a-z]*) echo >&2 "huh ? $rcpts:$line: $method"; continue ;;
44         esac
45         log=log-$method-$line.txt
46         exec >$log
47         set +e
48         printf >&2 "$method"
49         exec 3>&2 2>&1
50         set -x
51         ./"via-$method" "$msg" $data 2>&1
52         rc=$?
53         set +x
54         exec 2>&3 3>&-
55         set -e
56         if [ $rc != 0 ]; then
57                 printf >&2 -- "-FAIL:%s\n" $log
58         else
59                 printf >&2 " "
60         fi
61 done
62 exec >&2
63 echo >&2