diff options
Diffstat (limited to 'internal/pkg/tar.go')
| -rw-r--r-- | internal/pkg/tar.go | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/internal/pkg/tar.go b/internal/pkg/tar.go index 474df034..1215adbd 100644 --- a/internal/pkg/tar.go +++ b/internal/pkg/tar.go @@ -4,7 +4,6 @@ import ( "archive/tar" "compress/bzip2" "compress/gzip" - "encoding/binary" "errors" "fmt" "io" @@ -29,7 +28,7 @@ type tarArtifact struct { // Caller-supplied backing tarball. f Artifact // Compression on top of the tarball. - compression uint64 + compression uint32 } // tarArtifactNamed embeds tarArtifact for a [fmt.Stringer] tarball. @@ -47,7 +46,7 @@ func (a *tarArtifactNamed) String() string { return a.name + "-unpack" } // NewTar returns a new [Artifact] backed by the supplied [Artifact] and // compression method. The source [Artifact] must be compatible with // [TContext.Open]. -func NewTar(a Artifact, compression uint64) Artifact { +func NewTar(a Artifact, compression uint32) Artifact { ta := tarArtifact{a, compression} if s, ok := a.(fmt.Stringer); ok { if name := s.String(); name != "" { @@ -62,7 +61,7 @@ func NewHTTPGetTar( hc *http.Client, url string, checksum Checksum, - compression uint64, + compression uint32, ) Artifact { return NewTar(NewHTTPGet(hc, url, checksum), compression) } @@ -71,8 +70,16 @@ func NewHTTPGetTar( func (a *tarArtifact) Kind() Kind { return KindTar } // Params writes compression encoded in little endian. -func (a *tarArtifact) Params(ctx *IContext) { - ctx.GetHash().Write(binary.LittleEndian.AppendUint64(nil, a.compression)) +func (a *tarArtifact) Params(ctx *IContext) { ctx.WriteUint32(a.compression) } + +func init() { + register(KindTar, func(r *IRReader) Artifact { + a := NewTar(r.Next(), r.ReadUint32()) + if _, ok := r.Finalise(); ok { + panic(ErrUnexpectedChecksum) + } + return a + }) } // Dependencies returns a slice containing the backing file. |
