From afc0b0400ecdf28fda42cf083d57159a88be11ec Mon Sep 17 00:00:00 2001 From: Snider Date: Thu, 29 Jan 2026 03:25:44 +0000 Subject: [PATCH] feat(cli): implement runReleaseSDK for SDK generation Add the runReleaseSDK function that calls release.RunSDK() to enable SDK-only releases via `core release --target sdk`. The function loads configuration, applies CLI overrides, and displays styled output for the SDK generation process. Co-Authored-By: Claude Opus 4.5 --- cmd/core/cmd/release.go | 44 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/cmd/core/cmd/release.go b/cmd/core/cmd/release.go index 681488c..34bf028 100644 --- a/cmd/core/cmd/release.go +++ b/cmd/core/cmd/release.go @@ -148,6 +148,50 @@ func runRelease(dryRun bool, version string, draft, prerelease bool) error { return nil } +// runReleaseSDK executes SDK-only release. +func runReleaseSDK(dryRun bool, version string) error { + ctx := context.Background() + + projectDir, err := os.Getwd() + if err != nil { + return fmt.Errorf("failed to get working directory: %w", err) + } + + // Load configuration + cfg, err := release.LoadConfig(projectDir) + if err != nil { + return fmt.Errorf("failed to load config: %w", err) + } + + // Apply CLI overrides + if version != "" { + cfg.SetVersion(version) + } + + // Print header + fmt.Printf("%s Generating SDKs\n", releaseHeaderStyle.Render("SDK Release:")) + if dryRun { + fmt.Printf(" %s\n", releaseDimStyle.Render("(dry-run mode)")) + } + fmt.Println() + + // Run SDK release + result, err := release.RunSDK(ctx, cfg, dryRun) + if err != nil { + fmt.Printf("%s %v\n", releaseErrorStyle.Render("Error:"), err) + return err + } + + // Print summary + fmt.Println() + fmt.Printf("%s SDK generation complete!\n", releaseSuccessStyle.Render("Success:")) + fmt.Printf(" Version: %s\n", releaseValueStyle.Render(result.Version)) + fmt.Printf(" Languages: %v\n", result.Languages) + fmt.Printf(" Output: %s/\n", releaseValueStyle.Render(result.Output)) + + return nil +} + // runReleaseInit creates a release configuration interactively. func runReleaseInit() error { projectDir, err := os.Getwd()