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:       &params.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:       &params.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:       &params.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:       &params.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  }