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  }