github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/cmd/state/internal/cmdtree/run.go (about) 1 package cmdtree 2 3 import ( 4 "github.com/ActiveState/cli/internal/captain" 5 "github.com/ActiveState/cli/internal/locale" 6 "github.com/ActiveState/cli/internal/primer" 7 "github.com/ActiveState/cli/internal/runners/run" 8 ) 9 10 func newRunCommand(prime *primer.Values) *captain.Command { 11 runner := run.New(prime) 12 13 var name string 14 15 cmd := captain.NewCommand( 16 "run", 17 "", 18 locale.T("run_description"), 19 prime, 20 nil, 21 []*captain.Argument{ 22 { 23 Name: locale.T("arg_state_run_name"), 24 Description: locale.T("arg_state_run_name_description"), 25 Value: &name, 26 Required: true, 27 }, 28 }, 29 func(ccmd *captain.Command, args []string) error { 30 if name == "-h" || name == "--help" { 31 prime.Output().Print(ccmd.UsageText()) 32 return nil 33 } else if name == "-v" || name == "--verbose" { 34 if len(args) > 1 { 35 name, args = args[1], args[1:] 36 } else { 37 name, args = "", []string{} 38 } 39 } 40 41 if name != "" && len(args) > 0 { 42 args = args[1:] 43 } 44 45 return runner.Run(name, args) 46 }, 47 ) 48 49 cmd.SetGroup(ProjectUsageGroup) 50 cmd.SetDisableFlagParsing(true) 51 cmd.SetHasVariableArguments() 52 53 return cmd 54 }