From 9f6c4b32266648dc3a36ef570a5a72a233419855 Mon Sep 17 00:00:00 2001 From: Kasper Juul Hermansen Date: Fri, 23 Aug 2024 14:24:56 +0200 Subject: [PATCH] feat/silence usage for shuttle actions (#242) * fix: silence usage for shuttle actions Signed-off-by: Kasper J. Hermansen * fix: errors Signed-off-by: Kasper J. Hermansen * fix: tests Signed-off-by: Kasper J. Hermansen --------- Signed-off-by: Kasper J. Hermansen --- cmd/run.go | 2 +- cmd/run_test.go | 4 ++-- pkg/executors/golang/cmder/cmder.go | 11 +++++++---- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/cmd/run.go b/cmd/run.go index 2b664e8..495a568 100644 --- a/cmd/run.go +++ b/cmd/run.go @@ -157,7 +157,7 @@ func newRunSubCommand( } } else if *inputArgs[arg.Name] == "" && arg.Required && *validateArgs { - return fmt.Errorf("Error: required flag(s) \"%s\" not set", argName(arg.Name)) + return fmt.Errorf("required flag(s) \"%s\" not set", argName(arg.Name)) } } diff --git a/cmd/run_test.go b/cmd/run_test.go index 29e000f..25408c4 100644 --- a/cmd/run_test.go +++ b/cmd/run_test.go @@ -64,9 +64,9 @@ func TestRun(t *testing.T) { name: "script fails when required argument is missing", input: args("-p", "testdata/project", "run", "required_arg"), stdoutput: "", - erroutput: `Error: Error: required flag(s) "foo" not set + erroutput: `Error: required flag(s) "foo" not set `, - err: errors.New(`Error: required flag(s) "foo" not set`), + err: errors.New(`required flag(s) "foo" not set`), }, { name: "script succeeds with required argument", diff --git a/pkg/executors/golang/cmder/cmder.go b/pkg/executors/golang/cmder/cmder.go index a81c0b7..a3bf039 100644 --- a/pkg/executors/golang/cmder/cmder.go +++ b/pkg/executors/golang/cmder/cmder.go @@ -40,7 +40,6 @@ func (rc *RootCmd) Execute() { } else { log.Fatalf("%v\n", err) } - } } @@ -95,6 +94,10 @@ func (rc *RootCmd) TryExecute(args []string) error { cobracmd := &cobra.Command{ Use: cmd.Name, + + // We don't want to show the full usage, instead just show the error + SilenceUsage: true, + RunE: func(cobracmd *cobra.Command, args []string) error { if err := cobracmd.ParseFlags(args); err != nil { log.Println(err) @@ -119,7 +122,7 @@ func (rc *RootCmd) TryExecute(args []string) error { if val.Type().Implements(reflect.TypeOf((*error)(nil)).Elem()) { err, ok := val.Interface().(error) if ok && err != nil { - log.Println(err) + fmt.Fprintln(cobracmd.ErrOrStderr(), err) return ErrNoHelp } } @@ -129,8 +132,8 @@ func (rc *RootCmd) TryExecute(args []string) error { }, } for i, arg := range cmd.Args { - cobracmd.PersistentFlags().StringVar(¶meters[i], arg.Name, "", "") - _ = cobracmd.MarkPersistentFlagRequired(arg.Name) + cobracmd.Flags().StringVar(¶meters[i], arg.Name, "", "") + _ = cobracmd.MarkFlagRequired(arg.Name) } rootcmd.AddCommand(cobracmd)