From 855a091a02ec9b6fc08a0d37d47880a9a40b570b Mon Sep 17 00:00:00 2001 From: Carlo Goetz Date: Wed, 13 May 2026 17:05:23 +0200 Subject: [PATCH 1/4] feat(go): activate generator support for resolving inline-enums --- .github/workflows/ci.yaml | 2 +- scripts/generate-sdk/languages/go.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index fcff289..d16065e 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -28,7 +28,7 @@ jobs: uses: actions/setup-go@v5 with: go-version: ${{ matrix.go-version }} - + - name: Install project tools and dependencies shell: bash run: make project-tools diff --git a/scripts/generate-sdk/languages/go.sh b/scripts/generate-sdk/languages/go.sh index f840f1e..fc38206 100644 --- a/scripts/generate-sdk/languages/go.sh +++ b/scripts/generate-sdk/languages/go.sh @@ -171,7 +171,7 @@ generate_go_sdk() { --git-user-id "${GIT_USER_ID}" \ --git-repo-id "${GIT_REPO_ID}/services/${service}" \ --global-property apis,models,modelTests=true,modelDocs=false,apiDocs=false,supportingFiles,apiTests=false\ - --inline-schema-options "SKIP_SCHEMA_REUSE=true" \ + --inline-schema-options "SKIP_SCHEMA_REUSE=true,RESOLVE_INLINE_ENUMS=true" \ --http-user-agent "stackit-sdk-go/${service}" \ --reserved-words-mappings type=types \ --config "${ROOT_DIR}/languages/golang/openapi-generator-config.yml" From ee8fd3fe010794c608ff616e4c92258dfc839a41 Mon Sep 17 00:00:00 2001 From: Ruben Hoenle Date: Fri, 22 May 2026 17:23:00 +0200 Subject: [PATCH 2/4] feat(go): generate region always as string --- .gitignore | 1 + scripts/generate-sdk/languages/go.sh | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 32ba444..ce8e7b2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +custom # IDE *.vscode/ *.idea diff --git a/scripts/generate-sdk/languages/go.sh b/scripts/generate-sdk/languages/go.sh index fc38206..5ed54e0 100644 --- a/scripts/generate-sdk/languages/go.sh +++ b/scripts/generate-sdk/languages/go.sh @@ -160,9 +160,15 @@ generate_go_sdk() { mkdir -p "${SERVICES_FOLDER}/${service}/${version}api" cp "${ROOT_DIR}/languages/golang/.openapi-generator-ignore" "${SERVICES_FOLDER}/${service}/${version}api/.openapi-generator-ignore" + # compile custom generator + mkdir -p custom/com/mycompany/codegen + javac -cp "${GENERATOR_JAR_PATH}" CustomRegionGenerator.java + mv CustomRegionGenerator.class custom/com/mycompany/codegen/CustomRegionGenerator.class + # Run the generator for Go - java -Dlog.level=${GENERATOR_LOG_LEVEL} -jar ${jar_path} generate \ - --generator-name go \ + java -Dlog.level=${GENERATOR_LOG_LEVEL} -cp "custom:scripts/bin/openapi-generator-cli.jar" \ + org.openapitools.codegen.OpenAPIGenerator generate \ + -g com.mycompany.codegen.CustomRegionGenerator \ --input-spec "${service_version_json}" \ --output "${SERVICES_FOLDER}/${service}/${version}api" \ --package-name "${version}api" \ From 0a448f90dc47aea5e42fc7e175b415913d338dd9 Mon Sep 17 00:00:00 2001 From: Carlo Goetz Date: Tue, 26 May 2026 16:08:31 +0200 Subject: [PATCH 3/4] fix(go): commit missing files --- CustomRegionGenerator.java | 71 ++++++++++++++++++++++++++++ scripts/generate-sdk/languages/go.sh | 6 +-- 2 files changed, 74 insertions(+), 3 deletions(-) create mode 100644 CustomRegionGenerator.java diff --git a/CustomRegionGenerator.java b/CustomRegionGenerator.java new file mode 100644 index 0000000..160fda5 --- /dev/null +++ b/CustomRegionGenerator.java @@ -0,0 +1,71 @@ +package cloud.stackit.codegen; + +import org.openapitools.codegen.CodegenProperty; +import org.openapitools.codegen.languages.GoClientCodegen; + +import org.openapitools.codegen.CodegenParameter; + +import java.util.Set; +import io.swagger.v3.oas.models.media.Schema; +import io.swagger.v3.oas.models.parameters.Parameter; + +public class CustomRegionGenerator extends GoClientCodegen { + + @Override + public String getName() { + // This is the name you will pass to the -g flag + return "cloud.stackit.codegen.CustomRegionGenerator"; + } + + public CustomRegionGenerator() { + super(); + System.out.println("=== CUSTOM GO CLIENT GENERATOR INITIALIZED ==="); + } + + @Override + public CodegenProperty fromProperty(String name, Schema p, boolean required) { + CodegenProperty property = super.fromProperty(name, p, required); + + if (isRegionField(property.name)) { + property.dataType = "string"; + property.datatypeWithEnum = "string"; + property.baseType = "string"; + + // Force template engine to treat this as a string + property.isString = true; + property.isInteger = false; + property.isLong = false; + property.isNumber = false; + property.isNumeric = false; + } + return property; + } + + /** + * Intercepts operation parameters (query, path, header, body). + */ + @Override + public CodegenParameter fromParameter(Parameter param, Set imports) { + CodegenParameter parameter = super.fromParameter(param, imports); + + if (isRegionField(parameter.paramName)) { + parameter.dataType = "string"; + + // Force template engine to treat this as a string + parameter.isString = true; + parameter.isInteger = false; + parameter.isLong = false; + parameter.isNumber = false; + // If it was previously an enum or another complex type, clear it + parameter.isEnum = false; + } + return parameter; + } + + private boolean isRegionField(String name) { + if (name == null) { + return false; + } + return name.equalsIgnoreCase("region") || name.equalsIgnoreCase("regionId"); + } +} diff --git a/scripts/generate-sdk/languages/go.sh b/scripts/generate-sdk/languages/go.sh index 5ed54e0..4b9d5b4 100644 --- a/scripts/generate-sdk/languages/go.sh +++ b/scripts/generate-sdk/languages/go.sh @@ -161,14 +161,14 @@ generate_go_sdk() { cp "${ROOT_DIR}/languages/golang/.openapi-generator-ignore" "${SERVICES_FOLDER}/${service}/${version}api/.openapi-generator-ignore" # compile custom generator - mkdir -p custom/com/mycompany/codegen + mkdir -p custom/cloud/stackit/codegen javac -cp "${GENERATOR_JAR_PATH}" CustomRegionGenerator.java - mv CustomRegionGenerator.class custom/com/mycompany/codegen/CustomRegionGenerator.class + mv CustomRegionGenerator.class custom/cloud/stackit/codegen/CustomRegionGenerator.class # Run the generator for Go java -Dlog.level=${GENERATOR_LOG_LEVEL} -cp "custom:scripts/bin/openapi-generator-cli.jar" \ org.openapitools.codegen.OpenAPIGenerator generate \ - -g com.mycompany.codegen.CustomRegionGenerator \ + -g cloud.stackit.codegen.CustomRegionGenerator \ --input-spec "${service_version_json}" \ --output "${SERVICES_FOLDER}/${service}/${version}api" \ --package-name "${version}api" \ From e1cf3382fc7875a429112ebea2d15d3e3266abee Mon Sep 17 00:00:00 2001 From: Carlo Goetz Date: Tue, 26 May 2026 18:00:46 +0200 Subject: [PATCH 4/4] fix(go): move custom generator compile out of loop, ignore region files --- languages/golang/.openapi-generator-ignore | 2 ++ scripts/generate-sdk/languages/go.sh | 11 ++++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/languages/golang/.openapi-generator-ignore b/languages/golang/.openapi-generator-ignore index 617db47..ed1829b 100644 --- a/languages/golang/.openapi-generator-ignore +++ b/languages/golang/.openapi-generator-ignore @@ -3,3 +3,5 @@ git_push.sh .travis.yml .gitignore api/openapi.yaml +*_region_id_parameter.go +*_region_parameter.go \ No newline at end of file diff --git a/scripts/generate-sdk/languages/go.sh b/scripts/generate-sdk/languages/go.sh index 4b9d5b4..87036fd 100644 --- a/scripts/generate-sdk/languages/go.sh +++ b/scripts/generate-sdk/languages/go.sh @@ -107,6 +107,12 @@ generate_go_sdk() { # see https://openapi-generator.tech/docs/file-post-processing/ export GO_POST_PROCESS_FILE="gofmt -w" + # compile custom generator + cd ${ROOT_DIR} + mkdir -p custom/cloud/stackit/codegen + javac -cp "${GENERATOR_JAR_PATH}" CustomRegionGenerator.java + mv CustomRegionGenerator.class custom/cloud/stackit/codegen/CustomRegionGenerator.class + warning="" for service_dir in "${ROOT_DIR}/oas/services"/*; do @@ -160,11 +166,6 @@ generate_go_sdk() { mkdir -p "${SERVICES_FOLDER}/${service}/${version}api" cp "${ROOT_DIR}/languages/golang/.openapi-generator-ignore" "${SERVICES_FOLDER}/${service}/${version}api/.openapi-generator-ignore" - # compile custom generator - mkdir -p custom/cloud/stackit/codegen - javac -cp "${GENERATOR_JAR_PATH}" CustomRegionGenerator.java - mv CustomRegionGenerator.class custom/cloud/stackit/codegen/CustomRegionGenerator.class - # Run the generator for Go java -Dlog.level=${GENERATOR_LOG_LEVEL} -cp "custom:scripts/bin/openapi-generator-cli.jar" \ org.openapitools.codegen.OpenAPIGenerator generate \