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  }