github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/cmd/state/internal/cmdtree/exec.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/exec"
     8  )
     9  
    10  func newExecCommand(prime *primer.Values, args ...string) *captain.Command {
    11  	runner := exec.New(prime)
    12  
    13  	params := exec.NewParams()
    14  
    15  	cmd := captain.NewCommand(
    16  		"exec",
    17  		"",
    18  		locale.T("exec_description"),
    19  		prime,
    20  		[]*captain.Flag{
    21  			{
    22  				Name:        "path",
    23  				Description: locale.Tl("flag_state_exec_path_description", "Path to the project you are using"),
    24  				Value:       &params.Path,
    25  			},
    26  		},
    27  		[]*captain.Argument{},
    28  		func(ccmd *captain.Command, args []string) error {
    29  			if len(args) > 0 && (args[0] == "-h" || args[0] == "--help") {
    30  				prime.Output().Print(ccmd.UsageText())
    31  				return nil
    32  			} else if len(args) > 0 && (args[0] == "-v" || args[0] == "--verbose" || args[0] == "--") {
    33  				if len(args) > 1 {
    34  					args = args[1:]
    35  				} else {
    36  					args = []string{}
    37  				}
    38  			}
    39  
    40  			return runner.Run(params, args...)
    41  		},
    42  	)
    43  	cmd.SetSkipChecks(true)
    44  	cmd.SetDeferAnalytics(true)
    45  
    46  	cmd.SetGroup(EnvironmentUsageGroup)
    47  	cmd.SetHasVariableArguments()
    48  
    49  	return cmd
    50  }