diff --git a/sift.go b/sift.go index 658d1cab..0aa1d660 100644 --- a/sift.go +++ b/sift.go @@ -34,6 +34,7 @@ import ( "github.com/svent/go-flags" "github.com/svent/go-nbreader" "github.com/svent/sift/gitignore" + "github.com/Datadog/zstd" "golang.org/x/crypto/ssh/terminal" ) @@ -424,6 +425,14 @@ func processFileTargets() { infile.Seek(0, 0) reader = infile } + } else if options.Zip && strings.HasSuffix(filepath, ".zst") { + rawReader := infile + reader = zstd.NewReader(rawReader) + if err != nil { + errorLogger.Printf("error decompressing file '%s', opening as normal file\n", infile.Name()) + infile.Seek(0, 0) + reader = infile + } } else if infile == os.Stdin && options.Multiline { reader = nbreader.NewNBReader(infile, InputBlockSize, nbreader.ChunkTimeout(MultilinePipeChunkTimeout), nbreader.Timeout(MultilinePipeTimeout))