Better configuration for QF_NRA
[cvc5.git] / contrib / get-bug-attachments
1 #!/bin/bash
2 #
3 # get-bug-attachments
4 # Morgan Deters <mdeters@cs.nyu.edu>
5 # Wed, 26 Sep 2012 09:40:10 -0400
6 #
7
8 if [ $# -lt 1 ]; then
9 echo "usage: `basename $0` bugids.." >&2
10 exit 1
11 fi
12
13 while [ $# -gt 0 ]; do
14
15 bugid="$1"
16 shift
17
18 function webcat {
19 if which wget &>/dev/null; then
20 wget -O - "$1"
21 elif which curl &>/dev/null; then
22 curl "$1"
23 else
24 echo "Please install wget or curl." >&2;
25 exit 1
26 fi
27 }
28
29 function webget {
30 if which wget &>/dev/null; then
31 tmpfile="$(mktemp get_bug_attach.$$.XXXXXXXX)"
32 filename="$(wget -qS -O "$tmpfile" "$1" 2>&1 | grep -i 'Content-disposition: attachment' | sed 's,.*filename="\(.*\)".*,\1,')"
33 ext="$(echo "$filename" | sed 's,.*\.\(.*\),\1,')"
34 if [ -e "$2.$ext" ] && ! diff -q "$tmpfile" "$2.$ext" &>/dev/null; then
35 c=a
36 while [ -e "$2$c.$ext" ] && ! diff -q "$tmpfile" "$2$c.$ext" &>/dev/null; do
37 c=$(echo $c | tr a-y b-z)
38 done
39 mkdir -p "$(dirname "$2")"
40 mv "$tmpfile" "$2$c.$ext"
41 echo "$2$c.$ext"
42 else
43 mkdir -p "$(dirname "$2")"
44 mv "$tmpfile" "$2.$ext"
45 echo "$2.$ext"
46 fi
47 elif which curl &>/dev/null; then
48 tmpfile="$(mktemp get_bug_attach.$$.XXXXXXXX)"
49 filename="$(curl --head "$1" 2>&1 | grep -i 'Content-disposition: attachment' | sed 's,.*filename="\(.*\)".*,\1,')"
50 curl "$1" >"$tmpfile" 2>/dev/null
51 ext="$(echo "$filename" | sed 's,.*\.\(.*\),\1,')"
52 if [ -e "$2.$ext" ] && ! diff -q "$tmpfile" "$2.$ext" &>/dev/null; then
53 c=a
54 while [ -e "$2$c.$ext" ] && ! diff -q "$tmpfile" "$2$c.$ext" &>/dev/null; do
55 c=$(echo $c | tr a-y b-z)
56 done
57 mkdir -p "$(dirname "$2")"
58 mv "$tmpfile" "$2$c.$ext"
59 echo "$2$c.$ext"
60 else
61 mkdir -p "$(dirname "$2")"
62 mv "$tmpfile" "$2.$ext"
63 echo "$2.$ext"
64 fi
65 else
66 echo "Please install wget or curl." >&2;
67 exit 1
68 fi
69 }
70
71 count=0
72 for attachment in $(\
73 webcat "http://cvc4.cs.nyu.edu/bugs/show_bug.cgi?id=$bugid" 2>/dev/null \
74 | grep ' href="attachment.cgi?id=[0-9][0-9]*' \
75 | sed 's,.* href="attachment.cgi?id=\([0-9][0-9]*\).*,\1,' \
76 | sort -nu); do
77
78 let count++
79 printf "%-30s " "Downloading attachment $attachment..."
80 webget "http://cvc4.cs.nyu.edu/bugs/attachment.cgi?id=$attachment" "test/regress/regress0/bug$bugid"
81
82 done
83
84 if [ $count -eq 0 ]; then
85 echo "There are no bug attachments for bug #$bugid."
86 else
87 s=s
88 [ $count -eq 1 ] && s=
89 echo "Downloaded $count bug attachment$s for bug #$bugid."
90 fi
91
92 done