github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/cmd/state/internal/cmdtree/projects.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/projects" 8 "github.com/ActiveState/cli/pkg/project" 9 ) 10 11 func newProjectsCommand(prime *primer.Values) *captain.Command { 12 runner := projects.NewProjects(prime) 13 params := projects.NewParams() 14 15 return captain.NewCommand( 16 "projects", 17 locale.Tl("projects_title", "Listing Projects"), 18 locale.T("projects_description"), 19 prime, 20 []*captain.Flag{}, 21 []*captain.Argument{}, 22 func(ccmd *captain.Command, args []string) error { 23 return runner.Run(params) 24 }, 25 ).SetGroup(ProjectUsageGroup).SetSupportsStructuredOutput() 26 } 27 28 func newRemoteProjectsCommand(prime *primer.Values) *captain.Command { 29 runner := projects.NewProjects(prime) 30 params := projects.NewParams() 31 32 return captain.NewCommand( 33 "remote", 34 locale.Tl("projects_remote_title", "Listing Remote Projects"), 35 locale.Tl("projects_remote_description", "List all projects, including ones you have not checked out locally"), 36 prime, 37 []*captain.Flag{}, 38 []*captain.Argument{}, 39 func(ccmd *captain.Command, args []string) error { 40 return runner.RunRemote(params) 41 }, 42 ).SetGroup(ProjectUsageGroup).SetSupportsStructuredOutput() 43 } 44 45 func newProjectsEditCommand(prime *primer.Values) *captain.Command { 46 runner := projects.NewEdit(prime) 47 params := &projects.EditParams{ 48 Namespace: &project.Namespaced{}, 49 } 50 51 cmd := captain.NewCommand( 52 "edit", 53 locale.Tl("projects_edit_title", "Edit Project"), 54 locale.Tl("projects_edit_description", "Edit the project details for the specified project"), 55 prime, 56 []*captain.Flag{ 57 { 58 Name: "name", 59 Description: locale.Tl("projects_edit_name_description", "Edit the name of the project."), 60 Value: ¶ms.ProjectName, 61 }, 62 { 63 Name: "visibility", 64 Description: locale.Tl("projects_edit_visibility_description", "Edit the visibility to non-members, either public or private."), 65 Value: ¶ms.Visibility, 66 }, 67 { 68 Name: "repository", 69 Description: locale.Tl("projects_edit_repository_description", "Edit the linked VCS repo. To unset use --repo=\"\"."), 70 Value: ¶ms.Repository, 71 }, 72 }, 73 []*captain.Argument{ 74 { 75 Name: "namespace", 76 Description: locale.Tl("projects_edit_namespace_description", "The namespace of the project to edit"), 77 Required: true, 78 Value: params.Namespace, 79 }, 80 }, 81 func(ccmd *captain.Command, args []string) error { 82 return runner.Run(params) 83 }, 84 ) 85 86 cmd.SetGroup(ProjectUsageGroup) 87 cmd.SetUnstable(true) 88 89 return cmd 90 } 91 92 func newDeleteProjectsCommand(prime *primer.Values) *captain.Command { 93 runner := projects.NewDelete(prime) 94 params := projects.NewDeleteParams() 95 96 cmd := captain.NewCommand( 97 "delete", 98 locale.Tl("projects_delete_title", "Delete a project"), 99 locale.Tl("projects_delete_description", "Delete the specified project from the Platform"), 100 prime, 101 []*captain.Flag{}, 102 []*captain.Argument{ 103 { 104 Name: "namespace", 105 Description: locale.Tl("projects_delete_namespace_description", "org/project"), 106 Value: params.Project, 107 Required: true, 108 }, 109 }, 110 func(_ *captain.Command, _ []string) error { 111 return runner.Run(params) 112 }, 113 ) 114 cmd.SetGroup(ProjectUsageGroup) 115 cmd.SetUnstable(true) 116 117 return cmd 118 } 119 120 func newMoveProjectsCommand(prime *primer.Values) *captain.Command { 121 runner := projects.NewMove(prime) 122 params := projects.NewMoveParams() 123 124 cmd := captain.NewCommand( 125 "move", 126 locale.Tl("projects_move_title", "Move a project"), 127 locale.Tl("projects_move_description", "Move the specified project to another organization"), 128 prime, 129 []*captain.Flag{}, 130 []*captain.Argument{ 131 { 132 Name: locale.Tl("projects_move_namespace", "org/project"), 133 Description: locale.Tl("projects_move_namespace_description", "The project to move"), 134 Value: params.Namespace, 135 Required: true, 136 }, 137 { 138 Name: locale.Tl("projects_move_new_org", "new-org-name"), 139 Description: locale.Tl("projects_move_org_description", "The organization to move the project to"), 140 Value: ¶ms.NewOwner, 141 Required: true, 142 }, 143 }, 144 func(_ *captain.Command, _ []string) error { 145 return runner.Run(params) 146 }, 147 ) 148 cmd.SetGroup(ProjectUsageGroup) 149 cmd.SetUnstable(true) 150 151 return cmd 152 }