archive

package
v0.0.0-...-2440f66 Latest Latest
Warning

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

Go to latest
Published: Dec 28, 2023 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Apply

func Apply(ctx context.Context, root string, r io.Reader, opts ...ApplyOpt) (int64, error)

Apply applies a tar stream of an OCI style diff tar. See https://github.com/opencontainers/image-spec/blob/main/layer.md#applying-changesets

func AufsConvertWhiteout

func AufsConvertWhiteout(_ *tar.Header, _ string) (bool, error)

AufsConvertWhiteout converts whiteout files for aufs.

func Diff

func Diff(ctx context.Context, a, b string, opts ...WriteDiffOpt) io.ReadCloser

Diff returns a tar stream of the computed filesystem difference between the provided directories.

Produces a tar using OCI style file markers for deletions. Deleted files will be prepended with the prefix ".wh.". This style is based off AUFS whiteouts. See https://github.com/opencontainers/image-spec/blob/main/layer.md

func OverlayConvertWhiteout

func OverlayConvertWhiteout(hdr *tar.Header, path string) (bool, error)

OverlayConvertWhiteout converts whiteout files for overlay.

func WriteDiff

func WriteDiff(ctx context.Context, w io.Writer, a, b string, opts ...WriteDiffOpt) error

WriteDiff writes a tar stream of the computed difference between the provided paths.

Produces a tar using OCI style file markers for deletions. Deleted files will be prepended with the prefix ".wh.". This style is based off AUFS whiteouts. See https://github.com/opencontainers/image-spec/blob/main/layer.md

Types

type ApplyOpt

type ApplyOpt func(options *ApplyOptions) error

ApplyOpt allows setting mutable archive apply properties on creation

func WithConvertWhiteout

func WithConvertWhiteout(c ConvertWhiteout) ApplyOpt

WithConvertWhiteout uses the convert function to convert the whiteout files.

func WithFilter

func WithFilter(f Filter) ApplyOpt

WithFilter uses the filter to select which files are to be extracted.

func WithNoSameOwner

func WithNoSameOwner() ApplyOpt

WithNoSameOwner is same as '--no-same-owner` in 'tar' command. It'll skip attempt to preserve the owner specified in the tar archive.

func WithParents

func WithParents(p []string) ApplyOpt

WithParents provides parent directories for resolving inherited attributes directory from the filesystem. Inherited attributes are searched from first to last, making the first element in the list the most immediate parent directory. NOTE: When applying to a filesystem which supports CoW, file attributes should be inherited by the filesystem.

type ApplyOptions

type ApplyOptions struct {
	Filter          Filter          // Filter tar headers
	ConvertWhiteout ConvertWhiteout // Convert whiteout files
	Parents         []string        // Parent directories to handle inherited attributes without CoW
	NoSameOwner     bool            // NoSameOwner will not attempt to preserve the owner specified in the tar archive.
	// contains filtered or unexported fields
}

ApplyOptions provides additional options for an Apply operation

type ChangeWriter

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

ChangeWriter provides tar stream from filesystem change information. The privided tar stream is styled as an OCI layer. Change information (add/modify/delete/unmodified) for each file needs to be passed to this writer through HandleChange method.

This should be used combining with continuity's diff computing functionality (e.g. `fs.Change` of github.com/containerd/continuity/fs).

See also https://github.com/opencontainers/image-spec/blob/main/layer.md for details about OCI layers

func NewChangeWriter

func NewChangeWriter(w io.Writer, source string, opts ...ChangeWriterOpt) *ChangeWriter

NewChangeWriter returns ChangeWriter that writes tar stream of the source directory to the privided writer. Change information (add/modify/delete/unmodified) for each file needs to be passed through HandleChange method.

func (*ChangeWriter) Close

func (cw *ChangeWriter) Close() error

Close closes this writer.

func (*ChangeWriter) HandleChange

func (cw *ChangeWriter) HandleChange(k fs.ChangeKind, p string, f os.FileInfo, err error) error

HandleChange receives filesystem change information and reflect that information to the result tar stream. This function implements `fs.ChangeFunc` of continuity (github.com/containerd/continuity/fs) and should be used with that package.

type ChangeWriterOpt

type ChangeWriterOpt func(cw *ChangeWriter)

ChangeWriterOpt can be specified in NewChangeWriter.

func WithModTimeUpperBound

func WithModTimeUpperBound(tm time.Time) ChangeWriterOpt

WithModTimeUpperBound sets the mod time upper bound.

func WithWhiteoutTime

func WithWhiteoutTime(tm time.Time) ChangeWriterOpt

WithWhiteoutTime sets the whiteout timestamp.

type ConvertWhiteout

type ConvertWhiteout func(*tar.Header, string) (bool, error)

ConvertWhiteout converts whiteout files from the archive

type Filter

type Filter func(*tar.Header) (bool, error)

Filter specific files from the archive

type WriteDiffOpt

type WriteDiffOpt func(options *WriteDiffOptions) error

WriteDiffOpt allows setting mutable archive write properties on creation

func WithSourceDateEpoch

func WithSourceDateEpoch(tm *time.Time) WriteDiffOpt

WithSourceDateEpoch specifies the SOURCE_DATE_EPOCH without touching the env vars.

type WriteDiffOptions

type WriteDiffOptions struct {
	ParentLayers []string // Windows needs the full list of parent layers

	// SourceDateEpoch specifies the following timestamps to provide control for reproducibility.
	//   - The upper bound timestamp of the diff contents
	//   - The timestamp of the whiteouts
	//
	// See also https://reproducible-builds.org/docs/source-date-epoch/ .
	SourceDateEpoch *time.Time
	// contains filtered or unexported fields
}

WriteDiffOptions provides additional options for a WriteDiff operation

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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