30 lines
951 B
Go
30 lines
951 B
Go
package getter
|
|
|
|
// Decompressor defines the interface that must be implemented to add
|
|
// support for decompressing a type.
|
|
type Decompressor interface {
|
|
// Decompress should decompress src to dst. dir specifies whether dst
|
|
// is a directory or single file. src is guaranteed to be a single file
|
|
// that exists. dst is not guaranteed to exist already.
|
|
Decompress(dst, src string, dir bool) error
|
|
}
|
|
|
|
// Decompressors is the mapping of extension to the Decompressor implementation
|
|
// that will decompress that extension/type.
|
|
var Decompressors map[string]Decompressor
|
|
|
|
func init() {
|
|
tbzDecompressor := new(TarBzip2Decompressor)
|
|
tgzDecompressor := new(TarGzipDecompressor)
|
|
|
|
Decompressors = map[string]Decompressor{
|
|
"bz2": new(Bzip2Decompressor),
|
|
"gz": new(GzipDecompressor),
|
|
"tar.bz2": tbzDecompressor,
|
|
"tar.gz": tgzDecompressor,
|
|
"tbz2": tbzDecompressor,
|
|
"tgz": tgzDecompressor,
|
|
"zip": new(ZipDecompressor),
|
|
}
|
|
}
|