github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/cmd/state/internal/cmdtree/init.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/logging"
     7  	"github.com/ActiveState/cli/internal/primer"
     8  	"github.com/ActiveState/cli/internal/runners/initialize"
     9  	"github.com/ActiveState/cli/pkg/project"
    10  )
    11  
    12  func newInitCommand(prime *primer.Values) *captain.Command {
    13  	initRunner := initialize.New(prime)
    14  
    15  	params := initialize.RunParams{}
    16  
    17  	return captain.NewCommand(
    18  		"init",
    19  		"",
    20  		locale.T("init_description"),
    21  		prime,
    22  		[]*captain.Flag{
    23  			{
    24  				Name:        "language",
    25  				Description: locale.T("flag_state_init_language_description"),
    26  				Value:       &params.Language,
    27  			},
    28  			{
    29  				Name:        "private",
    30  				Description: locale.T("flag_state_init_private_flag_description"),
    31  				Value:       &params.Private,
    32  			},
    33  		},
    34  		[]*captain.Argument{
    35  			{
    36  				Name:        locale.T("arg_state_init_namespace"),
    37  				Description: locale.T("arg_state_init_namespace_description"),
    38  				Value:       &params.Namespace,
    39  			},
    40  			{
    41  				Name:        locale.T("arg_state_init_path"),
    42  				Description: locale.T("arg_state_init_path_description"),
    43  				Value:       &params.Path,
    44  			},
    45  		},
    46  		func(ccmd *captain.Command, _ []string) error {
    47  			if params.Namespace != "" {
    48  				ns, err := project.ParseNamespace(params.Namespace)
    49  				if err != nil {
    50  					// If the namespace was invalid but an argument was passed, we
    51  					// assume it's a project name and not an owner.
    52  					logging.Error("Could not parse namespace: %v", err)
    53  					params.ProjectName = params.Namespace
    54  				} else {
    55  					params.ParsedNS = ns
    56  				}
    57  			}
    58  			return initRunner.Run(&params)
    59  		},
    60  	).SetGroup(EnvironmentSetupGroup).SetSupportsStructuredOutput()
    61  }