diff --git a/deb/deb.go b/deb/deb.go index b0ff3fe302..8ce1371f4e 100644 --- a/deb/deb.go +++ b/deb/deb.go @@ -16,6 +16,7 @@ import ( "github.com/aptly-dev/aptly/pgp" "github.com/kjk/lzma" + "github.com/klauspost/compress/zstd" "github.com/smira/go-xz" ) @@ -74,6 +75,13 @@ func GetControlFileFromDeb(packageFile string) (Stanza, error) { } defer unxz.Close() tarInput = unxz + case "control.tar.zst": + unzstd, err := zstd.NewReader(bufReader) + if err != nil { + return nil, errors.Wrapf(err, "unable to unzstd %s from %s", header.Name, packageFile) + } + defer unzstd.Close() + tarInput = unzstd default: return nil, fmt.Errorf("unsupported tar compression in %s: %s", packageFile, header.Name) } @@ -189,6 +197,13 @@ func GetContentsFromDeb(file io.Reader, packageFile string) ([]string, error) { unlzma := lzma.NewReader(bufReader) defer unlzma.Close() tarInput = unlzma + case "data.tar.zst": + unzstd, err := zstd.NewReader(bufReader) + if err != nil { + return nil, errors.Wrapf(err, "unable to unzstd %s from %s", header.Name, packageFile) + } + defer unzstd.Close() + tarInput = unzstd default: return nil, fmt.Errorf("unsupported tar compression in %s: %s", packageFile, header.Name) } diff --git a/go.mod b/go.mod index a9b0b9758d..4896574f1f 100644 --- a/go.mod +++ b/go.mod @@ -14,6 +14,7 @@ require ( github.com/h2non/filetype v1.0.5 github.com/jlaffaye/ftp v0.0.0-20180404123514-2403248fa8cc // indirect github.com/kjk/lzma v0.0.0-20161016003348-3fd93898850d + github.com/klauspost/compress v1.13.6 github.com/mattn/go-colorable v0.1.2 // indirect github.com/mattn/go-runewidth v0.0.2 // indirect github.com/mattn/go-shellwords v1.0.2 diff --git a/go.sum b/go.sum index a5fd4a1cb5..238081ff1f 100644 --- a/go.sum +++ b/go.sum @@ -32,6 +32,8 @@ github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5i github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/kjk/lzma v0.0.0-20161016003348-3fd93898850d h1:RnWZeH8N8KXfbwMTex/KKMYMj0FJRCF6tQubUuQ02GM= github.com/kjk/lzma v0.0.0-20161016003348-3fd93898850d/go.mod h1:phT/jsRPBAEqjAibu1BurrabCBNTYiVI+zbmyCZJY6Q= +github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc= +github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/mattn/go-colorable v0.1.2 h1:/bC9yWikZXAL9uJdulbSfyVNIR3n3trXl+v8+1sx8mU= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-isatty v0.0.8 h1:HLtExJ+uU2HOZ+wI0Tt5DtUDrx8yhUqDcp7fYERX4CE=