internal/pkg: decompress xz streams
Test / Create distribution (push) Successful in 59s
Test / Sandbox (push) Successful in 2m54s
Test / Hakurei (push) Successful in 4m48s
Test / Sandbox (race detector) (push) Successful in 5m59s
Test / Hakurei (race detector) (push) Successful in 7m35s
Test / ShareFS (push) Successful in 7m42s
Test / Flake checks (push) Successful in 1m18s

This uses a port of the public domain xz implementation.

Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
cat
2026-07-25 14:03:34 +09:00
parent e26914cd6f
commit e5abf51296
80 changed files with 4203 additions and 0 deletions
+14
View File
@@ -7,6 +7,7 @@ import (
"io"
"os"
"hakurei.app/internal/xz"
"hakurei.app/internal/zstd"
)
@@ -17,6 +18,8 @@ const (
Bzip2
// Zstd denotes a stream compressed via [zstd].
Zstd
// XZ denotes a stream compressed via [xz].
XZ
)
// A decompressArtifact is a [FileArtifact] decompressing a backing
@@ -127,6 +130,17 @@ func (a *decompressArtifact) Cure(r *RContext) (io.ReadCloser, error) {
io.Closer
}{zstd.NewReader(br), br}, nil
case XZ:
var _dr io.Reader
if _dr, err = xz.NewReader(br, 0); err != nil {
_ = br.Close()
return nil, err
}
return struct {
io.Reader
io.Closer
}{_dr, br}, nil
default:
return nil, os.ErrInvalid
}