Skip to content

Commit

Permalink
Refactor digest calculation in commands
Browse files Browse the repository at this point in the history
  • Loading branch information
Sami Alajrami committed Nov 4, 2021
1 parent af794ed commit 453d4cc
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 29 deletions.
20 changes: 6 additions & 14 deletions cmd/reporter/artifact.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import (
"path/filepath"
"regexp"

"github.com/merkely-development/reporter/internal/digest"
"github.com/merkely-development/reporter/internal/requests"
"github.com/spf13/cobra"
)
Expand Down Expand Up @@ -71,22 +70,15 @@ func newArtifactCmd(out io.Writer) *cobra.Command {
o.metadata.Sha256 = o.inputSha256
} else {
var err error
switch o.artifactType {
case "dir":
o.metadata.Filename = filepath.Base(args[0])
o.metadata.Sha256, err = digest.DirSha256(args[0], false)
case "file":
o.metadata.Filename = filepath.Base(args[0])
o.metadata.Sha256, err = digest.FileSha256(args[0])
case "docker":
o.metadata.Filename = args[0]
o.metadata.Sha256, err = digest.DockerImageSha256(args[0])
default:
return fmt.Errorf("%s is not a supported artifact type", o.artifactType)
}
o.metadata.Sha256, err = GetSha256Digest(o.artifactType, args[0])
if err != nil {
return err
}
if o.artifactType == "dir" || o.artifactType == "file" {
o.metadata.Filename = filepath.Base(args[0])
} else {
o.metadata.Filename = args[0]
}
}

url := fmt.Sprintf("%s/api/v1/projects/%s/%s/artifacts/", global.host, global.owner, o.pipelineName)
Expand Down
20 changes: 20 additions & 0 deletions cmd/reporter/cli_utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"fmt"
"os"

"github.com/merkely-development/reporter/internal/digest"
"github.com/pkg/errors"
"github.com/spf13/cobra"
)
Expand Down Expand Up @@ -89,6 +90,25 @@ func NoArgs(cmd *cobra.Command, args []string) error {
return nil
}

// GetSha256Digest calculates the sha256 digest of an artifact.
// Supported artifact types are: dir, file, docker
func GetSha256Digest(artifactType, name string) (string, error) {
var err error
var fingerprint string
switch artifactType {
case "file":
fingerprint, err = digest.FileSha256(name)
case "dir":
fingerprint, err = digest.DirSha256(name, false)
case "docker":
fingerprint, err = digest.DockerImageSha256(name)
default:
return "", fmt.Errorf("%s is not a supported artifact type", artifactType)
}

return fingerprint, err
}

func handleError(err error) {
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %+v", err)
Expand Down
16 changes: 1 addition & 15 deletions cmd/reporter/fingerprint.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import (
"io"
"log"

"github.com/merkely-development/reporter/internal/digest"
"github.com/spf13/cobra"
)

Expand Down Expand Up @@ -34,24 +33,11 @@ func newFingerprintCmd(out io.Writer) *cobra.Command {
return nil
},
RunE: func(cmd *cobra.Command, args []string) error {
var err error
var fingerprint string
switch o.artifactType {
case "file":
fingerprint, err = digest.FileSha256(args[0])
case "dir":
fingerprint, err = digest.DirSha256(args[0], false)
case "docker":
fingerprint, err = digest.DockerImageSha256(args[0])
default:
return fmt.Errorf("%s is not a supported artifact type", o.artifactType)
}

fingerprint, err := GetSha256Digest(o.artifactType, args[0])
if err != nil {
return err
}
fmt.Print(fingerprint)

return nil
},
}
Expand Down

0 comments on commit 453d4cc

Please sign in to comment.