From 9f077f959967c8b6b394fb8dec9b73d5f224a587 Mon Sep 17 00:00:00 2001 From: Ben Pearce Date: Fri, 21 Oct 2022 09:42:53 +1000 Subject: [PATCH 1/2] small cleanup --- pkg/cmd/project/list/list.go | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/pkg/cmd/project/list/list.go b/pkg/cmd/project/list/list.go index 2cb752e2..681f1be5 100644 --- a/pkg/cmd/project/list/list.go +++ b/pkg/cmd/project/list/list.go @@ -1,7 +1,9 @@ package list import ( + "fmt" "github.com/MakeNowJust/heredoc/v2" + "github.com/OctopusDeploy/cli/pkg/constants" "github.com/OctopusDeploy/cli/pkg/factory" "github.com/OctopusDeploy/cli/pkg/output" "github.com/OctopusDeploy/go-octopusdeploy/v2/pkg/projects" @@ -13,10 +15,10 @@ func NewCmdList(f factory.Factory) *cobra.Command { Use: "list", Short: "List projects in Octopus Deploy", Long: "List projects in Octopus Deploy", - Example: heredoc.Doc(` - $ octopus project list - $ octopus project ls - `), + Example: fmt.Sprintf(heredoc.Doc(` + $ %s project list + $ %s project ls + `), constants.ExecutableName, constants.ExecutableName), Aliases: []string{"ls"}, RunE: func(cmd *cobra.Command, args []string) error { return listRun(cmd, f) @@ -47,7 +49,7 @@ func listRun(cmd *cobra.Command, f factory.Factory) error { Json: func(p *projects.Project) any { return ProjectAsJson{ Id: p.GetID(), - Name: p.Name, + Name: p.GetName(), Description: p.Description, } }, @@ -58,7 +60,7 @@ func listRun(cmd *cobra.Command, f factory.Factory) error { }, }, Basic: func(p *projects.Project) string { - return p.Name + return p.GetName() }, }) } From 2fdd25829900ceee54164858293198248ef9b503 Mon Sep 17 00:00:00 2001 From: Ben Pearce Date: Fri, 21 Oct 2022 09:43:07 +1000 Subject: [PATCH 2/2] feat: project-group list --- pkg/cmd/projectgroup/list/list.go | 66 +++++++++++++++++++++++++++ pkg/cmd/projectgroup/project-group.go | 2 + 2 files changed, 68 insertions(+) create mode 100644 pkg/cmd/projectgroup/list/list.go diff --git a/pkg/cmd/projectgroup/list/list.go b/pkg/cmd/projectgroup/list/list.go new file mode 100644 index 00000000..039916e3 --- /dev/null +++ b/pkg/cmd/projectgroup/list/list.go @@ -0,0 +1,66 @@ +package list + +import ( + "fmt" + "github.com/MakeNowJust/heredoc/v2" + "github.com/OctopusDeploy/cli/pkg/constants" + "github.com/OctopusDeploy/cli/pkg/factory" + "github.com/OctopusDeploy/cli/pkg/output" + "github.com/OctopusDeploy/go-octopusdeploy/v2/pkg/projectgroups" + "github.com/spf13/cobra" +) + +type ProjectGroupAsJson struct { + Id string `json:"Id"` + Name string `json:"Name"` + Description string `json:"Description"` +} + +func NewCmdList(f factory.Factory) *cobra.Command { + cmd := &cobra.Command{ + Use: "list", + Short: "List project groups in Octopus Deploy", + Long: "List project groups in Octopus Deploy", + Example: fmt.Sprintf(heredoc.Doc(` + $ %s project-group list + $ %s project-group ls + `), constants.ExecutableName, constants.ExecutableName), + Aliases: []string{"ls"}, + RunE: func(cmd *cobra.Command, args []string) error { + return listRun(cmd, f) + }, + } + + return cmd +} + +func listRun(cmd *cobra.Command, f factory.Factory) error { + client, err := f.GetSpacedClient() + if err != nil { + return err + } + + allProjects, err := client.ProjectGroups.GetAll() + if err != nil { + return err + } + + return output.PrintArray(allProjects, cmd, output.Mappers[*projectgroups.ProjectGroup]{ + Json: func(p *projectgroups.ProjectGroup) any { + return ProjectGroupAsJson{ + Id: p.GetID(), + Name: p.Name, + Description: p.Description, + } + }, + Table: output.TableDefinition[*projectgroups.ProjectGroup]{ + Header: []string{"NAME", "DESCRIPTION"}, + Row: func(p *projectgroups.ProjectGroup) []string { + return []string{output.Bold(p.Name), p.Description} + }, + }, + Basic: func(p *projectgroups.ProjectGroup) string { + return p.Name + }, + }) +} diff --git a/pkg/cmd/projectgroup/project-group.go b/pkg/cmd/projectgroup/project-group.go index 53410fb5..3779df8e 100644 --- a/pkg/cmd/projectgroup/project-group.go +++ b/pkg/cmd/projectgroup/project-group.go @@ -4,6 +4,7 @@ import ( "fmt" "github.com/MakeNowJust/heredoc/v2" createCmd "github.com/OctopusDeploy/cli/pkg/cmd/projectgroup/create" + listCmd "github.com/OctopusDeploy/cli/pkg/cmd/projectgroup/list" "github.com/OctopusDeploy/cli/pkg/constants" "github.com/OctopusDeploy/cli/pkg/constants/annotations" "github.com/OctopusDeploy/cli/pkg/factory" @@ -25,6 +26,7 @@ func NewCmdProjectGroup(f factory.Factory) *cobra.Command { } cmd.AddCommand(createCmd.NewCmdCreate(f)) + cmd.AddCommand(listCmd.NewCmdList(f)) return cmd }