From d098bd6b9e28813717a799d963351f6a80cb6f46 Mon Sep 17 00:00:00 2001 From: VioletCranberry Date: Tue, 6 May 2025 10:01:50 +0200 Subject: [PATCH] fix(cmd): make ConfigFlags persistent and propagate IOStreams --- cmd/root.go | 18 ++++++++++++++---- cmd/startSession.go | 8 +++++++- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/cmd/root.go b/cmd/root.go index f9b328a..53393b5 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -21,11 +21,21 @@ func newCliOptions(streams genericclioptions.IOStreams) *cliOptions { func NewRootCmd(streams genericclioptions.IOStreams) *cobra.Command { var target string var params []string - cliOptions := newCliOptions(streams) + cliOpts := newCliOptions(streams) - rootCmd := &cobra.Command{Use: "node-ssm", SilenceUsage: true} + rootCmd := &cobra.Command{ + Use: "node-ssm", + SilenceUsage: true, + } + + // Make all ConfigFlags (--kubeconfig, --context, etc.) persistent. + cliOpts.flags.AddFlags(rootCmd.PersistentFlags()) + + // Wire up the IOStreams on the root command. + rootCmd.SetIn(cliOpts.In) + rootCmd.SetOut(cliOpts.Out) + rootCmd.SetErr(cliOpts.ErrOut) - cliOptions.flags.AddFlags(rootCmd.Flags()) - rootCmd.AddCommand(newStartSessionCmd(cliOptions, &target, ¶ms)) + rootCmd.AddCommand(newStartSessionCmd(cliOpts, &target, ¶ms)) return rootCmd } diff --git a/cmd/startSession.go b/cmd/startSession.go index a925f7f..c6632f5 100644 --- a/cmd/startSession.go +++ b/cmd/startSession.go @@ -30,10 +30,16 @@ func newStartSessionCmd(opts *cliOptions, target *string, params *[]string) *cob return nil }, } + + // Explicitly re-use the same IOStreams on this sub-command. + startSessionCmd.SetIn(opts.In) + startSessionCmd.SetOut(opts.Out) + startSessionCmd.SetErr(opts.ErrOut) + + // Define flags. startSessionCmd.Flags(). StringVar(target, "target", "", "EKS node name (private-dns-name or instance Id)") _ = startSessionCmd.MarkFlagRequired("target") - startSessionCmd.Flags(). StringSliceVar(params, "session-params", []string{}, "SSM session parameters") return startSessionCmd