Chris@71
|
1 #!/bin/bash
|
Chris@71
|
2
|
Chris@122
|
3 set -e
|
Chris@122
|
4
|
Chris@71
|
5 mydir=$(dirname "$0")
|
Chris@71
|
6 case "$mydir" in /*);; *) mydir=$(pwd)/"$mydir";; esac
|
Chris@71
|
7
|
Chris@75
|
8 . "$mydir"/include.sh
|
Chris@75
|
9
|
Chris@71
|
10 plugindirs="$@"
|
Chris@71
|
11 if [ -z "$plugindirs" ]; then
|
Chris@122
|
12 plugindirs=$(ls -1 REPOS | grep -v vamp-plugin-sdk | grep -v vamp-plugin-tester | awk '{ print $1; }')
|
Chris@71
|
13 else
|
Chris@71
|
14 for dir in $plugindirs ; do
|
Chris@71
|
15 if [ ! -d "$dir" ]; then
|
Chris@71
|
16 echo "ERROR: Directory $dir not found"
|
Chris@71
|
17 usage
|
Chris@71
|
18 fi
|
Chris@71
|
19 done
|
Chris@71
|
20 fi
|
Chris@71
|
21
|
Chris@122
|
22 set -u
|
Chris@122
|
23
|
Chris@71
|
24 platforms=$(echo REPORTS/[a-z]* | sed 's/REPORTS\///g')
|
Chris@71
|
25
|
Chris@71
|
26 cat <<EOF
|
Chris@71
|
27 <head>
|
Chris@71
|
28 <style type="text/css">
|
Chris@71
|
29 .good { color: blue; }
|
Chris@75
|
30 .dl { color: green; }
|
Chris@71
|
31 .bad { color: red; }
|
Chris@75
|
32 table { border: 1px solid black; }
|
Chris@75
|
33 tr { padding: 0px; background-color: #f0f0f0; }
|
Chris@75
|
34 tr.odd { background-color: #fafafa; }
|
Chris@75
|
35 td, th { text-align: center; min-width: 4em; margin: 0px; padding: 0.4em; }
|
Chris@75
|
36 td.pluginname { text-align: right; }
|
Chris@75
|
37 td.build, th.build { border-left: 1px solid black; }
|
Chris@75
|
38 th { border-bottom: 1px solid black; }
|
Chris@71
|
39 a, a:link, a:visited, a:hover, a:active { text-decoration: none; }
|
Chris@71
|
40 </style>
|
Chris@71
|
41 </head>
|
Chris@71
|
42 <body>
|
Chris@75
|
43 <table cellspacing=0>
|
Chris@75
|
44 <tr><th></th>
|
Chris@71
|
45 EOF
|
Chris@71
|
46
|
Chris@71
|
47 for p in $platforms ; do
|
Chris@75
|
48 echo "<th colspan=4 class=build>$p</th>"
|
Chris@71
|
49 done
|
Chris@71
|
50
|
Chris@75
|
51 echo "</tr>"
|
Chris@75
|
52 echo "<tr><td></td>"
|
Chris@75
|
53
|
Chris@75
|
54 for p in $platforms ; do
|
Chris@75
|
55 echo "<th class=build>Build</th>"
|
Chris@75
|
56 echo "<th>Test</th>"
|
Chris@75
|
57 echo "<th>Check</th>"
|
Chris@75
|
58 echo "<th>Package</th>"
|
Chris@75
|
59 done
|
Chris@75
|
60
|
Chris@75
|
61 echo "</tr>"
|
Chris@71
|
62
|
Chris@71
|
63 yes="<span class=good>✔</span>"
|
Chris@71
|
64 no="<span class=bad>✘</span>"
|
Chris@71
|
65 unknown="<span class=unknown>?</span>"
|
Chris@78
|
66 missing=""
|
Chris@75
|
67 dl="<span class=dl>↧</span>"
|
Chris@71
|
68
|
Chris@75
|
69 # The possible outcomes are:
|
Chris@75
|
70 #
|
Chris@75
|
71 # OK - built, passed tests, passed env checks
|
Chris@75
|
72 # BUILD_FAILED - build failed so unable to test
|
Chris@75
|
73 # TEST_FAILED - build succeeded, tests failed, env checks passed
|
Chris@75
|
74 # ENV_FAILED - build succeeded, tests passed, env checks failed
|
Chris@75
|
75 # TEST_FAILED ENV_FAILED - build succeeded, tests and env checks failed
|
Chris@75
|
76
|
Chris@75
|
77 emit_build() {
|
Chris@75
|
78 reportdir="$1"
|
Chris@75
|
79 dir="$2"
|
Chris@75
|
80 outcome="$3"
|
Chris@75
|
81 echo "<a href='$reportdir/$dir.build.txt'>"
|
Chris@75
|
82 case "$outcome" in
|
Chris@75
|
83 BUILD_FAILED) echo "$no";;
|
Chris@75
|
84 *_FAILED*) echo "$yes";;
|
Chris@75
|
85 OK) echo "$yes";;
|
Chris@75
|
86 *) echo "$unknown";;
|
Chris@75
|
87 esac
|
Chris@75
|
88 echo "</a>"
|
Chris@75
|
89 }
|
Chris@75
|
90
|
Chris@75
|
91 emit_test() {
|
Chris@75
|
92 reportdir="$1"
|
Chris@75
|
93 dir="$2"
|
Chris@75
|
94 outcome="$3"
|
Chris@75
|
95 case "$outcome" in
|
Chris@75
|
96 BUILD_FAILED) echo "$missing";;
|
Chris@75
|
97 *)
|
Chris@71
|
98 echo "<a href='$reportdir/$dir.test.txt'>"
|
Chris@71
|
99 case "$outcome" in
|
Chris@71
|
100 *TEST_FAILED*) echo "$no";;
|
Chris@71
|
101 *_FAILED*) echo "$yes";;
|
Chris@71
|
102 OK) echo "$yes";;
|
Chris@71
|
103 *) echo "$unknown";;
|
Chris@71
|
104 esac
|
Chris@75
|
105 echo "</a>" ;;
|
Chris@75
|
106 esac
|
Chris@75
|
107 }
|
Chris@75
|
108
|
Chris@75
|
109 emit_env() {
|
Chris@75
|
110 reportdir="$1"
|
Chris@75
|
111 dir="$2"
|
Chris@75
|
112 outcome="$3"
|
Chris@75
|
113 echo "<a href='$reportdir/$dir.envtest.txt'>"
|
Chris@75
|
114 case "$outcome" in
|
Chris@75
|
115 BUILD_FAILED) echo "$missing";;
|
Chris@75
|
116 *)
|
Chris@71
|
117 echo "<a href='$reportdir/$dir.envtest.txt'>"
|
Chris@71
|
118 case "$outcome" in
|
Chris@75
|
119 *ENV_FAILED*) echo "$no";;
|
Chris@75
|
120 *FAILED*) echo "$yes";;
|
Chris@71
|
121 OK) echo "$yes";;
|
Chris@71
|
122 *) echo "$unknown";;
|
Chris@71
|
123 esac
|
Chris@75
|
124 echo "</a>" ;;
|
Chris@75
|
125 esac
|
Chris@75
|
126 }
|
Chris@75
|
127
|
Chris@75
|
128 emit_package() {
|
Chris@75
|
129 platform="$1"
|
Chris@75
|
130 dir="$2"
|
Chris@75
|
131 outcome="$3"
|
Chris@75
|
132 case "$outcome" in
|
Chris@75
|
133 OK)
|
Chris@122
|
134 id=$(vcs_id "REPOS/$dir")
|
Chris@75
|
135 package=$(echo "PACKAGES/$platform/$dir-$platform-$id".*)
|
Chris@75
|
136 echo "package is $package" 1>&2
|
Chris@75
|
137 if [ -f "$package" ]; then
|
Chris@75
|
138 echo "<a href='$package'>$dl</a>"
|
Chris@75
|
139 fi
|
Chris@75
|
140 ;;
|
Chris@75
|
141 *) ;;
|
Chris@75
|
142 esac
|
Chris@75
|
143 }
|
Chris@75
|
144
|
Chris@75
|
145 oddeven=odd
|
Chris@75
|
146
|
Chris@75
|
147 for dir in $plugindirs ; do
|
Chris@75
|
148 dir=${dir%/*}
|
Chris@75
|
149 echo "<tr class=$oddeven><td class=pluginname>$dir</td>"
|
Chris@75
|
150 for p in $platforms ; do
|
Chris@75
|
151 reportdir="REPORTS/$p"
|
Chris@75
|
152 summary="$reportdir/$dir.summary.txt"
|
Chris@75
|
153 if [ -f "$summary" ]; then
|
Chris@75
|
154 outcome=$(cat "$summary" | awk -F: '{ print $2; }' | sed 's/^ *//' | fmt -100)
|
Chris@75
|
155 echo "<td class=build>"
|
Chris@75
|
156 emit_build "$reportdir" "$dir" "$outcome"
|
Chris@75
|
157 echo "</td><td>"
|
Chris@75
|
158 emit_test "$reportdir" "$dir" "$outcome"
|
Chris@75
|
159 echo "</td><td>"
|
Chris@75
|
160 emit_env "$reportdir" "$dir" "$outcome"
|
Chris@75
|
161 echo "</td><td>"
|
Chris@75
|
162 emit_package "$p" "$dir" "$outcome"
|
Chris@75
|
163 echo "</td>"
|
Chris@71
|
164 else
|
Chris@75
|
165 echo "<td class=build>$missing</td>"
|
Chris@75
|
166 echo "<td>$missing</td>"
|
Chris@75
|
167 echo "<td>$missing</td>"
|
Chris@75
|
168 echo "<td>$missing</td>"
|
Chris@71
|
169 fi
|
Chris@71
|
170 done
|
Chris@71
|
171 echo "</tr>"
|
Chris@75
|
172 if [ "$oddeven" = odd ]; then
|
Chris@75
|
173 oddeven=even
|
Chris@75
|
174 else
|
Chris@75
|
175 oddeven=odd
|
Chris@75
|
176 fi
|
Chris@71
|
177 done
|
Chris@71
|
178
|
Chris@71
|
179 echo "</table></body>"
|