From e5abf51296fa1405c4a6314eafc1b97d247c5b60 Mon Sep 17 00:00:00 2001 From: Ophestra Date: Sat, 25 Jul 2026 14:03:03 +0900 Subject: internal/pkg: decompress xz streams This uses a port of the public domain xz implementation. Signed-off-by: Ophestra --- internal/pkg/compress.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'internal/pkg/compress.go') diff --git a/internal/pkg/compress.go b/internal/pkg/compress.go index 62faf4fc..22f990f1 100644 --- a/internal/pkg/compress.go +++ b/internal/pkg/compress.go @@ -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 } -- cgit v1.3.1