# README
Extract
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.