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 }