github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/cmd/state/internal/cmdtree/switch.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/swtch"
     8  )
     9  
    10  func newSwitchCommand(prime *primer.Values) *captain.Command {
    11  	runner := swtch.New(prime)
    12  
    13  	params := swtch.SwitchParams{}
    14  
    15  	cmd := captain.NewCommand(
    16  		"switch",
    17  		locale.Tl("switch_title", "Switching"),
    18  		locale.Tl("switch_description", "Switch to a branch, commit, or tag"),
    19  		prime,
    20  		[]*captain.Flag{},
    21  		[]*captain.Argument{
    22  			{
    23  				Name:        locale.Tl("switch_arg_identifier", "identifier"),
    24  				Description: locale.Tl("switch_arg_identifier_description", "The commit or branch to switch to"),
    25  				Value:       &params.Identifier,
    26  				Required:    true,
    27  			},
    28  		},
    29  		func(_ *captain.Command, _ []string) error {
    30  			return runner.Run(params)
    31  		})
    32  
    33  	cmd.SetGroup(EnvironmentSetupGroup)
    34  	cmd.SetSupportsStructuredOutput()
    35  	return cmd
    36  }