This commit is contained in:
Executable
+48
@@ -0,0 +1,48 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
BASE_URL="${1:-http://127.0.0.1:18080}"
|
||||
VERSION="${OPENAPI_VERSION:-1.0.0}"
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
RAW_FILE="$(mktemp)"
|
||||
NORMALIZED_FILE="$(mktemp)"
|
||||
YAML_FILE="$(mktemp)"
|
||||
OUTPUT_FILE="$(mktemp)"
|
||||
trap 'rm -f "$RAW_FILE" "$NORMALIZED_FILE" "$YAML_FILE" "$OUTPUT_FILE"' EXIT
|
||||
|
||||
curl --fail --silent --show-error "${BASE_URL%/}/api-docs" -o "$RAW_FILE"
|
||||
jq -S --arg version "$VERSION" \
|
||||
'del(.servers)
|
||||
| .info.title = "Kaidi Finance API"
|
||||
| .info.version = $version
|
||||
| .paths |= with_entries(
|
||||
if (.key | test("^/api/v1/archives?(/|$)"))
|
||||
then .value |= with_entries(
|
||||
if (.value.operationId? // "" | test("_1$"))
|
||||
then .value.operationId |= sub("_1$"; "")
|
||||
else .
|
||||
end
|
||||
)
|
||||
else .
|
||||
end
|
||||
)
|
||||
# OpenAPI annotations expose allowableValues as strings even for an integer schema.
|
||||
| (.paths["/api/v1/workflow/tasks"].get.parameters[]
|
||||
| select(.name == "size").schema.enum) |= map(tonumber)
|
||||
| (.paths["/api/v1/source/forms"].get.parameters[]
|
||||
| select(.name == "size").schema.enum) |= map(tonumber)
|
||||
| (.paths["/api/v1/audit/logs"].get.parameters[]
|
||||
| select(.name == "size").schema.enum) |= map(tonumber)
|
||||
| (.paths["/api/v1/masterdata/{resource}/{publicId}/versions"].get.parameters[]
|
||||
| select(.name == "size").schema.enum) |= map(tonumber)' \
|
||||
"$RAW_FILE" > "$NORMALIZED_FILE"
|
||||
ruby -ryaml -rjson -e 'puts JSON.parse(File.read(ARGV[0])).to_yaml' \
|
||||
"$NORMALIZED_FILE" > "$YAML_FILE"
|
||||
{
|
||||
printf '# Generated from Springdoc /api-docs by scripts/export-openapi.sh. Do not edit manually.\n'
|
||||
cat "$YAML_FILE"
|
||||
} > "$OUTPUT_FILE"
|
||||
|
||||
"$ROOT_DIR/scripts/check-openapi.sh" "$OUTPUT_FILE"
|
||||
mv "$OUTPUT_FILE" "$ROOT_DIR/openapi.yaml"
|
||||
printf 'Generated %s from %s/api-docs\n' "$ROOT_DIR/openapi.yaml" "$BASE_URL"
|
||||
Reference in New Issue
Block a user