github.com/buildpacks/pack@v0.33.3-0.20240516162812-884dd1837311/internal/inspectimage/writer/factory.go (about) 1 package writer 2 3 import ( 4 "fmt" 5 6 "github.com/buildpacks/pack/internal/inspectimage" 7 "github.com/buildpacks/pack/pkg/client" 8 9 "github.com/buildpacks/pack/pkg/logging" 10 11 "github.com/buildpacks/pack/internal/style" 12 ) 13 14 type Factory struct{} 15 16 type InspectImageWriter interface { 17 Print( 18 logger logging.Logger, 19 sharedInfo inspectimage.GeneralInfo, 20 local, remote *client.ImageInfo, 21 localErr, remoteErr error, 22 ) error 23 } 24 25 func NewFactory() *Factory { 26 return &Factory{} 27 } 28 29 func (f *Factory) Writer(kind string, bom bool) (InspectImageWriter, error) { 30 if bom { 31 switch kind { 32 case "human-readable", "json": 33 return NewJSONBOM(), nil 34 case "yaml": 35 return NewYAMLBOM(), nil 36 } 37 } else { 38 switch kind { 39 case "human-readable": 40 return NewHumanReadable(), nil 41 case "json": 42 return NewJSON(), nil 43 case "yaml": 44 return NewYAML(), nil 45 case "toml": 46 return NewTOML(), nil 47 } 48 } 49 50 return nil, fmt.Errorf("output format %s is not supported", style.Symbol(kind)) 51 }