]> git.donarmstrong.com Git - bin.git/blob - buildd_sign
add common subscriber
[bin.git] / buildd_sign
1 #!/bin/bash
2
3
4 function mark_read {
5     if echo "$1"|grep -q 'RS$'; then
6         # do nothing
7         true;
8     elif echo "$1"|grep -q 'S$'; then
9         mv "${1}" "${1%%S}RS";
10     else
11             mv "${1}" "${1}RS";
12             if echo "$1"|grep -q 'new/'; then
13                 rename 's{new/}{cur/}' "${1}RS";
14             elif echo "$1"|grep -q 'cur' || pwd|egrep -q 'cur/?$'; then
15             # do nothing
16             true;
17         else
18                 mv "${1}RS" ../cur/"${1}RS";
19             fi;
20     fi;
21 }
22
23 #set -x;
24 set -e;
25 for a in "$@"; do
26         RETURN_PATH=$(awk -F': ' '/^Return-Path:/{print $2}' "$a")
27         SUBJECT=$(awk -F': ' '/^Subject:/{print $2}' "$a")
28         KEY=9D05D0BE
29     if egrep -q '^Subject: Log.+successful' "$a"; then
30             TEMPDIR=$(mktemp -d)
31             cp "$a" "$TEMPDIR/reply"
32             buildd_script "$TEMPDIR/reply"
33             gpg --no-verbose --batch --quiet --default-key $KEY  --armor --output $TEMPDIR/reply.signed --clearsign $TEMPDIR/reply >/dev/null 2>&1
34             mutt -e 'set content_type="text/plain; charset=utf-8; x-action=pgp-signed"' -s "Re: $SUBJECT" "$RETURN_PATH" < $TEMPDIR/reply.signed
35             rm -f $TEMPDIR/reply $TEMPDIR/reply.signed
36             rmdir $TEMPDIR
37             mark_read "${a}";
38             echo "Handled '${SUBJECT}'";
39     elif egrep -q '^Subject: Log.+attempted' "$a" &&
40         egrep -q "ERROR: a 'NAMESPACE' file is required" "$a"; then
41         echo 'fail no namespace'| \
42             mutt -e 'set content_type="text/plain; charset=utf-8"' -s "Re: $SUBJECT" "$RETURN_PATH";
43             mark_read "${a}";
44             echo "Handled '${SUBJECT}'";
45     elif egrep -q '^Subject: Should I build' "$a"; then
46         echo 'ok'| \
47             mutt -e 'set content_type="text/plain; charset=utf-8"' -s "Re: $SUBJECT" "$RETURN_PATH";
48             mark_read "${a}";
49             echo "Handled '${SUBJECT}'";
50     elif egrep -q '^Subject: Log.+attempted' "$a" &&
51         egrep -q "ERROR: dependency .* is not available for package .*" "$a"; then
52         (echo -n 'fail '; egrep "ERROR: dependency .* is not available for package .*" "$a")| \
53             mutt -e 'set content_type="text/plain; charset=utf-8"' -s "Re: $SUBJECT" "$RETURN_PATH";
54             mark_read "${a}";
55             echo "Handled '${SUBJECT}'";
56     elif egrep -q '^Subject: Log.+attempted' "$a" &&
57         egrep -q "ERROR: compilation failed for package .*" "$a"; then
58         (echo -n 'fail '; grep "error|fail" "$a"|sed 's/\n//g')| \
59             mutt -e 'set content_type="text/plain; charset=utf-8"' -s "Re: $SUBJECT" "$RETURN_PATH";
60             mark_read "${a}";
61             echo "Handled '${SUBJECT}'";
62     elif egrep -q '^Subject: Log.+attempted' "$a" &&
63         egrep -q "ERROR: configuration failed for package .*" "$a"; then
64         (echo -n 'fail '; grep "error|fail" "$a"|sed 's/\n//g')| \
65             mutt -e 'set content_type="text/plain; charset=utf-8"' -s "Re: $SUBJECT" "$RETURN_PATH";
66             mark_read "${a}";
67             echo "Handled '${SUBJECT}'";
68     elif egrep -q '^Subject: Log.+attempted' "$a" &&
69         (egrep -q "Error *: package .* was found, but .* is required" "$a" || 
70          egrep -q "Error *: package .* was built before R" "$a"
71         ); then
72         echo 'give back'| \
73             mutt -e 'set content_type="text/plain; charset=utf-8"' -s "Re: $SUBJECT" "$RETURN_PATH";
74             mark_read "${a}";
75             echo "Handled '${SUBJECT}'";
76     elif egrep -q '^Subject: Log.+attempted' "$a"; then
77         echo "Unsure about '$SUBJECT'; giving back";
78         tail -n 30 "$a";
79         echo 'give back'| \
80             mutt -e 'set content_type="text/plain; charset=utf-8"' -s "Re: $SUBJECT" "$RETURN_PATH";
81             mark_read "${a}";
82             echo "Handled '${SUBJECT}'";
83     else
84         echo "Marking '$SUBJECT' read";
85             mark_read "${a}";
86             echo "Handled '${SUBJECT}'";
87     fi;
88 done;