From c4743a527e1fac0bc7902343289f149066a37cfc Mon Sep 17 00:00:00 2001 From: Virgil Date: Thu, 2 Apr 2026 09:15:03 +0000 Subject: [PATCH] refactor(cmd/api): fail fast on sdk generator availability Co-Authored-By: Virgil --- cmd/api/cmd_sdk.go | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/cmd/api/cmd_sdk.go b/cmd/api/cmd_sdk.go index 528e237..1b834af 100644 --- a/cmd/api/cmd_sdk.go +++ b/cmd/api/cmd_sdk.go @@ -57,7 +57,20 @@ func addSDKCommand(parent *cli.Command) { return coreerr.E("sdk.Generate", "--lang is required and must include at least one non-empty language. Supported: "+strings.Join(goapi.SupportedLanguages(), ", "), nil) } - // If no spec file provided, generate one to a temp file. + gen := &goapi.SDKGenerator{ + OutputDir: output, + PackageName: packageName, + } + + if !gen.Available() { + fmt.Fprintln(os.Stderr, "openapi-generator-cli not found. Install with:") + fmt.Fprintln(os.Stderr, " brew install openapi-generator (macOS)") + fmt.Fprintln(os.Stderr, " npm install @openapitools/openapi-generator-cli -g") + return coreerr.E("sdk.Generate", "openapi-generator-cli not installed", nil) + } + + // If no spec file was provided, generate one only after confirming the + // generator is available. if specFile == "" { builder, err := sdkSpecBuilder(specBuilderConfig{ title: title, @@ -104,18 +117,7 @@ func addSDKCommand(parent *cli.Command) { specFile = tmpPath } - gen := &goapi.SDKGenerator{ - SpecPath: specFile, - OutputDir: output, - PackageName: packageName, - } - - if !gen.Available() { - fmt.Fprintln(os.Stderr, "openapi-generator-cli not found. Install with:") - fmt.Fprintln(os.Stderr, " brew install openapi-generator (macOS)") - fmt.Fprintln(os.Stderr, " npm install @openapitools/openapi-generator-cli -g") - return coreerr.E("sdk.Generate", "openapi-generator-cli not installed", nil) - } + gen.SpecPath = specFile // Generate for each language. for _, l := range languages {