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  }