Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion cmd/harbor/root/artifact/delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ func DeleteArtifactCommand() *cobra.Command {
} else {
projectName, err = prompt.GetProjectNameFromUser()
if err != nil {
log.Errorf("failed to get project name: %v", utils.ParseHarborErrorMsg(err))
return fmt.Errorf("failed to get project name: %w", err)
}
repoName = prompt.GetRepoNameFromUser(projectName)
reference = prompt.GetReferenceFromUser(repoName, projectName)
Expand Down
10 changes: 5 additions & 5 deletions cmd/harbor/root/artifact/scan.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,29 +79,29 @@ func StopScanArtifactCommand() *cobra.Command {
Short: "Stop a scan of an artifact",
Long: `Stop a scan of an artifact in Harbor Repository`,
Example: `harbor artifact scan stop <project>/<repository>/<reference>`,
Run: func(cmd *cobra.Command, args []string) {
RunE: func(cmd *cobra.Command, args []string) error {
var err error
var projectName, repoName, reference string

if len(args) > 0 {
projectName, repoName, reference, err = utils.ParseProjectRepoReference(args[0])
if err != nil {
log.Errorf("failed to parse project/repo/reference: %v", err)
return fmt.Errorf("failed to parse project/repo/reference: %w", err)
}
} else {
var projectName string
projectName, err = prompt.GetProjectNameFromUser()
if err != nil {
log.Errorf("failed to get project name: %v", utils.ParseHarborErrorMsg(err))
return fmt.Errorf("failed to get project name: %w", err)
}
repoName = prompt.GetRepoNameFromUser(projectName)
reference = prompt.GetReferenceFromUser(repoName, projectName)
}

err = api.StopScanArtifact(projectName, repoName, reference)
if err != nil {
log.Errorf("failed to stop scan of artifact: %v", err)
return fmt.Errorf("failed to stop scan of artifact: %w", err)
}
return nil
},
}
return cmd
Expand Down
42 changes: 25 additions & 17 deletions cmd/harbor/root/artifact/tags.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,14 @@
package artifact

import (
"fmt"

"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/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"
)
Expand All @@ -46,29 +47,33 @@ func CreateTagsCmd() *cobra.Command {
Use: "create",
Short: "Create a tag of an artifact",
Example: `harbor artifact tags create <project>/<repository>/<reference> <tag>`,
Run: func(cmd *cobra.Command, args []string) {
RunE: func(cmd *cobra.Command, args []string) error {
var err error
var projectName, repoName, reference string
var tagName string
if len(args) > 0 {
projectName, repoName, reference, err = utils.ParseProjectRepoReference(args[0])
if err != nil {
log.Errorf("failed to parse project/repo/reference: %v", err)
return fmt.Errorf("failed to parse project/repo/reference: %w", err)
}
if len(args) < 2 {
return fmt.Errorf("missing tag argument")
}
tagName = args[1]
} else {
projectName, err = prompt.GetProjectNameFromUser()
if err != nil {
log.Errorf("failed to get project name: %v", utils.ParseHarborErrorMsg(err))
return fmt.Errorf("failed to get project name: %w", err)
}
repoName = prompt.GetRepoNameFromUser(projectName)
reference = prompt.GetReferenceFromUser(repoName, projectName)
create.CreateTagView(&tagName)
}
err = api.CreateTag(projectName, repoName, reference, tagName)
if err != nil {
log.Errorf("failed to create tag: %v", err)
return fmt.Errorf("failed to create tag: %w", err)
}
return nil
},
}

Expand All @@ -80,45 +85,44 @@ func ListTagsCmd() *cobra.Command {
Use: "list",
Short: "List tags of an artifact",
Example: `harbor artifact tags list <project>/<repository>/<reference>`,
Run: func(cmd *cobra.Command, args []string) {
RunE: func(cmd *cobra.Command, args []string) error {
var err error
var tags *artifact.ListTagsOK
var projectName, repoName, reference string

if len(args) > 0 {
projectName, repoName, reference, err = utils.ParseProjectRepoReference(args[0])
if err != nil {
log.Errorf("failed to parse project/repo/reference: %v", err)
return fmt.Errorf("failed to parse project/repo/reference: %w", err)
}
} else {
projectName, err = prompt.GetProjectNameFromUser()
if err != nil {
log.Errorf("failed to get project name: %v", utils.ParseHarborErrorMsg(err))
return fmt.Errorf("failed to get project name: %w", err)
}
repoName = prompt.GetRepoNameFromUser(projectName)
if repoName == "" {
return
return fmt.Errorf("repository name is required")
}
reference = prompt.GetReferenceFromUser(repoName, projectName)
}

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

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

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

Expand All @@ -130,29 +134,33 @@ func DeleteTagsCmd() *cobra.Command {
Use: "delete",
Short: "Delete a tag of an artifact",
Example: `harbor artifact tags delete <project>/<repository>/<reference> <tag>`,
Run: func(cmd *cobra.Command, args []string) {
RunE: func(cmd *cobra.Command, args []string) error {
var err error
var projectName, repoName, reference string
var tagName string
if len(args) > 0 {
projectName, repoName, reference, err = utils.ParseProjectRepoReference(args[0])
if err != nil {
log.Errorf("failed to parse project/repo/reference: %v", err)
return fmt.Errorf("failed to parse project/repo/reference: %w", err)
}
if len(args) < 2 {
return fmt.Errorf("missing tag argument")
}
tagName = args[1]
} else {
projectName, err = prompt.GetProjectNameFromUser()
if err != nil {
log.Errorf("failed to get project name: %v", utils.ParseHarborErrorMsg(err))
return fmt.Errorf("failed to get project name: %w", err)
}
repoName = prompt.GetRepoNameFromUser(projectName)
reference = prompt.GetReferenceFromUser(repoName, projectName)
tagName = prompt.GetTagFromUser(repoName, projectName, reference)
}
err = api.DeleteTag(projectName, repoName, reference, tagName)
if err != nil {
log.Errorf("failed to delete tag: %v", err)
return fmt.Errorf("failed to delete tag: %w", err)
}
return nil
},
}

Expand Down
21 changes: 10 additions & 11 deletions cmd/harbor/root/artifact/view.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,13 @@
package artifact

import (
"fmt"

"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"
)
Expand All @@ -30,51 +31,49 @@ func ViewArtifactCommmand() *cobra.Command {
Short: "Get information of an artifact",
Long: `Get information of an artifact`,
Example: `harbor artifact view <project>/<repository>:<tag> OR harbor artifact view <project>/<repository>@<digest>`,
Run: func(cmd *cobra.Command, args []string) {
RunE: func(cmd *cobra.Command, args []string) error {
var err error
var projectName, repoName, reference string
var artifact *artifact.GetArtifactOK

if len(args) > 0 {
projectName, repoName, reference, err = utils.ParseProjectRepoReference(args[0])
if err != nil {
log.Errorf("failed to parse project/repo/reference: %v", err)
return fmt.Errorf("failed to parse project/repo/reference: %w", err)
}
} else {
projectName, err = prompt.GetProjectNameFromUser()
if err != nil {
log.Errorf("failed to get project name: %v", utils.ParseHarborErrorMsg(err))
return
return fmt.Errorf("failed to get project name: %w", err)
}
repoName = prompt.GetRepoNameFromUser(projectName)
reference = prompt.GetReferenceFromUser(repoName, projectName)
}

if reference == "" {
if len(args) > 0 {
log.Errorf("Invalid artifact reference format: %s", args[0])
return fmt.Errorf("invalid artifact reference format: %s", args[0])
} else {
log.Error("Invalid artifact reference format: no arguments provided")
return fmt.Errorf("invalid artifact reference format: no arguments provided")
}
}

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

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

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

Expand Down
8 changes: 5 additions & 3 deletions cmd/harbor/root/cve/add.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,10 @@
package cve

import (
"fmt"

"github.com/goharbor/harbor-cli/pkg/api"
"github.com/goharbor/harbor-cli/pkg/views/cveallowlist/update"
log "github.com/sirupsen/logrus"
"github.com/spf13/cobra"
)

Expand All @@ -27,7 +28,7 @@ func AddCveAllowlistCommand() *cobra.Command {
Use: "add",
Short: "Add cve allowlist",
Long: "Create allowlist of CVEs to ignore during vulnerability scanning",
Run: func(cmd *cobra.Command, args []string) {
RunE: func(cmd *cobra.Command, args []string) error {
var err error
updateView := &update.UpdateView{
CveId: opts.CveId,
Expand All @@ -37,8 +38,9 @@ func AddCveAllowlistCommand() *cobra.Command {

err = updatecveView(updateView)
if err != nil {
log.Errorf("failed to add cveallowlist: %v", err)
return fmt.Errorf("failed to add cveallowlist: %w", err)
}
return nil
},
}

Expand Down
8 changes: 5 additions & 3 deletions cmd/harbor/root/instance/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,10 @@
package instance

import (
"fmt"

"github.com/goharbor/harbor-cli/pkg/api"
"github.com/goharbor/harbor-cli/pkg/views/instance/create"
log "github.com/sirupsen/logrus"
"github.com/spf13/cobra"
)

Expand All @@ -31,7 +32,7 @@ The instance can be an external service such as Dragonfly, Kraken, or any custom
You will need to provide the instance's name, vendor, endpoint, and optionally other details such as authentication and security options.`,
Example: ` harbor-cli instance create --name my-instance --provider Dragonfly --url http://dragonfly.local --description "My preheat provider instance" --enable=true`,
Args: cobra.NoArgs,
Run: func(cmd *cobra.Command, args []string) {
RunE: func(cmd *cobra.Command, args []string) error {
var err error
createView := &create.CreateView{
Name: opts.Name,
Expand All @@ -51,8 +52,9 @@ You will need to provide the instance's name, vendor, endpoint, and optionally o
}

if err != nil {
log.Errorf("failed to create instance: %v", err)
return fmt.Errorf("failed to create instance: %w", err)
}
return nil
},
}

Expand Down
11 changes: 6 additions & 5 deletions cmd/harbor/root/instance/delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,10 @@
package instance

import (
"fmt"

"github.com/goharbor/harbor-cli/pkg/api"
"github.com/goharbor/harbor-cli/pkg/prompt"
log "github.com/sirupsen/logrus"
"github.com/spf13/cobra"
)

Expand All @@ -30,15 +31,14 @@ If no argument is provided, you will be prompted to select an instance from a li
Example: ` harbor-cli instance delete my-instance
harbor-cli instance delete 12345`,
Args: cobra.MaximumNArgs(1),
Run: func(cmd *cobra.Command, args []string) {
RunE: func(cmd *cobra.Command, args []string) error {
var err error
var instanceName string

if instanceID != -1 {
instanceName, err = api.GetInstanceNameByID(instanceID)
if err != nil {
log.Errorf("%v", err)
return
return fmt.Errorf("failed to get instance name by id: %w", err)
}
} else if len(args) > 0 {
instanceName = args[0]
Expand All @@ -47,8 +47,9 @@ If no argument is provided, you will be prompted to select an instance from a li
}
err = api.DeleteInstance(instanceName)
if err != nil {
log.Errorf("failed to delete instance: %v", err)
return fmt.Errorf("failed to delete instance: %w", err)
}
return nil
},
}
cmd.Flags().Int64VarP(&instanceID, "id", "i", -1, "ID of the instance to delete")
Expand Down
Loading