aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/pkg/tar.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-01-07 21:36:47 +0900
committerOphestra <cat@gensokyo.uk>2026-01-07 21:36:47 +0900
commite8dda70c417a78647ae31930acc0a98ecf5ad097 (patch)
tree1993e74d929cd9494f9abf593d7e9b07ec253b3a /internal/pkg/tar.go
parent7ea4e8b643dbe4931e3cb3072d180ee066a28dd1 (diff)
internal/pkg: return reader for files
This improves efficiency for cache hits. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/pkg/tar.go')
-rw-r--r--internal/pkg/tar.go14
1 files changed, 9 insertions, 5 deletions
diff --git a/internal/pkg/tar.go b/internal/pkg/tar.go
index 33f26f3a..240a3980 100644
--- a/internal/pkg/tar.go
+++ b/internal/pkg/tar.go
@@ -2,7 +2,6 @@ package pkg
import (
"archive/tar"
- "bytes"
"compress/bzip2"
"compress/gzip"
"context"
@@ -78,12 +77,17 @@ func (a *tarArtifact) Cure(c *CureContext) (err error) {
var tr io.ReadCloser
{
- var data []byte
- data, err = c.LoadData(a.f)
- if err != nil {
+
+ if tr, err = c.OpenFile(a.f); err != nil {
return
}
- tr = io.NopCloser(bytes.NewReader(data))
+ defer func(f io.ReadCloser) {
+ closeErr := f.Close()
+ if err == nil {
+ err = closeErr
+ }
+ }(tr)
+ tr = io.NopCloser(tr)
}
defer func() {