@@ -64,24 +64,26 @@ verbose()
64
64
if [ $# -eq 1 ]; then
65
65
echo " $1 "
66
66
else
67
+ # shellcheck disable=SC2059
67
68
printf " $@ "
68
69
fi
69
70
fi
70
71
}
71
72
72
73
usage ()
73
74
{
75
+ PROGNAME=$( basename " $0 " )
74
76
cat << EOF
75
- $( basename $0 ) - Validate a Contest API implementation with JSON schema.
77
+ $PROGNAME - Validate a Contest API implementation with JSON schema.
76
78
77
- Usage: $( basename $0 ) [option]... URL
79
+ Usage: $PROGNAME [option]... URL
78
80
79
81
This program validates a Contest API implementation against the
80
82
specification: https://ccs-specs.icpc.io/contest_api
81
83
82
84
The URL must point to the base of the API, for example:
83
85
84
- $( basename $0 ) -n -c '-knS' -a 'strict=1' https://example.com/api
86
+ $PROGNAME -n -c '-knS' -a 'strict=1' https://example.com/api
85
87
86
88
where the options -knS passed to curl make it ignore SSL certificate
87
89
errors, use ~/.netrc for credentials, and be verbose. The option -a
160
162
161
163
TMP=$( mktemp -d)
162
164
163
- MYDIR=$( dirname $0 )
165
+ MYDIR=$( dirname " $0 " )
164
166
165
167
query_endpoint ()
166
168
{
@@ -183,6 +185,7 @@ query_endpoint()
183
185
fi
184
186
185
187
set +e
188
+ # shellcheck disable=SC2086
186
189
HTTPCODE=$( curl $CURLOPTS -w " %{http_code}\n" -o " $OUTPUT " " ${URL}${ARGS: +?$ARGS } " )
187
190
EXITCODE=" $? "
188
191
set -e
@@ -203,10 +206,10 @@ query_endpoint()
203
206
elif [ $EXITCODE -ne 0 ]; then
204
207
verbose " Warning: curl returned exitcode $EXITCODE for '$URL '."
205
208
return $EXITCODE
206
- elif [ $HTTPCODE -ne 200 ]; then
209
+ elif [ " $HTTPCODE " -ne 200 ]; then
207
210
[ -n " $OPTIONAL " ] || verbose " Warning: curl returned HTTP status $HTTPCODE for '$URL '."
208
211
return 1
209
- elif [ ! -e " $OUTPUT " -o ! -s " $OUTPUT " ]; then
212
+ elif [ ! -e " $OUTPUT " ] || [ ! -s " $OUTPUT " ]; then
210
213
[ -n " $OPTIONAL " ] || verbose " Warning: no or empty file downloaded by curl."
211
214
return 1
212
215
fi
@@ -250,7 +253,7 @@ if query_endpoint "$OUTPUT" "$URL" ; then
250
253
verbose ' %20s: ' " $ENDPOINT "
251
254
validate_schema " $OUTPUT " " $SCHEMA "
252
255
EXIT=$?
253
- [ $EXIT -ne 0 -a $EXIT -ne 23 ] && exit $EXIT
256
+ [ $EXIT -ne 0 ] && [ $EXIT -ne 23 ] && exit $EXIT
254
257
CONTESTS=$( jq -r ' .[].id' " $OUTPUT " )
255
258
else
256
259
verbose ' %20s: Failed to download\n' " $ENDPOINT "
@@ -314,13 +317,14 @@ $ENDPOINT"
314
317
validate_schema " $OUTPUT " " $SCHEMA "
315
318
EXIT=$?
316
319
[ $EXIT -gt $EXITCODE ] && EXITCODE=$EXIT
317
- [ $EXIT -ne 0 -a -n " $DEBUG " ] && cat " $OUTPUT "
320
+ [ $EXIT -ne 0 ] && [ -n " $DEBUG " ] && cat " $OUTPUT "
318
321
else
319
322
verbose ' %20s: Failed to download\n' " $ENDPOINT "
320
323
fi
321
324
322
325
if [ -n " $CHECK_CONSISTENCY " ]; then
323
- eval ${EXTRAPROP:- STRICT=1} $MYDIR /check-api-consistency.php " $TMP /$CONTEST " $ENDPOINTS_CHECK_CONSISTENT
326
+ # shellcheck disable=SC2086
327
+ eval ${EXTRAPROP:- STRICT=1} " $MYDIR " /check-api-consistency.php " $TMP /$CONTEST " $ENDPOINTS_CHECK_CONSISTENT
324
328
EXIT=$?
325
329
[ $EXIT -gt $EXITCODE ] && EXITCODE=$EXIT
326
330
fi
@@ -343,6 +347,6 @@ if [ -n "$CHECK_ERRORS" ]; then
343
347
done
344
348
fi
345
349
346
- [ -n " $DEBUG " ] || rm -rf $TMP
350
+ [ -n " $DEBUG " ] || rm -rf " $TMP "
347
351
348
352
exit $EXITCODE
0 commit comments