Files
git.stella-ops.org/docs/features/unchecked/sdk/sdk-generator-toolchain.md

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.yaml to 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