]> git.donarmstrong.com Git - bin.git/blob - buildd_sign
make buildd sign handle attempted builds and default to giving back
[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: Log.+attempted' "$a" &&
46         egrep -q "ERROR: dependency .* is not available for package .*" "$a"; then
47         (echo -n 'fail '; egrep "ERROR: dependency .* is not available for package .*" "$a")| \
48             mutt -e 'set content_type="text/plain; charset=utf-8"' -s "Re: $SUBJECT" "$RETURN_PATH";
49             mark_read "${a}";
50             echo "Handled '${SUBJECT}'";
51     elif egrep -q '^Subject: Log.+attempted' "$a" &&
52         egrep -q "ERROR: compilation failed for package .*" "$a"; then
53         (echo -n 'fail '; grep "error|fail" "$a"|sed 's/\n//g')| \
54             mutt -e 'set content_type="text/plain; charset=utf-8"' -s "Re: $SUBJECT" "$RETURN_PATH";
55             mark_read "${a}";
56             echo "Handled '${SUBJECT}'";
57     elif egrep -q '^Subject: Log.+attempted' "$a" &&
58         egrep -q "ERROR: configuration failed for package .*" "$a"; then
59         (echo -n 'fail '; grep "error|fail" "$a"|sed 's/\n//g')| \
60             mutt -e 'set content_type="text/plain; charset=utf-8"' -s "Re: $SUBJECT" "$RETURN_PATH";
61             mark_read "${a}";
62             echo "Handled '${SUBJECT}'";
63     elif egrep -q '^Subject: Log.+attempted' "$a" &&
64         (egrep -q "Error *: package .* was found, but .* is required" "$a" || 
65          egrep -q "Error *: package .* was built before R" "$a"
66         ); then
67         echo 'give back'| \
68             mutt -e 'set content_type="text/plain; charset=utf-8"' -s "Re: $SUBJECT" "$RETURN_PATH";
69             mark_read "${a}";
70             echo "Handled '${SUBJECT}'";
71     elif egrep -q '^Subject: Log.+attempted' "$a"; then
72         echo "Unsure about '$SUBJECT'; giving back";
73         tail -n 30 "$a";
74         echo 'give back'| \
75             mutt -e 'set content_type="text/plain; charset=utf-8"' -s "Re: $SUBJECT" "$RETURN_PATH";
76             mark_read "${a}";
77             echo "Handled '${SUBJECT}'";
78     fi;
79 done;