Skip to content

Commit

Permalink
Support yaml output (#241)
Browse files Browse the repository at this point in the history
* Support yaml output for 'registry list'

Signed-off-by: JianMinTang <[email protected]>

* Use gofmt to format all code

Signed-off-by: JianMinTang <[email protected]>

* fix: Support YAML output for additional commands

Signed-off-by: JianMinTang <[email protected]>

* fix: Support YAML format on artiface and repo command

Signed-off-by: JianMinTang <[email protected]>

* fix: Implement a generic function to format output

Signed-off-by: JianMinTang <[email protected]>

* chore: fix the problem about golangci-lint

Signed-off-by: JianMinTang <[email protected]>

* AutoGenerate credential name in login (#250)

* generate credential name

Signed-off-by: bupd <[email protected]>

* feat: add support for the password-stdin flag in login flow

Signed-off-by: karanngi <[email protected]>

* fix deps

- fixes dependencies

Signed-off-by: bupd <[email protected]>

* return stdout for tests

Signed-off-by: bupd <[email protected]>

* update workflow

Signed-off-by: bupd <[email protected]>

---------

Signed-off-by: bupd <[email protected]>
Signed-off-by: karanngi <[email protected]>
Co-authored-by: karanngi <[email protected]>
Signed-off-by: JianMinTang <[email protected]>

* print test output to screen (#254)

print test output to screen

Signed-off-by: JianMinTang <[email protected]>

* Support table format for repo view and add some comments on repo list

Signed-off-by: JianMinTang <[email protected]>

Add more detail on repo view

Signed-off-by: JianMinTang <[email protected]>

Support table format on registry view

Signed-off-by: JianMinTang <[email protected]>

Support table format on project view

Signed-off-by: JianMinTang <[email protected]>

Fixed tags list

Signed-off-by: JianMinTang <[email protected]>

Support table format and YAML/JSON output on artifact view

Signed-off-by: JianMinTang <[email protected]>

Fixed alignment problem

Signed-off-by: JianMinTang <[email protected]>

Fixed the code format

Signed-off-by: JianMinTang <[email protected]>

* AutoGenerate credential name in login (#250)

* generate credential name

Signed-off-by: bupd <[email protected]>

* feat: add support for the password-stdin flag in login flow

Signed-off-by: karanngi <[email protected]>

* fix deps

- fixes dependencies

Signed-off-by: bupd <[email protected]>

* return stdout for tests

Signed-off-by: bupd <[email protected]>

* update workflow

Signed-off-by: bupd <[email protected]>

---------

Signed-off-by: bupd <[email protected]>
Signed-off-by: karanngi <[email protected]>
Co-authored-by: karanngi <[email protected]>
Signed-off-by: JianMinTang <[email protected]>

* print test output to screen (#254)

print test output to screen

Signed-off-by: JianMinTang <[email protected]>

* Support yaml output for 'registry list'

Signed-off-by: JianMinTang <[email protected]>

Use gofmt to format all code

Signed-off-by: JianMinTang <[email protected]>

fix: Support YAML output for additional commands

Signed-off-by: JianMinTang <[email protected]>

fix: Implement a generic function to format output

Signed-off-by: JianMinTang <[email protected]>

chore: fix the problem about golangci-lint

Signed-off-by: JianMinTang <[email protected]>

---------

Signed-off-by: JianMinTang <[email protected]>
Signed-off-by: bupd <[email protected]>
Signed-off-by: karanngi <[email protected]>
Co-authored-by: Prasanth B <[email protected]>
Co-authored-by: karanngi <[email protected]>
Co-authored-by: Vadim Bauer <[email protected]>
  • Loading branch information
4 people authored Nov 26, 2024
1 parent 5bbf322 commit c464871
Show file tree
Hide file tree
Showing 28 changed files with 562 additions and 178 deletions.
2 changes: 1 addition & 1 deletion cmd/harbor/root/artifact/cmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ func Artifact() *cobra.Command {

cmd.AddCommand(
ListArtifactCommand(),
InfoArtifactCommmand(),
ViewArtifactCommmand(),
DeleteArtifactCommand(),
ScanArtifactCommand(),
ArtifactTagsCmd(),
Expand Down
39 changes: 0 additions & 39 deletions cmd/harbor/root/artifact/info.go

This file was deleted.

25 changes: 18 additions & 7 deletions cmd/harbor/root/artifact/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
artifactViews "github.com/goharbor/harbor-cli/pkg/views/artifact/list"
log "github.com/sirupsen/logrus"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)

func ListArtifactCommand() *cobra.Command {
Expand All @@ -19,21 +20,31 @@ func ListArtifactCommand() *cobra.Command {
Args: cobra.MaximumNArgs(1),
Run: func(cmd *cobra.Command, args []string) {
var err error
var resp artifact.ListArtifactsOK
var artifacts artifact.ListArtifactsOK
var projectName, repoName string

if len(args) > 0 {
projectName, repoName := utils.ParseProjectRepo(args[0])
resp, err = api.ListArtifact(projectName, repoName, opts)
projectName, repoName = utils.ParseProjectRepo(args[0])
} else {
projectName := prompt.GetProjectNameFromUser()
repoName := prompt.GetRepoNameFromUser(projectName)
resp, err = api.ListArtifact(projectName, repoName, opts)
projectName = prompt.GetProjectNameFromUser()
repoName = prompt.GetRepoNameFromUser(projectName)
}

artifacts, err = api.ListArtifact(projectName, repoName, opts)

if err != nil {
log.Errorf("failed to list artifacts: %v", err)
}
artifactViews.ListArtifacts(resp.Payload)

FormatFlag := viper.GetString("output-format")
if FormatFlag != "" {
err = utils.PrintFormat(artifacts, FormatFlag)
if err != nil {
log.Error(err)
}
} else {
artifactViews.ListArtifacts(artifacts.Payload)
}
},
}

Expand Down
31 changes: 23 additions & 8 deletions cmd/harbor/root/artifact/tags.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,10 @@ import (
"github.com/goharbor/harbor-cli/pkg/prompt"
"github.com/goharbor/harbor-cli/pkg/utils"
"github.com/goharbor/harbor-cli/pkg/views/artifact/tags/create"
"github.com/goharbor/harbor-cli/pkg/views/artifact/tags/list"
log "github.com/sirupsen/logrus"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)

func ArtifactTagsCmd() *cobra.Command {
Expand Down Expand Up @@ -62,22 +64,35 @@ func ListTagsCmd() *cobra.Command {
Example: `harbor artifact tags list <project>/<repository>/<reference>`,
Run: func(cmd *cobra.Command, args []string) {
var err error
var tags *artifact.ListTagsOK
var projectName, repoName, reference string

var resp artifact.ListTagsOK
if len(args) > 0 {
projectName, repoName, reference := utils.ParseProjectRepoReference(args[0])
resp, err = api.ListTags(projectName, repoName, reference)
projectName, repoName, reference = utils.ParseProjectRepoReference(args[0])
} else {
projectName := prompt.GetProjectNameFromUser()
repoName := prompt.GetRepoNameFromUser(projectName)
reference := prompt.GetReferenceFromUser(repoName, projectName)
resp, err = api.ListTags(projectName, repoName, reference)
projectName = prompt.GetProjectNameFromUser()
repoName = prompt.GetRepoNameFromUser(projectName)
reference = prompt.GetReferenceFromUser(repoName, projectName)
}

tags, err = api.ListTags(projectName, repoName, reference)

if err != nil {
log.Errorf("failed to list tags: %v", err)
return
}

FormatFlag := viper.GetString("output-format")
if FormatFlag != "" {
err = utils.PrintFormat(tags, FormatFlag)
if err != nil {
log.Error(err)
return
}
} else {
list.ListTags(tags.Payload)
}

log.Info(resp.Payload)
},
}

Expand Down
55 changes: 55 additions & 0 deletions cmd/harbor/root/artifact/view.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package artifact

import (
"github.com/goharbor/go-client/pkg/sdk/v2.0/client/artifact"
"github.com/goharbor/harbor-cli/pkg/api"
"github.com/goharbor/harbor-cli/pkg/prompt"
"github.com/goharbor/harbor-cli/pkg/utils"
"github.com/goharbor/harbor-cli/pkg/views/artifact/view"
log "github.com/sirupsen/logrus"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)

func ViewArtifactCommmand() *cobra.Command {

cmd := &cobra.Command{
Use: "view",
Short: "Get information of an artifact",
Long: `Get information of an artifact`,
Example: `harbor artifact view <project>/<repository>/<reference>`,
Run: func(cmd *cobra.Command, args []string) {
var err error
var projectName, repoName, reference string
var artifact *artifact.GetArtifactOK

if len(args) > 0 {
projectName, repoName, reference = utils.ParseProjectRepoReference(args[0])
} else {
projectName = prompt.GetProjectNameFromUser()
repoName = prompt.GetRepoNameFromUser(projectName)
reference = prompt.GetReferenceFromUser(repoName, projectName)
}

artifact, err = api.ViewArtifact(projectName, repoName, reference)

if err != nil {
log.Errorf("failed to get info of an artifact: %v", err)
}

FormatFlag := viper.GetString("output-format")
if FormatFlag != "" {
err = utils.PrintFormat(artifact, FormatFlag)
if err != nil {
log.Error(err)
return
}
} else {
view.ViewArtifact(artifact.Payload)
}

},
}

return cmd
}
10 changes: 6 additions & 4 deletions cmd/harbor/root/project/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,13 @@ func ListProjectCommand() *cobra.Command {
}
FormatFlag := viper.GetString("output-format")
if FormatFlag != "" {
utils.PrintPayloadInJSONFormat(projects)
return
err = utils.PrintFormat(projects, FormatFlag)
if err != nil {
log.Error(err)
}
} else {
list.ListProjects(projects.Payload)
}

list.ListProjects(projects.Payload)
},
}

Expand Down
9 changes: 6 additions & 3 deletions cmd/harbor/root/project/logs.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,15 @@ func LogsProjectCommmand() *cobra.Command {
if err != nil {
log.Fatalf("failed to get project logs: %v", err)
}
auditLog.LogsProject(resp.Payload)

FormatFlag := viper.GetString("output-format")
if FormatFlag != "" {
utils.PrintPayloadInJSONFormat(resp)
return
err = utils.PrintFormat(resp, FormatFlag)
if err != nil {
log.Error(err)
}
} else {
auditLog.LogsProject(resp.Payload)
}

},
Expand Down
25 changes: 22 additions & 3 deletions cmd/harbor/root/project/view.go
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
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/prompt"
"github.com/goharbor/harbor-cli/pkg/utils"
"github.com/goharbor/harbor-cli/pkg/views/project/view"
log "github.com/sirupsen/logrus"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)

// GetProjectCommand creates a new `harbor get project` command
Expand All @@ -16,16 +20,31 @@ func ViewCommand() *cobra.Command {
Args: cobra.MaximumNArgs(1),
Run: func(cmd *cobra.Command, args []string) {
var err error
var projectName string
var project *project.GetProjectOK

if len(args) > 0 {
err = api.GetProject(args[0])
projectName = args[0]
} else {
projectName := prompt.GetProjectNameFromUser()
err = api.GetProject(projectName)
projectName = prompt.GetProjectNameFromUser()
}

project, err = api.GetProject(projectName)

if err != nil {
log.Errorf("failed to get project: %v", err)
return
}

FormatFlag := viper.GetString("output-format")
if FormatFlag != "" {
err = utils.PrintFormat(project, FormatFlag)
if err != nil {
log.Error(err)
return
}
} else {
view.ViewProjects(project.Payload)
}

},
Expand Down
2 changes: 1 addition & 1 deletion cmd/harbor/root/registry/cmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ func Registry() *cobra.Command {
}
cmd.AddCommand(
CreateRegistryCommand(),
InfoRegistryCommand(),
ViewRegistryCommand(),
DeleteRegistryCommand(),
ListRegistryCommand(),
UpdateRegistryCommand(),
Expand Down
34 changes: 0 additions & 34 deletions cmd/harbor/root/registry/info.go

This file was deleted.

9 changes: 6 additions & 3 deletions cmd/harbor/root/registry/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,13 @@ func ListRegistryCommand() *cobra.Command {
}
FormatFlag := viper.GetString("output-format")
if FormatFlag != "" {
utils.PrintPayloadInJSONFormat(registry)
return
err = utils.PrintFormat(registry, FormatFlag)
if err != nil {
log.Error(err)
}
} else {
list.ListRegistry(registry.Payload)
}
list.ListRegistry(registry.Payload)
},
}

Expand Down
Loading

0 comments on commit c464871

Please sign in to comment.