addrutil: Re-indent.
[wk-misc.git] / pp-donation.awk
1 # pp-donation.awk                                           -*- awk -*-
2 #
3 # Extract donation details from a Paypal notification mail.  This is
4 # called from a shell script because we need to use gawk's -b option.
5
6 BEGIN {
7     FS = ":"
8 }
9
10 FNR==1 && NR > 1 { result() }
11
12 /^Donation Details/ { in_details = 1; next }
13
14 !in_details && /^[Dd][Aa][Tt][Ee]:/ {
15     date=trim($2 ":" $3 ":" $4)
16     if (match(date, /^[a-zA-Z0-9,-: \t]+$/))
17     {
18         cmd = "date -d '" date "' +'%F'"
19         cmd | getline date
20         close(cmd)
21     }
22     else
23     {
24         date = "INVALID DATE"
25     }
26 }
27
28 !in_details && /^This email confirms.*from/ {
29     email = gensub(/.*\(([^)]+)\)\..*/, "\\1", 1)
30 }
31
32 !in_details  { next }
33
34 /^[ \t]*Total amount:/  {split($2, a, " "); sub(/,/, ".", a[1]); amount = a[1]}
35
36 /^The following.*Publish my sponsor name\?/ {
37     publish = substr(trim($3), 1, 1)
38 }
39
40 /^Contributor:/  { name = trim($2) }
41
42 END {
43     result()
44 }
45
46 function result() {
47     printf "| %s | %s | %s | %s | %s |\n", date, amount, publish, name, email
48     date=""
49     amount=""
50     publish=""
51     name=""
52     email=""
53     in_details=0
54 }
55
56 function trim(s) {
57     sub (/[ \t]+$/, "", s)
58     sub (/^[ \t]+/, "", s)
59     return s
60 }