chiark / gitweb /
check.d/50.updates: Maintain sets of packages, rather than lists.
[rcheck] / check
1 #! /bin/sh
2 ###
3 ### Run a collection of everyday health checks.
4
5 set -e
6
7 fix () {
8   n=$1
9   while :; do
10     case $n in
11       0) break ;;
12       0*) n=${n#0} ;;
13       *) break ;;
14     esac
15   done
16   echo $n
17 }
18 min=$(fix ${1-0}) max=$(fix ${2-99})
19
20 exec 4>&1
21 rc=0
22 for check in check.d/[!#]*[!~]; do
23   base=${check##*/}
24   seq=${base%%[!0-9]*}
25   if [ $min -gt $seq -o $seq -gt $max ]; then continue; fi
26
27   nrc=$(
28     exec 5>&1
29     { { { set +e; "$check"; rc=$?; set -e
30           echo $rc >&5
31           case $rc in 0) ;; *) echo >&2 "failed (rc = $rc)" ;; esac
32       } >&3; } 2>&1 |
33       sed 's/^/E: /'
34     } 3>&1 | {
35       if IFS= read -r line; then
36         echo "## ${check##*/}"
37         echo "$line"
38         cat
39         echo
40       fi
41     } >&4
42   )
43   if [ $nrc -gt $rc ]; then rc=$nrc; fi
44 done
45
46 exit $rc