walker

package
v0.0.0-...-0265167 Latest Latest
Warning

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

Go to latest
Published: Jul 18, 2024 License: BSD-2-Clause Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrSkipNode = errors.New("skip this node")

ErrSkipNode is returned by WalkFunc when a dir node should not be walked.

Functions

func NewSnapshotSizeRewriter

func NewSnapshotSizeRewriter(rewriteNode NodeRewriteFunc) (*TreeRewriter, QueryRewrittenSizeFunc)

func Walk

func Walk(ctx context.Context, repo restic.BlobLoader, root restic.ID, visitor WalkVisitor) error

Walk calls walkFn recursively for each node in root. If walkFn returns an error, it is passed up the call stack. The trees in ignoreTrees are not walked. If walkFn ignores trees, these are added to the set.

Types

type BlobLoadSaver

type BlobLoadSaver interface {
	restic.BlobSaver
	restic.BlobLoader
}

type FailedTreeRewriteFunc

type FailedTreeRewriteFunc func(nodeID restic.ID, path string, err error) (restic.ID, error)

type NodeRewriteFunc

type NodeRewriteFunc func(node *restic.Node, path string) *restic.Node

type QueryRewrittenSizeFunc

type QueryRewrittenSizeFunc func() SnapshotSize

type RewriteOpts

type RewriteOpts struct {
	// return nil to remove the node
	RewriteNode NodeRewriteFunc
	// decide what to do with a tree that could not be loaded. Return nil to remove the node. By default the load error is returned which causes the operation to fail.
	RewriteFailedTree FailedTreeRewriteFunc

	AllowUnstableSerialization bool
	DisableNodeCache           bool
}

type SnapshotSize

type SnapshotSize struct {
	FileCount uint
	FileSize  uint64
}

type TreeRewriter

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

func NewTreeRewriter

func NewTreeRewriter(opts RewriteOpts) *TreeRewriter

func (*TreeRewriter) RewriteTree

func (t *TreeRewriter) RewriteTree(ctx context.Context, repo BlobLoadSaver, nodepath string, nodeID restic.ID) (newNodeID restic.ID, err error)

type WalkFunc

type WalkFunc func(parentTreeID restic.ID, path string, node *restic.Node, nodeErr error) (err error)

WalkFunc is the type of the function called for each node visited by Walk. Path is the slash-separated path from the root node. If there was a problem loading a node, err is set to a non-nil error. WalkFunc can chose to ignore it by returning nil.

When the special value ErrSkipNode is returned and node is a dir node, it is not walked. When the node is not a dir node, the remaining items in this tree are skipped.

type WalkVisitor

type WalkVisitor struct {
	// If the node is a `dir`, it will be entered afterwards unless `ErrSkipNode`
	// was returned. This function is mandatory
	ProcessNode WalkFunc
	// Optional callback
	LeaveDir func(path string)
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL
JackTT - Gopher 🇻🇳