Some checks failed
Docs CI / lint-and-preview (push) Has been cancelled
sdk-generator-smoke / sdk-smoke (push) Has been cancelled
SDK Publish & Sign / sdk-publish (push) Has been cancelled
api-governance / spectral-lint (push) Has been cancelled
oas-ci / oas-validate (push) Has been cancelled
Mirror Thin Bundle Sign & Verify / mirror-sign (push) Has been cancelled
76 lines
2.2 KiB
Bash
76 lines
2.2 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
root_dir="$(cd -- "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
config="$root_dir/python/config.yaml"
|
|
spec="${STELLA_OAS_FILE:-}"
|
|
|
|
if [ -z "$spec" ]; then
|
|
echo "STELLA_OAS_FILE is required (path to OpenAPI spec)" >&2
|
|
exit 1
|
|
fi
|
|
|
|
compute_sha256() {
|
|
if command -v sha256sum >/dev/null 2>&1; then
|
|
sha256sum "$1" | awk '{print $1}'
|
|
elif command -v shasum >/dev/null 2>&1; then
|
|
shasum -a 256 "$1" | awk '{print $1}'
|
|
else
|
|
echo "No sha256 tool available (install sha256sum or shasum)" >&2
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
spec_hash=$(compute_sha256 "$spec")
|
|
expected_hash="${STELLA_OAS_EXPECTED_SHA256:-}"
|
|
if [ -n "$expected_hash" ] && [ "$expected_hash" != "$spec_hash" ]; then
|
|
echo "Spec hash mismatch: expected $expected_hash but got $spec_hash" >&2
|
|
exit 1
|
|
fi
|
|
|
|
output_dir="${STELLA_SDK_OUT:-$root_dir/out/python}"
|
|
mkdir -p "$output_dir"
|
|
printf "%s %s\n" "$spec_hash" "$(basename "$spec")" > "$output_dir/.oas.sha256"
|
|
|
|
export STELLA_POSTPROCESS_ROOT="$output_dir"
|
|
export STELLA_POSTPROCESS_LANG="python"
|
|
|
|
jar="${STELLA_OPENAPI_GENERATOR_JAR:-$root_dir/tools/openapi-generator-cli-7.4.0.jar}"
|
|
if [ ! -f "$jar" ]; then
|
|
echo "OpenAPI Generator CLI jar not found at $jar" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Prefer vendored JDK when java is absent
|
|
if ! command -v java >/dev/null 2>&1; then
|
|
vendor_jdk="$root_dir/tools/jdk-21.0.1+12"
|
|
if [ -d "$vendor_jdk/bin" ]; then
|
|
export JAVA_HOME="$vendor_jdk"
|
|
export PATH="$JAVA_HOME/bin:$PATH"
|
|
fi
|
|
fi
|
|
|
|
if ! command -v java >/dev/null 2>&1; then
|
|
echo "java not found; install JDK 21 or provide vendored tools/jdk-21.0.1+12" >&2
|
|
exit 1
|
|
fi
|
|
|
|
JAVA_OPTS="${JAVA_OPTS:-} -Dorg.openapitools.codegen.utils.postProcessFile=$root_dir/postprocess/postprocess.sh"
|
|
export JAVA_OPTS
|
|
|
|
java -jar "$jar" generate \
|
|
-i "$spec" \
|
|
-g python \
|
|
-c "$config" \
|
|
--skip-validate-spec \
|
|
--enable-post-process-file \
|
|
--global-property models,apis,supportingFiles \
|
|
-o "$output_dir"
|
|
|
|
# Ensure shared helpers are present even if upstream post-process hooks were skipped for some files
|
|
if [ -f "$output_dir/stellaops_sdk/__init__.py" ]; then
|
|
"$root_dir/postprocess/postprocess.sh" "$output_dir/stellaops_sdk/__init__.py"
|
|
fi
|
|
|
|
echo "Python SDK generated at $output_dir"
|