annotate SCRIPTS/summarise.sh @ 133:4acb5d8d80b6 tip

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