@@ -64,24 +64,26 @@ verbose()
6464 if [ $# -eq 1 ]; then
6565 echo " $1 "
6666 else
67+ # shellcheck disable=SC2059
6768 printf " $@ "
6869 fi
6970 fi
7071}
7172
7273usage ()
7374{
75+ PROGNAME=$( basename " $0 " )
7476 cat << EOF
75- $( basename $0 ) - Validate a Contest API implementation with JSON schema.
77+ $PROGNAME - Validate a Contest API implementation with JSON schema.
7678
77- Usage: $( basename $0 ) [option]... URL
79+ Usage: $PROGNAME [option]... URL
7880
7981This program validates a Contest API implementation against the
8082specification: https://ccs-specs.icpc.io/contest_api
8183
8284The URL must point to the base of the API, for example:
8385
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
8587
8688where the options -knS passed to curl make it ignore SSL certificate
8789errors, use ~/.netrc for credentials, and be verbose. The option -a
160162
161163TMP=$( mktemp -d)
162164
163- MYDIR=$( dirname $0 )
165+ MYDIR=$( dirname " $0 " )
164166
165167query_endpoint ()
166168{
@@ -183,6 +185,7 @@ query_endpoint()
183185 fi
184186
185187 set +e
188+ # shellcheck disable=SC2086
186189 HTTPCODE=$( curl $CURLOPTS -w " %{http_code}\n" -o " $OUTPUT " " ${URL}${ARGS: +?$ARGS } " )
187190 EXITCODE=" $? "
188191 set -e
@@ -203,10 +206,10 @@ query_endpoint()
203206 elif [ $EXITCODE -ne 0 ]; then
204207 verbose " Warning: curl returned exitcode $EXITCODE for '$URL '."
205208 return $EXITCODE
206- elif [ $HTTPCODE -ne 200 ]; then
209+ elif [ " $HTTPCODE " -ne 200 ]; then
207210 [ -n " $OPTIONAL " ] || verbose " Warning: curl returned HTTP status $HTTPCODE for '$URL '."
208211 return 1
209- elif [ ! -e " $OUTPUT " -o ! -s " $OUTPUT " ]; then
212+ elif [ ! -e " $OUTPUT " ] || [ ! -s " $OUTPUT " ]; then
210213 [ -n " $OPTIONAL " ] || verbose " Warning: no or empty file downloaded by curl."
211214 return 1
212215 fi
@@ -250,7 +253,7 @@ if query_endpoint "$OUTPUT" "$URL" ; then
250253 verbose ' %20s: ' " $ENDPOINT "
251254 validate_schema " $OUTPUT " " $SCHEMA "
252255 EXIT=$?
253- [ $EXIT -ne 0 -a $EXIT -ne 23 ] && exit $EXIT
256+ [ $EXIT -ne 0 ] && [ $EXIT -ne 23 ] && exit $EXIT
254257 CONTESTS=$( jq -r ' .[].id' " $OUTPUT " )
255258else
256259 verbose ' %20s: Failed to download\n' " $ENDPOINT "
@@ -314,13 +317,14 @@ $ENDPOINT"
314317 validate_schema " $OUTPUT " " $SCHEMA "
315318 EXIT=$?
316319 [ $EXIT -gt $EXITCODE ] && EXITCODE=$EXIT
317- [ $EXIT -ne 0 -a -n " $DEBUG " ] && cat " $OUTPUT "
320+ [ $EXIT -ne 0 ] && [ -n " $DEBUG " ] && cat " $OUTPUT "
318321 else
319322 verbose ' %20s: Failed to download\n' " $ENDPOINT "
320323 fi
321324
322325 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
324328 EXIT=$?
325329 [ $EXIT -gt $EXITCODE ] && EXITCODE=$EXIT
326330 fi
@@ -343,6 +347,6 @@ if [ -n "$CHECK_ERRORS" ]; then
343347 done
344348fi
345349
346- [ -n " $DEBUG " ] || rm -rf $TMP
350+ [ -n " $DEBUG " ] || rm -rf " $TMP "
347351
348352exit $EXITCODE
0 commit comments