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: ¶ms.Language, 27 }, 28 { 29 Name: "private", 30 Description: locale.T("flag_state_init_private_flag_description"), 31 Value: ¶ms.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: ¶ms.Namespace, 39 }, 40 { 41 Name: locale.T("arg_state_init_path"), 42 Description: locale.T("arg_state_init_path_description"), 43 Value: ¶ms.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(¶ms) 59 }, 60 ).SetGroup(EnvironmentSetupGroup).SetSupportsStructuredOutput() 61 }