Golang bindings for the unarr library from sumatrapdf.
unarr is a decompression library and CLI for RAR, TAR, ZIP and 7z archives.
See https://pkg.go.dev/github.com/gen2brain/go-unarr
- extlib- use external libunarr library
- pkgconfig- enable pkg-config (used with- extlib)
- static- use static library (used with- pkgconfig)
go install github.com/gen2brain/go-unarr/cmd/unarr@latestunarr ./example.7z ./example/For one-off builds:
go build -o ./unarr ./cmd/unarr/*.goFor multi-platform cross-compile builds:
goreleaser --snapshot --skip-publish --rm-distgo get -v github.com/gen2brain/go-unarra, err := unarr.NewArchive("test.7z")
if err != nil {
    panic(err)
}
defer a.Close()err := a.Entry()
if err != nil {
    panic(err)
}
data, err := a.ReadAll()
if err != nil {
    panic(err)
}list, err := a.List()
if err != nil {
    panic(err)
}err := a.EntryFor("filename.txt")
if err != nil {
    panic(err)
}
data, err := a.ReadAll()
if err != nil {
    panic(err)
}err := a.Entry()
if err != nil {
    panic(err)
}
data := make([]byte, 8)
n, err := a.Read(data)
if err != nil {
    panic(err)
}for {
    err := a.Entry()
    if err != nil {
        if err == io.EOF {
            break
        } else {
            panic(err)
        }
    }
    data, err := a.ReadAll()
    if err != nil {
        panic(err)
    }
}_, err := a.Extract("/tmp/path")
if err != nil {
    panic(err)
}