github.com/cloudfoundry-incubator/stembuild@v0.0.0-20211223202937-5b61d62226c6/package_stemcell/packagers/packager.go (about) 1 package packagers 2 3 import ( 4 "fmt" 5 "io" 6 ) 7 8 type Packager struct { 9 source Source 10 stemcellGenerator StemcellGenerator 11 } 12 13 //go:generate go run github.com/maxbrunsfeld/counterfeiter/v6 . Source 14 type Source interface { 15 ArtifactReader() (io.Reader, error) 16 } 17 18 //go:generate go run github.com/maxbrunsfeld/counterfeiter/v6 . StemcellGenerator 19 type StemcellGenerator interface { 20 Generate(reader io.Reader) error 21 } 22 23 func NewPackager(s Source, g StemcellGenerator) *Packager { 24 return &Packager{source: s, stemcellGenerator: g} 25 } 26 27 func (p *Packager) Package() error { 28 artifact, err := p.source.ArtifactReader() 29 if err != nil { 30 return fmt.Errorf("packager failed to retrieve artifact: %s", err) 31 } 32 err = p.stemcellGenerator.Generate(artifact) 33 if err != nil { 34 return fmt.Errorf("packager failed to generate stemcell: %s", err) 35 } 36 37 return nil 38 }