diff --git a/imgbom/presenter/presenter.go b/imgbom/presenter/presenter.go index 5170c6d57..2e1da0db3 100644 --- a/imgbom/presenter/presenter.go +++ b/imgbom/presenter/presenter.go @@ -8,30 +8,50 @@ import ( json_imgs "github.com/anchore/imgbom/imgbom/presenter/json/imgs" text_dirs "github.com/anchore/imgbom/imgbom/presenter/text/dirs" text_imgs "github.com/anchore/imgbom/imgbom/presenter/text/imgs" - "github.com/anchore/stereoscope/pkg/image" + "github.com/anchore/imgbom/imgbom/scope" ) type Presenter interface { Present(io.Writer) error } -func GetImgPresenter(option Option, img *image.Image, catalog *pkg.Catalog) Presenter { - switch option { - case JSONPresenter: - return json_imgs.NewPresenter(img, catalog) - case TextPresenter: - return text_imgs.NewPresenter(img, catalog) +// GetPresenter returns a presenter for images or directories +func GetPresenter(option Option, s scope.Scope, catalog *pkg.Catalog) Presenter { + src := s.Source() + + switch src.(type) { + case scope.DirSource: + return GetDirPresenter(option, s, catalog) + case scope.ImageSource: + return GetImgPresenter(option, s, catalog) default: return nil } } -func GetDirPresenter(option Option, path string, catalog *pkg.Catalog) Presenter { +// GetImgPresenter returns a Json or Text presenter for images +func GetImgPresenter(option Option, s scope.Scope, c *pkg.Catalog) Presenter { + src := s.Source() + img := src.(scope.ImageSource).Img switch option { case JSONPresenter: - return json_dirs.NewPresenter(catalog, path) + return json_imgs.NewPresenter(img, c) case TextPresenter: - return text_dirs.NewPresenter(catalog, path) + return text_imgs.NewPresenter(img, c) + default: + return nil + } +} + +// GetDirPresenter returns a Json or Text presenter for directories +func GetDirPresenter(option Option, s scope.Scope, c *pkg.Catalog) Presenter { + src := s.Source() + path := src.(scope.DirSource).Path + switch option { + case JSONPresenter: + return json_dirs.NewPresenter(c, path) + case TextPresenter: + return text_dirs.NewPresenter(c, path) default: return nil }