github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/cmd/state/internal/cmdtree/tutorial.go (about) 1 package cmdtree 2 3 import ( 4 "github.com/ActiveState/cli/internal/analytics/constants" 5 "github.com/ActiveState/cli/internal/captain" 6 "github.com/ActiveState/cli/internal/errs" 7 "github.com/ActiveState/cli/internal/locale" 8 "github.com/ActiveState/cli/internal/primer" 9 "github.com/ActiveState/cli/internal/runners/tutorial" 10 ) 11 12 func newTutorialCommand(prime *primer.Values) *captain.Command { 13 cmd := captain.NewCommand( 14 "tutorial", 15 locale.Tl("tutorial_title", "Running Tutorial"), 16 locale.Tl("tutorial_description", "Learn how to use the State Tool"), 17 prime, 18 nil, 19 nil, 20 func(ccmd *captain.Command, args []string) error { 21 prime.Output().Print(ccmd.UsageText()) 22 return nil 23 }, 24 ) 25 26 cmd.SetHidden(true) 27 28 return cmd 29 } 30 31 func newTutorialProjectCommand(prime *primer.Values) *captain.Command { 32 runner := tutorial.New(prime) 33 params := tutorial.NewProjectParams{} 34 35 cmd := captain.NewCommand( 36 "new-project", 37 locale.Tl("tutorial_new_project", `Running "New Project" Tutorial`), 38 locale.Tl("tutorial_description", "Learn how to create new projects. (ie. virtual environments)"), 39 prime, 40 []*captain.Flag{ 41 { 42 Name: "skip-intro", 43 Description: locale.Tl("arg_tutorial_showintro", "Skip Introduction Text"), 44 Value: ¶ms.SkipIntro, 45 }, 46 { 47 Name: "language", 48 Description: locale.Tl("arg_tutorial_language", "Language that this new project should use"), 49 Value: ¶ms.Language, 50 }, 51 }, 52 nil, 53 func(ccmd *captain.Command, args []string) error { 54 err := runner.RunNewProject(params) 55 if err != nil { 56 prime.Analytics().EventWithLabel(constants.CatTutorial, "error", errs.JoinMessage(err)) 57 } else { 58 prime.Analytics().Event(constants.CatTutorial, "completed") 59 } 60 return err 61 }, 62 ) 63 64 return cmd 65 }