archive

package
v0.1.3-0...-36aafeb Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 7, 2014 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ChangeModify = iota
	ChangeAdd
	ChangeDelete
)

Variables

This section is empty.

Functions

func ApplyLayer

func ApplyLayer(dest string, layer Archive) error

ApplyLayer parses a diff in the standard layer format from `layer`, and applies it to the directory `dest`.

func ChangesSize

func ChangesSize(newDir string, changes []Change) int64

func CmdStream

func CmdStream(cmd *exec.Cmd, input io.Reader) (io.Reader, error)

CmdStream executes a command, and returns its stdout as a stream. If the command fails to run or doesn't complete successfully, an error will be returned, including anything written on stderr.

func CompressStream

func CompressStream(dest io.WriteCloser, compression Compression) (io.WriteCloser, error)

func CopyFileWithTar

func CopyFileWithTar(src, dst string) (err error)

CopyFileWithTar emulates the behavior of the 'cp' command-line for a single file. It copies a regular file from path `src` to path `dst`, and preserves all its metadata.

If `dst` ends with a trailing slash '/', the final destination path will be `dst/base(src)`.

func CopyWithTar

func CopyWithTar(src, dst string) error

CopyWithTar creates a tar archive of filesystem path `src`, and unpacks it at filesystem path `dst`. The archive is streamed directly with fixed buffering and no intermediary disk IO.

func DecompressStream

func DecompressStream(archive io.Reader) (io.Reader, error)

func LUtimesNano

func LUtimesNano(path string, ts []syscall.Timespec) error

func Tar

func Tar(path string, compression Compression) (io.Reader, error)

Tar creates an archive from the directory at `path`, and returns it as a stream of bytes.

func TarFilter

func TarFilter(srcPath string, options *TarOptions) (io.Reader, error)

Tar creates an archive from the directory at `path`, only including files whose relative paths are included in `filter`. If `filter` is nil, then all files are included.

func TarUntar

func TarUntar(src string, dst string) error

TarUntar is a convenience function which calls Tar and Untar, with the output of one piped into the other. If either Tar or Untar fails, TarUntar aborts and returns the error.

func Untar

func Untar(archive io.Reader, dest string, options *TarOptions) error

Untar reads a stream of bytes from `archive`, parses it as a tar archive, and unpacks it into the directory at `path`. The archive may be compressed with one of the following algorithms:

identity (uncompressed), gzip, bzip2, xz.

FIXME: specify behavior when target path exists vs. doesn't exist.

func UntarPath

func UntarPath(src, dst string) error

UntarPath is a convenience function which looks for an archive at filesystem path `src`, and unpacks it at `dst`.

Types

type Archive

type Archive io.Reader

func ExportChanges

func ExportChanges(dir string, changes []Change) (Archive, error)

type Change

type Change struct {
	Path string
	Kind ChangeType
}

func Changes

func Changes(layers []string, rw string) ([]Change, error)

func ChangesDirs

func ChangesDirs(newDir, oldDir string) ([]Change, error)

Compare two directories and generate an array of Change objects describing the changes

func (*Change) String

func (change *Change) String() string

type ChangeType

type ChangeType int

type Compression

type Compression int
const (
	Uncompressed Compression = iota
	Bzip2
	Gzip
	Xz
)

func DetectCompression

func DetectCompression(source []byte) Compression

func (*Compression) Extension

func (compression *Compression) Extension() string

type FileInfo

type FileInfo struct {
	// contains filtered or unexported fields
}

func (*FileInfo) Changes

func (info *FileInfo) Changes(oldInfo *FileInfo) []Change

func (*FileInfo) LookUp

func (root *FileInfo) LookUp(path string) *FileInfo

type TarOptions

type TarOptions struct {
	Includes    []string
	Compression Compression
}

type TempArchive

type TempArchive struct {
	*os.File
	Size int64 // Pre-computed from Stat().Size() as a convenience
}

func NewTempArchive

func NewTempArchive(src Archive, dir string) (*TempArchive, error)

NewTempArchive reads the content of src into a temporary file, and returns the contents of that file as an archive. The archive can only be read once - as soon as reading completes, the file will be deleted.

func (*TempArchive) Read

func (archive *TempArchive) Read(data []byte) (int, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL