diff options
Diffstat (limited to 'build/openapi-checker.sh')
-rwxr-xr-x | build/openapi-checker.sh | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/build/openapi-checker.sh b/build/openapi-checker.sh new file mode 100755 index 00000000000..9e4a4802b25 --- /dev/null +++ b/build/openapi-checker.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash + +# SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors +# SPDX-License-Identifier: AGPL-3.0-or-later + +specs=() +for path in core apps/*; do + if [ ! -f "$path/.noopenapi" ] && [[ "$(git check-ignore "$path")" != "$path" ]]; then + composer exec generate-spec "$path" "$path/openapi.json" || exit 1 + if [[ "$(basename "$path")" != "core" ]]; then + if [ -f "$path/openapi-full.json" ]; then + specs+=("$path/openapi-full.json") + else + specs+=("$path/openapi.json") + fi; + fi; + fi +done + +composer exec merge-specs -- \ + --core core/openapi-full.json \ + --merged openapi.json \ + "${specs[@]}" + +files="$(git ls-files --exclude-standard --modified --others)" +changed=false +for file in $files; do + if [[ $file == *"openapi"*".json" ]]; then + changed=true + break + fi +done + +if [ $changed = true ] +then + git --no-pager diff + echo "The OpenAPI specifications are not up to date" + echo "Please run: bash build/openapi-checker.sh" + echo "And commit the result" + exit 1 +else + echo "OpenAPI specifications up to date. Carry on" + exit 0 +fi |