Categorygithub.com/fancybits/extract
modulepackage
1.1.1
Repository: https://github.com/fancybits/extract.git
Documentation: pkg.go.dev

# README

Extract

Build Status GitHub license Godoc Reference

import "github.com/codeclysm/extract"

Package extract allows to extract archives in zip, tar.gz or tar.bz2 formats easily.

Most of the time you'll just need to call the proper function with a buffer and a destination:

data, _ := ioutil.ReadFile("path/to/file.tar.bz2")
buffer := bytes.NewBuffer(data)
extract.TarBz2(data, "/path/where/to/extract", nil)

Sometimes you'll want a bit more control over the files, such as extracting a subfolder of the archive. In this cases you can specify a renamer func that will change the path for every file:

var shift = func(path string) string {
    parts := strings.Split(path, string(filepath.Separator))
    parts = parts[1:]
    return strings.Join(parts, string(filepath.Separator))
}
extract.TarBz2(data, "/path/where/to/extract", shift)

If you don't know which archive you're dealing with (life really is always a surprise) you can use Archive, which will infer the type of archive from the first bytes

extract.Archive(data, "/path/where/to/extract", nil)

# Functions

Archive extracts a generic archived stream of data in the specified location.
Bz2 extracts a .bz2 or .tar.bz2 archived stream of data in the specified location.
Gz extracts a .gz or .tar.gz archived stream of data in the specified location.
Tar extracts a .tar archived stream of data in the specified location.
Zip extracts a .zip archived stream of data in the specified location.

# Type aliases

Renamer is a function that can be used to rename the files when you're extracting them.