github.com/YousefHaggyHeroku/pack@v1.5.5/internal/layer/writer_factory.go (about)

     1  package layer
     2  
     3  import (
     4  	"archive/tar"
     5  	"fmt"
     6  	"io"
     7  
     8  	ilayer "github.com/buildpacks/imgutil/layer"
     9  
    10  	"github.com/YousefHaggyHeroku/pack/internal/archive"
    11  )
    12  
    13  type WriterFactory struct {
    14  	os string
    15  }
    16  
    17  func NewWriterFactory(imageOS string) (*WriterFactory, error) {
    18  	if imageOS != "linux" && imageOS != "windows" {
    19  		return nil, fmt.Errorf("provided image OS '%s' must be either 'linux' or 'windows'", imageOS)
    20  	}
    21  
    22  	return &WriterFactory{os: imageOS}, nil
    23  }
    24  
    25  func (f *WriterFactory) NewWriter(fileWriter io.Writer) archive.TarWriter {
    26  	if f.os == "windows" {
    27  		return ilayer.NewWindowsWriter(fileWriter)
    28  	}
    29  
    30  	// Linux images use tar.Writer
    31  	return tar.NewWriter(fileWriter)
    32  }