fix: use cmd writer in bootstrap, conditional secret check
Bootstrap hint now writes to cmd.OutOrStdout() instead of os.Stdout. Secret service nil check is now conditional on env/attachment_env presence. Part of #98.
- commit
- 4005e23d998352d2181b515e6d5f3da88176ca6a
- author
- brice · · 2026-03-13 21:17 UTC
- parent
- 3cbff78
- signature
- unsigned
2 files · +5 -4
M internal/adapters/in/cli/bootstrap.go +3 -3
| @@ -2,7 +2,6 @@ package cli | |||
| 2 | 2 | ||
| 3 | 3 | import ( | |
| 4 | 4 | "fmt" | |
| 5 | - | "os" | |
| 6 | 5 | "sort" | |
| 7 | 6 | "strings" | |
| 8 | 7 | ||
| @@ -77,10 +76,11 @@ func newBootstrapCmd() *cobra.Command { | |||
| 77 | 76 | if err != nil { | |
| 78 | 77 | return fmt.Errorf("failed to bootstrap: %w", err) | |
| 79 | 78 | } | |
| 80 | - | if err := cliWriteLine(os.Stdout, cliRenderSuccess("Bootstrap complete")); err != nil { | |
| 79 | + | out := cmd.OutOrStdout() | |
| 80 | + | if err := cliWriteLine(out, cliRenderSuccess("Bootstrap complete")); err != nil { | |
| 81 | 81 | return err | |
| 82 | 82 | } | |
| 83 | - | return cliWriteLine(os.Stdout, fmt.Sprintf("Next: gordon push %s --build", req.Image)) | |
| 83 | + | return cliWriteLine(out, fmt.Sprintf("Next: gordon push %s --build", req.Image)) | |
| 84 | 84 | }, | |
| 85 | 85 | } | |
| 86 | 86 | ||
| @@ -2,7 +2,6 @@ package cli | |||||
| 2 | 2 | ||||
| 3 | import ( | 3 | import ( | ||
| 4 | "fmt" | 4 | "fmt" | ||
| 5 | - | "os" | |||
| 6 | "sort" | 5 | "sort" | ||
| 7 | "strings" | 6 | "strings" | ||
| 8 | 7 | ||||
| @@ -77,10 +76,11 @@ func newBootstrapCmd() *cobra.Command { | |||||
| 77 | if err != nil { | 76 | if err != nil { | ||
| 78 | return fmt.Errorf("failed to bootstrap: %w", err) | 77 | return fmt.Errorf("failed to bootstrap: %w", err) | ||
| 79 | } | 78 | } | ||
| 80 | - | if err := cliWriteLine(os.Stdout, cliRenderSuccess("Bootstrap complete")); err != nil { | 79 | + | out := cmd.OutOrStdout() |
| 80 | + | if err := cliWriteLine(out, cliRenderSuccess("Bootstrap complete")); err != nil { | |||
| 81 | return err | 81 | return err | ||
| 82 | } | 82 | } | ||
| 83 | - | return cliWriteLine(os.Stdout, fmt.Sprintf("Next: gordon push %s --build", req.Image)) | 83 | + | return cliWriteLine(out, fmt.Sprintf("Next: gordon push %s --build", req.Image)) |
| 84 | }, | 84 | }, | ||
| 85 | } | 85 | } | ||
| 86 | 86 | ||||
M internal/adapters/in/cli/controlplane_local.go +2 -1
| @@ -133,7 +133,8 @@ func (l *localControlPlane) Bootstrap(ctx context.Context, req dto.BootstrapRequ | |||
| 133 | 133 | if l.configSvc == nil { | |
| 134 | 134 | return resp, fmt.Errorf("local config service unavailable") | |
| 135 | 135 | } | |
| 136 | - | if l.secretSvc == nil { | |
| 136 | + | needsSecrets := len(req.Env) > 0 || len(req.AttachmentEnv) > 0 | |
| 137 | + | if needsSecrets && l.secretSvc == nil { | |
| 137 | 138 | return resp, fmt.Errorf("local secret service unavailable") | |
| 138 | 139 | } | |
| 139 | 140 | ||
| @@ -133,7 +133,8 @@ func (l *localControlPlane) Bootstrap(ctx context.Context, req dto.BootstrapRequ | |||||
| 133 | if l.configSvc == nil { | 133 | if l.configSvc == nil { | ||
| 134 | return resp, fmt.Errorf("local config service unavailable") | 134 | return resp, fmt.Errorf("local config service unavailable") | ||
| 135 | } | 135 | } | ||
| 136 | - | if l.secretSvc == nil { | 136 | + | needsSecrets := len(req.Env) > 0 || len(req.AttachmentEnv) > 0 |
| 137 | + | if needsSecrets && l.secretSvc == nil { | |||
| 137 | return resp, fmt.Errorf("local secret service unavailable") | 138 | return resp, fmt.Errorf("local secret service unavailable") | ||
| 138 | } | 139 | } | ||
| 139 | 140 | ||||