Documentation
¶
Overview ¶
Package filewalker provides concurrent filesystem traversal with filtering and progress reporting. It builds upon the standard filepath.Walk functionality while adding concurrency, filtering, and monitoring capabilities.
Index ¶
- Constants
- func Walk(root string, walkFn filepath.WalkFunc) error
- func WalkLimit(ctx context.Context, root string, walkFn filepath.WalkFunc, limit int) error
- func WalkLimitWithFilter(ctx context.Context, root string, walkFn filepath.WalkFunc, limit int, ...) error
- func WalkLimitWithOptions(ctx context.Context, root string, walkFn filepath.WalkFunc, opts WalkOptions) error
- func WalkLimitWithProgress(ctx context.Context, root string, walkFn filepath.WalkFunc, limit int, ...) error
- type ErrorHandling
- type FilterOptions
- type LogLevel
- type MemoryLimit
- type ProgressFn
- type Stats
- type SymlinkHandling
- type WalkOptions
Constants ¶
const DefaultConcurrentWalks int = 100
DefaultConcurrentWalks defines the default number of concurrent workers when no specific limit is provided.
Variables ¶
This section is empty.
Functions ¶
func Walk ¶
Walk traverses a directory tree using the default concurrency limit. It's a convenience wrapper around WalkLimit.
func WalkLimit ¶
WalkLimit traverses a directory tree with a specified concurrency limit. It distributes work across a pool of goroutines while respecting context cancellation. Directories are processed synchronously so that a SkipDir result prevents descending.
func WalkLimitWithFilter ¶
func WalkLimitWithFilter(ctx context.Context, root string, walkFn filepath.WalkFunc, limit int, filter FilterOptions) error
WalkLimitWithFilter adds file filtering capabilities to the walk operation.
func WalkLimitWithOptions ¶
func WalkLimitWithOptions(ctx context.Context, root string, walkFn filepath.WalkFunc, opts WalkOptions) error
WalkLimitWithOptions provides the most flexible configuration, combining error handling, filtering, progress reporting, and optional custom logger/symlink handling.
func WalkLimitWithProgress ¶
func WalkLimitWithProgress(ctx context.Context, root string, walkFn filepath.WalkFunc, limit int, progressFn ProgressFn) error
WalkLimitWithProgress adds progress monitoring to the walk operation.
Types ¶
type ErrorHandling ¶
type ErrorHandling int
ErrorHandling defines how errors are handled during traversal.
const ( ErrorHandlingContinue ErrorHandling = iota // Continue on errors ErrorHandlingStop // Stop on first error ErrorHandlingSkip // Skip problematic files/dirs )
type FilterOptions ¶
type FilterOptions struct { MinSize int64 // Minimum file size in bytes MaxSize int64 // Maximum file size in bytes Pattern string // Glob pattern for matching files ExcludeDir []string // Directory patterns to exclude IncludeTypes []string // File extensions to include (e.g. ".txt", ".go") ModifiedAfter time.Time // Only include files modified after ModifiedBefore time.Time // Only include files modified before }
FilterOptions defines criteria for including/excluding files and directories.
type MemoryLimit ¶
type MemoryLimit struct { SoftLimit int64 // Pause processing when reached HardLimit int64 // Stop processing when reached }
MemoryLimit sets memory usage boundaries for the traversal.
type ProgressFn ¶
type ProgressFn func(stats Stats)
ProgressFn is called periodically with traversal statistics. Implementations must be thread-safe as this may be called concurrently.
type Stats ¶
type Stats struct { FilesProcessed int64 // Number of files processed DirsProcessed int64 // Number of directories processed EmptyDirs int64 // Number of empty directories BytesProcessed int64 // Total bytes processed ErrorCount int64 // Number of errors encountered ElapsedTime time.Duration // Total time elapsed AvgFileSize int64 // Average file size in bytes SpeedMBPerSec float64 // Processing speed in MB/s }
Stats holds traversal statistics that are updated atomically during the walk.
type SymlinkHandling ¶
type SymlinkHandling int
SymlinkHandling defines how symbolic links are processed.
const ( SymlinkFollow SymlinkHandling = iota // Follow symbolic links SymlinkIgnore // Ignore symbolic links SymlinkReport // Report links but don't follow )
type WalkOptions ¶
type WalkOptions struct { ErrorHandling ErrorHandling Filter FilterOptions Progress ProgressFn Logger *zap.Logger LogLevel LogLevel // New field for logging verbosity BufferSize int SymlinkHandling SymlinkHandling MemoryLimit MemoryLimit }
WalkOptions provides comprehensive configuration for the walk operation.