Skip to content

Commit

Permalink
modified project list cmd (#260)
Browse files Browse the repository at this point in the history
Signed-off-by: ALTHAF <[email protected]>
  • Loading branch information
Althaf66 authored Nov 19, 2024
1 parent 6b49e56 commit e2a8d98
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 7 deletions.
23 changes: 19 additions & 4 deletions cmd/harbor/root/project/list.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package project

import (
"github.com/goharbor/go-client/pkg/sdk/v2.0/client/project"
"github.com/goharbor/harbor-cli/pkg/api"
"github.com/goharbor/harbor-cli/pkg/utils"
list "github.com/goharbor/harbor-cli/pkg/views/project/list"
Expand All @@ -9,15 +10,28 @@ import (
"github.com/spf13/viper"
)

// NewListProjectCommand creates a new `harbor list project` command
func ListProjectCommand() *cobra.Command {
var opts api.ListFlags

var private bool
var public bool
var projects project.ListProjectsOK
var err error
cmd := &cobra.Command{
Use: "list",
Short: "list project",
Run: func(cmd *cobra.Command, args []string) {
projects, err := api.ListProject(opts)
if private && public {
log.Fatal("Cannot specify both --private and --public flags")
} else if private {
opts.Public = false
projects, err = api.ListProject(opts)
} else if public {
opts.Public = true
projects, err = api.ListProject(opts)
} else {
projects, err = api.ListAllProjects(opts)
}

if err != nil {
log.Fatalf("failed to get projects list: %v", err)
}
Expand All @@ -35,7 +49,8 @@ func ListProjectCommand() *cobra.Command {
flags.StringVarP(&opts.Name, "name", "", "", "Name of the project")
flags.Int64VarP(&opts.Page, "page", "", 1, "Page number")
flags.Int64VarP(&opts.PageSize, "page-size", "", 10, "Size of per page")
flags.BoolVarP(&opts.Public, "public", "", false, "Project is public or private")
flags.BoolVarP(&private, "private", "", false, "Show only private projects")
flags.BoolVarP(&public, "public", "", false, "Show only public projects")
flags.StringVarP(&opts.Q, "query", "q", "", "Query string to query resources")
flags.StringVarP(&opts.Sort, "sort", "", "", "Sort the resource list in ascending or descending order")

Expand Down
16 changes: 16 additions & 0 deletions pkg/api/project_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,22 @@ func ListProject(opts ...ListFlags) (project.ListProjectsOK, error) {
return *response, nil
}

func ListAllProjects(opts ...ListFlags) (project.ListProjectsOK, error) {
ctx, client, err := utils.ContextWithClient()
if err != nil {
return project.ListProjectsOK{}, err
}
var listFlags ListFlags
if len(opts) > 0 {
listFlags = opts[0]
}
response, err := client.Project.ListProjects(ctx, &project.ListProjectsParams{Page: &listFlags.Page, PageSize: &listFlags.PageSize, Q: &listFlags.Q, Sort: &listFlags.Sort, Name: &listFlags.Name})
if err != nil {
return project.ListProjectsOK{}, err
}
return *response, nil
}

func LogsProject(projectName string) (*project.GetLogsOK, error) {
ctx, client, err := utils.ContextWithClient()
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion pkg/prompt/prompt.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ func GetRegistryNameFromUser() int64 {
func GetProjectNameFromUser() string {
projectName := make(chan string)
go func() {
response, _ := api.ListProject()
response, _ := api.ListAllProjects()
pview.ProjectList(response.Payload, projectName)

}()
Expand Down
4 changes: 2 additions & 2 deletions pkg/views/project/list/view.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@ import (

var columns = []table.Column{
{Title: "ID", Width: 6},
{Title: "Project Name", Width: 12},
{Title: "Project Name", Width: 20},
{Title: "Access Level", Width: 12},
{Title: "Type", Width: 12},
{Title: "Repo Count", Width: 12},
{Title: "Creation Time", Width: 30},
{Title: "Creation Time", Width: 18},
}

func ListProjects(projects []*models.Project) {
Expand Down

0 comments on commit e2a8d98

Please sign in to comment.