]> git.saurik.com Git - wxWidgets.git/blob - build/buildbot/tools/check.sh
fix GetTLWParentIfNotBeingDeleted() to work correctly even if an intermediate non...
[wxWidgets.git] / build / buildbot / tools / check.sh
1 #!/bin/sh
2 #############################################################################
3 # Name: check.sh
4 # Purpose: Check embedded xslt
5 # Author: Mike Wetherell
6 # RCS-ID: $Id$
7 # Copyright: (c) 2007 Mike Wetherell
8 # Licence: wxWidgets licence
9 #############################################################################
10
11 usage() {
12 echo "Usage: $0 [options] FILE..."
13 echo "Check embedded xslt"
14 echo
15 echo "Options:"
16 echo " -g generate xslt"
17 echo " -h show help"
18 echo " -l N output only line N"
19 echo " -p preprocess"
20 echo " -v validate"
21 exit 0
22 }
23
24 badopt() {
25 echo "try '$0 -h' for more information" >&2
26 exit 1
27 }
28
29 GENERATE=1
30 PREPROCESS=2
31 VALIDATE=3
32
33 MODE=$VALIDATE
34 FILTER=cat
35
36 while getopts ghl:pv opt; do
37 case "$opt" in
38 \?) badopt ;;
39 g) MODE=$GENERATE ;;
40 h) usage ;;
41 l) FILTER="sed -ne ${OPTARG}p" ;;
42 p) MODE=$PREPROCESS ;;
43 v) MODE=$VALIDATE ;;
44 esac
45 done
46
47 if [ $OPTIND -gt 1 ]; then
48 shift `expr $OPTIND - 1`
49 fi
50
51 if [ $# -eq 0 ]; then
52 usage
53 fi
54
55 DIR="`dirname $0`"
56 WORKDIR="${TMPDIR:-/tmp}/wx.$$"
57 mkdir "$WORKDIR" || exit
58 trap 'rm -rf "$WORKDIR"' EXIT
59 WORKPAT=`echo "$WORKDIR" | sed 's|[^A-Za-z0-9]/|.|g'`
60 XSLT="$WORKDIR/XSLT"
61 PREP="$WORKDIR/PREP"
62 STDERR="$WORKDIR/STDERR"
63 ERR=0
64
65 # Change the names of the temporary files in an error message to something
66 # to something more informative
67 errout()
68 {
69 NAME="$1"
70
71 if [ -s "$STDERR" ]; then
72 sed "s|file ${WORKPAT}|${WORKPAT}|g;\
73 s|${WORKPAT}/XSLT|generated XSLT|g;\
74 s|${WORKPAT}/PREP|$NAME (preprocessed)|g" "$STDERR" |
75 awk '{
76 print;
77 if (sub(/.*generated XSLT line */, "") && sub(/[^0-9].*/, ""))
78 {
79 system("sed -ne "$0"p '$XSLT'");
80 }
81 }'
82 fi
83 }
84
85 output()
86 {
87 $FILTER "$1"
88 }
89
90 generate()
91 {
92 INPUT="$1"
93
94 if xsltproc --xinclude -o "$XSLT" $DIR/embedded.xsl "$INPUT" 2>"$STDERR" &&
95 test \! -s "$STDERR"
96 then
97 if [ $MODE -eq $GENERATE ]; then
98 output "$XSLT"
99 fi
100 else
101 return 1
102 fi
103 }
104
105 preprocess()
106 {
107 INPUT="$1"
108
109 if [ $MODE -lt $PREPROCESS ]; then
110 return 0
111 fi
112
113 if xsltproc --xinclude -o "$PREP" "$XSLT" "$INPUT" 2>"$STDERR" &&
114 test \! -s "$STDERR"
115 then
116 if [ $MODE -eq $PREPROCESS ]; then
117 output "$PREP"
118 fi
119 else
120 return 1
121 fi
122 }
123
124 validate()
125 {
126 NAME="$1"
127
128 if [ $MODE -lt $VALIDATE ]; then
129 return 0
130 fi
131
132 if xmllint --noout --schema $DIR/bot.xsd "$PREP" 2>"$STDERR"
133 then
134 errout "$NAME"
135 else
136 return 1
137 fi
138 }
139
140 while [ $# -gt 0 ]; do
141 INPUT="$1"
142 NAME="`echo \"$INPUT\" | sed 's/[|\]/\\\&/g'`"
143
144 {
145 generate "$INPUT" &&
146 preprocess "$INPUT" &&
147 validate "$NAME"
148 } || {
149 errout "$NAME" >&2
150 ERR=1
151 }
152
153 rm -f "$XSLT" "$PREP" "$STDERR"
154
155 shift
156 done
157
158 exit $ERR