2.9 KiB
2.9 KiB
SDK Generator Toolchain (Multi-Language)
Module
Sdk
Status
IMPLEMENTED
Description
Multi-language SDK generator toolchain producing typed API clients in TypeScript, Python, Go, and Java from OpenAPI specifications, with postprocessing, release pipelines, and offline bundle support.
Implementation Details
- Go Generator:
src/Sdk/StellaOps.Sdk.Generator/go/-- Go SDK generation configuration and scripts. Key files:config.yaml(OpenAPI Generator config for Go),generate-go.sh(generation script),test_generate_go.sh(test script). - Java Generator:
src/Sdk/StellaOps.Sdk.Generator/java/-- Java SDK generation. Key files:config.yaml,generate-java.sh,test_generate_java.sh. - Python Generator:
src/Sdk/StellaOps.Sdk.Generator/python/-- Python SDK generation. Key files:config.yaml,generate-python.sh,test_generate_python.sh. - Postprocessing Pipeline:
src/Sdk/StellaOps.Sdk.Generator/postprocess/-- post-generation processing adding hooks, error handling, and SDK-specific customizations. Key files:postprocess.sh(orchestrator),README.md(documentation). - Postprocessing Templates:
src/Sdk/StellaOps.Sdk.Generator/postprocess/templates/-- language-specific hook templates:go/hooks.go,java/src/main/java/org/stellaops/sdk/Hooks.java,python/sdk_hooks.py,typescript/sdk-hooks.ts,typescript/sdk-error.ts,typescript/package.json,typescript/tsconfig.*.json. - Toolchain Lock:
src/Sdk/StellaOps.Sdk.Generator/toolchain.lock.yaml-- pinned versions of generator tools for reproducible builds. - Toolchain Documentation:
src/Sdk/StellaOps.Sdk.Generator/TOOLCHAIN.md-- documentation of the toolchain, versions, and upgrade process. - Vendored Tools:
src/Sdk/StellaOps.Sdk.Generator/tools/openapi-generator-cli-7.4.0.jar(OpenAPI Generator),tools/jdk-21.0.1.tar.gz(JDK for Java generation). - Postprocessing Tests:
src/Sdk/StellaOps.Sdk.Generator/postprocess/tests/test_postprocess.sh-- tests for postprocessing pipeline.
E2E Test Plan
- Run the Go SDK generation script (
generate-go.sh) against the OpenAPI spec and verify it produces a compilable Go client package - Run the Java SDK generation script and verify the output compiles with the vendored JDK
- Run the Python SDK generation script and verify the output is a valid Python package with correct module structure
- Run the postprocessing pipeline on a generated TypeScript SDK and verify hooks, error handling, and package.json are correctly injected
- Verify the toolchain lock: modify
toolchain.lock.yamlto reference a different generator version and confirm the generation script uses the locked version - Run all test scripts (
test_generate_go.sh,test_generate_java.sh,test_generate_python.sh,test_postprocess.sh) and verify they pass - Verify offline operation: run generation without network access using the vendored tools and confirm successful output