github.com/buildpacks/pack@v0.33.3-0.20240516162812-884dd1837311/internal/fakes/fake_extension_blob.go (about) 1 package fakes 2 3 import ( 4 "bytes" 5 "io" 6 "time" 7 8 "github.com/BurntSushi/toml" 9 10 "github.com/buildpacks/pack/pkg/archive" 11 "github.com/buildpacks/pack/pkg/blob" 12 "github.com/buildpacks/pack/pkg/buildpack" 13 ) 14 15 type fakeExtensionBlob struct { 16 descriptor buildpack.Descriptor 17 chmod int64 18 } 19 20 func NewFakeExtensionBlob(descriptor buildpack.Descriptor, chmod int64) (blob.Blob, error) { 21 return &fakeExtensionBlob{ 22 descriptor: descriptor, 23 chmod: chmod, 24 }, nil 25 } 26 27 func (b *fakeExtensionBlob) Open() (reader io.ReadCloser, err error) { 28 buf := &bytes.Buffer{} 29 if err = toml.NewEncoder(buf).Encode(b.descriptor); err != nil { 30 return nil, err 31 } 32 33 tarBuilder := archive.TarBuilder{} 34 tarBuilder.AddFile("extension.toml", b.chmod, time.Now(), buf.Bytes()) 35 tarBuilder.AddDir("bin", b.chmod, time.Now()) 36 tarBuilder.AddFile("bin/build", b.chmod, time.Now(), []byte("build-contents")) 37 tarBuilder.AddFile("bin/detect", b.chmod, time.Now(), []byte("detect-contents")) 38 39 return tarBuilder.Reader(archive.DefaultTarWriterFactory()), err 40 }