Documentation ¶
Index ¶
- Variables
- func FlateCompressor(level int) func(w io.Writer) (io.WriteCloser, error)
- func FlateDecompressor() func(r io.Reader) io.ReadCloser
- func StdFlateCompressor(level int) func(w io.Writer) (io.WriteCloser, error)
- func StdFlateDecompressor() func(r io.Reader) io.ReadCloser
- type Archiver
- type ArchiverOption
- type Extractor
- type ExtractorOption
Constants ¶
This section is empty.
Variables ¶
var ( ErrMinConcurrency = errors.New("concurrency must be at least 1") ErrMinBufferSize = errors.New("buffer size option cannot be less than -1") )
Functions ¶
func FlateCompressor ¶
FlateCompressor returns a pooled performant zip.Compressor configured to a specified compression level. Invalid flate levels will panic.
func FlateDecompressor ¶
func FlateDecompressor() func(r io.Reader) io.ReadCloser
FlateDecompressor returns a pooled performant zip.Decompressor.
func StdFlateCompressor ¶
StdFlateCompressor returns a pooled standard library zip.Compressor configured to a specified compression level. Invalid flate levels will panic.
func StdFlateDecompressor ¶
func StdFlateDecompressor() func(r io.Reader) io.ReadCloser
StdFlateDecompressor returns a pooled standard library zip.Decompressor.
Types ¶
type Archiver ¶
type Archiver struct {
// contains filtered or unexported fields
}
Archiver is an opinionated Zip archiver.
Only regular files, symlinks and directories are supported. Only files that are children of the specified chroot directory will be archived.
Access permissions, ownership (unix) and modification times are preserved.
func NewArchiver ¶
NewArchiver returns a new Archiver.
func (*Archiver) RegisterCompressor ¶
func (a *Archiver) RegisterCompressor(method uint16, comp zip.Compressor)
RegisterCompressor registers custom compressors for a specified method ID. The common methods Store and Deflate are built in.
type ArchiverOption ¶
type ArchiverOption func(*archiverOptions) error
ArchiverOption is an option used when creating an archiver.
func WithArchiverBufferSize ¶ added in v0.1.2
func WithArchiverBufferSize(n int) ArchiverOption
WithArchiverBufferSize sets the buffer size for each file to be compressed concurrently. If a compressed file's data exceeds the buffer size, a temporary file is written (to the stage directory) to hold the additional data. The default is 2 mebibytes, so if concurrency is 16, 32 mebibytes of memory will be allocated.
If set to -1, no buffer will be used and all compressed file content will be written to temporary files before being written back to the zip file.
func WithArchiverConcurrency ¶
func WithArchiverConcurrency(n int) ArchiverOption
WithArchiverConcurrency will set the maximum number of files to be compressed concurrently. The default is set to runtime.NumCPU().
func WithArchiverMethod ¶
func WithArchiverMethod(method uint16) ArchiverOption
WithArchiverMethod sets the zip method to be used for compressible files.
func WithArchiverOffset ¶
func WithArchiverOffset(n int64) ArchiverOption
WithArchiverOffset sets the offset of the beginning of the zip data. This should be used when zip data is appended to an existing file.
func WithStageDirectory ¶
func WithStageDirectory(dir string) ArchiverOption
WithStageDirectory sets the directory to be used to stage compressed files before they're written to the archive. The default is the directory to be archived.
type Extractor ¶
type Extractor struct {
// contains filtered or unexported fields
}
Extractor is an opinionated Zip file extractor.
Files are extracted in parallel. Only regular files, symlinks and directories are supported. Files can only be extracted to the specified chroot directory.
Access permissions, ownership (unix) and modification times are preserved.
func NewExtractor ¶
func NewExtractor(filename, chroot string, opts ...ExtractorOption) (*Extractor, error)
NewExtractor opens a zip file and returns a new extractor.
Close() should be called to close the extractor's underlying zip.Reader when done.
func NewExtractorFromReader ¶ added in v0.1.1
func NewExtractorFromReader(r io.ReaderAt, size int64, chroot string, opts ...ExtractorOption) (*Extractor, error)
NewExtractor returns a new extractor, reading from the reader provided.
The size of the archive should be provided.
Unlike with NewExtractor(), calling Close() on the extractor is unnecessary.
func (*Extractor) Extract ¶
Extract extracts files, creates symlinks and directories from the archive.
func (*Extractor) RegisterDecompressor ¶
func (e *Extractor) RegisterDecompressor(method uint16, dcomp zip.Decompressor)
RegisterDecompressor allows custom decompressors for a specified method ID. The common methods Store and Deflate are built in.
type ExtractorOption ¶
type ExtractorOption func(*extractorOptions) error
ExtractorOption is an option used when creating an extractor.
func WithExtractorChownErrorHandler ¶
func WithExtractorChownErrorHandler(fn func(name string, err error) error) ExtractorOption
WithExtractorChownErrorHandler sets an error handler to be called if errors are encountered when trying to preserve ownership of extracted files. Returning nil will continue extraction, returning any error will cause Extract() to error.
func WithExtractorConcurrency ¶
func WithExtractorConcurrency(n int) ExtractorOption
WithExtractorConcurrency will set the maximum number of files being extracted concurrently. The default is GOMAXPROCS.