diff options
Diffstat (limited to 'internal/pkg/file.go')
| -rw-r--r-- | internal/pkg/file.go | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/internal/pkg/file.go b/internal/pkg/file.go index c2093d6b..149ca817 100644 --- a/internal/pkg/file.go +++ b/internal/pkg/file.go @@ -25,6 +25,12 @@ var _ KnownChecksum = new(fileArtifactNamed) // String returns the caller-supplied reporting name. func (a *fileArtifactNamed) String() string { return a.name } +// Params writes the caller-supplied reporting name and the file body. +func (a *fileArtifactNamed) Params(ctx *IContext) { + ctx.WriteString(a.name) + ctx.Write(a.fileArtifact) +} + // NewFile returns a [FileArtifact] that cures into a caller-supplied byte slice. // // Caller must not modify data after NewFile returns. @@ -39,8 +45,22 @@ func NewFile(name string, data []byte) FileArtifact { // Kind returns the hardcoded [Kind] constant. func (*fileArtifact) Kind() Kind { return KindFile } -// Params writes the result of Cure. -func (a *fileArtifact) Params(ctx *IContext) { ctx.GetHash().Write(*a) } +// Params writes an empty string and the file body. +func (a *fileArtifact) Params(ctx *IContext) { + ctx.WriteString("") + ctx.Write(*a) +} + +func init() { + register(KindFile, func(r *IRReader) Artifact { + name := r.ReadString() + data := r.ReadStringBytes() + if _, ok := r.Finalise(); !ok { + panic(ErrExpectedChecksum) + } + return NewFile(name, data) + }) +} // Dependencies returns a nil slice. func (*fileArtifact) Dependencies() []Artifact { return nil } |
