diff --git a/imgbom/presenter/json/presenter.go b/imgbom/presenter/json/presenter.go index 0f75e0706..2de343dbf 100644 --- a/imgbom/presenter/json/presenter.go +++ b/imgbom/presenter/json/presenter.go @@ -22,19 +22,6 @@ func NewPresenter(catalog *pkg.Catalog, s scope.Scope) *Presenter { } } -// Source returns a DirSrc or ImgSrc -func (pres *Presenter) Source() interface{} { - srcObj := pres.scope.Source() - switch src := srcObj.(type) { - case scope.ImageSource: - return pres.scope.ImgSrc - case scope.DirSource: - return pres.scope.DirSrc - default: - return fmt.Errorf("unsupported source: %T", src) - } -} - type document struct { Artifacts []artifact `json:"artifacts"` Image image `json:"image"` @@ -74,24 +61,25 @@ func (pres *Presenter) Present(output io.Writer) error { Artifacts: make([]artifact, 0), } - src := pres.Source() - imgSrc, ok := src.(scope.ImageSource) - - // populate artifacts... - if ok { - tags := make([]string, len(imgSrc.Img.Metadata.Tags)) - for idx, tag := range imgSrc.Img.Metadata.Tags { + srcObj := pres.scope.Source() + switch src := srcObj.(type) { + case scope.ImageSource: + // populate artifacts... + tags := make([]string, len(src.Img.Metadata.Tags)) + for idx, tag := range src.Img.Metadata.Tags { tags[idx] = tag.String() } doc.Image = image{ - Digest: imgSrc.Img.Metadata.Digest, - Size: imgSrc.Img.Metadata.Size, - MediaType: string(imgSrc.Img.Metadata.MediaType), + Digest: src.Img.Metadata.Digest, + Size: src.Img.Metadata.Size, + MediaType: string(src.Img.Metadata.MediaType), Tags: tags, - Layers: make([]layer, len(imgSrc.Img.Layers)), + Layers: make([]layer, len(src.Img.Layers)), } - } else { + case scope.DirSource: doc.Source = pres.scope.DirSrc.Path + default: + return fmt.Errorf("unsupported source: %T", src) } for p := range pres.catalog.Enumerate() { diff --git a/imgbom/presenter/text/dirs/presenter.go b/imgbom/presenter/text/dirs/presenter.go deleted file mode 100644 index 8040b337c..000000000 --- a/imgbom/presenter/text/dirs/presenter.go +++ /dev/null @@ -1,45 +0,0 @@ -package text - -import ( - "fmt" - "io" - "text/tabwriter" - - "github.com/anchore/imgbom/imgbom/pkg" -) - -type Presenter struct { - catalog *pkg.Catalog - path string -} - -func NewPresenter(catalog *pkg.Catalog, path string) *Presenter { - return &Presenter{ - catalog: catalog, - path: path, - } -} - -// Present is a method that is in charge of writing to an output buffer -func (pres *Presenter) Present(output io.Writer) error { - // init the tabular writer - w := new(tabwriter.Writer) - w.Init(output, 0, 8, 0, '\t', tabwriter.AlignRight) - fmt.Fprintln(w, fmt.Sprintf("[Path: %s]", pres.path)) - - // populate artifacts... - // TODO: move this into a common package so that other text presenters can reuse - for p := range pres.catalog.Enumerate() { - fmt.Fprintln(w, fmt.Sprintf("[%s]", p.Name)) - fmt.Fprintln(w, " Version:\t", p.Version) - fmt.Fprintln(w, " Type:\t", p.Type.String()) - if p.Metadata != nil { - fmt.Fprintf(w, " Metadata:\t%+v\n", p.Metadata) - } - fmt.Fprintln(w, " Found by:\t", p.FoundBy) - fmt.Fprintln(w) - w.Flush() - } - - return nil -} diff --git a/imgbom/presenter/text/dirs/presenter_test.go b/imgbom/presenter/text/dirs/presenter_test.go deleted file mode 100644 index 20e9a62f8..000000000 --- a/imgbom/presenter/text/dirs/presenter_test.go +++ /dev/null @@ -1,53 +0,0 @@ -package text - -import ( - "bytes" - "flag" - "testing" - - "github.com/anchore/go-testutils" - "github.com/anchore/imgbom/imgbom/pkg" - "github.com/sergi/go-diff/diffmatchpatch" -) - -var update = flag.Bool("update", false, "update the *.golden files for json presenters") - -func TestTextPresenter(t *testing.T) { - var buffer bytes.Buffer - - catalog := pkg.NewCatalog() - - // populate catalog with test data - catalog.Add(pkg.Package{ - Name: "package-1", - Version: "1.0.1", - Type: pkg.DebPkg, - }) - catalog.Add(pkg.Package{ - Name: "package-2", - Version: "2.0.1", - Type: pkg.DebPkg, - }) - - pres := NewPresenter(catalog, "/some/path") - - // run presenter - err := pres.Present(&buffer) - if err != nil { - t.Fatal(err) - } - actual := buffer.Bytes() - - if *update { - testutils.UpdateGoldenFileContents(t, actual) - } - - var expected = testutils.GetGoldenFileContents(t) - - if !bytes.Equal(expected, actual) { - dmp := diffmatchpatch.New() - diffs := dmp.DiffMain(string(actual), string(expected), true) - t.Errorf("mismatched output:\n%s", dmp.DiffPrettyText(diffs)) - } - -} diff --git a/imgbom/presenter/text/dirs/test-fixtures/snapshot/TestJsonPresenter.golden b/imgbom/presenter/text/dirs/test-fixtures/snapshot/TestJsonPresenter.golden deleted file mode 100644 index ab2fd8317..000000000 --- a/imgbom/presenter/text/dirs/test-fixtures/snapshot/TestJsonPresenter.golden +++ /dev/null @@ -1 +0,0 @@ -{"artifacts":[{"name":"package-1","version":"1.0.1","type":"deb","cataloger":"","sources":[],"metadata":null},{"name":"package-2","version":"2.0.1","type":"deb","cataloger":"","sources":[],"metadata":null}],"Source":"/some/path"} \ No newline at end of file diff --git a/imgbom/presenter/text/dirs/test-fixtures/snapshot/TestTextPresenter.golden b/imgbom/presenter/text/dirs/test-fixtures/snapshot/TestTextPresenter.golden deleted file mode 100644 index f41bf461d..000000000 --- a/imgbom/presenter/text/dirs/test-fixtures/snapshot/TestTextPresenter.golden +++ /dev/null @@ -1,11 +0,0 @@ -[Path: /some/path] -[package-1] - Version: 1.0.1 - Type: deb - Found by: - -[package-2] - Version: 2.0.1 - Type: deb - Found by: -