Expand description
§ScanDirectory
§File: Indexing/Scan/ScanDirectory.rs
§Role in Air Architecture
Provides directory scanning functionality for the File Indexer service, handling recursive traversal of directories to discover files for indexing.
§Primary Responsibility
Scan directories recursively to discover files matching include patterns while respecting exclude patterns and filesystem limits.
§Secondary Responsibilities
- Validate directory permissions before scanning
- Parallel file enumeration for performance
- Skip directories like node_modules, target, .git
- Collect files with metadata for batch processing
§Dependencies
External Crates:
ignore- .gitignore-aware directory walkingtokio- Async runtime for I/O operations
Internal Modules:
crate::Result- Error handling typecrate::AirError- Error typescrate::Configuration::IndexingConfig- Indexing configuration
§Dependents
Indexing::mod::FileIndexer- Main file indexer implementationIndexing::Background::StartWatcher- Background task scanning
§VSCode Pattern Reference
Inspired by VSCode’s file system scanning in
src/vs/base/common/files/
§Security Considerations
- Path traversal protection through canonicalization
- Symbolic link following disabled by default
- Depth limits prevent infinite recursion
- Permission checking before access
§Performance Considerations
- Parallel directory scanning with limited concurrency
- Batch collection of files for processing
- Lazy evaluation with ignore crate
- Early filtering by file patterns
§Error Handling Strategy
Scan operations log warnings for individual errors and continue, returning a result only if the top-level operation fails.
§Thread Safety
Scan operations are designed to be called from async tasks and return collectable results for parallel processing.
Structs§
- Directory
Statistics - Directory statistics
- Scan
Directory Result - Scan directory result with statistics
Functions§
- GetDefault
Exclude Patterns - Get default exclude patterns for directory scanning
- GetDirectory
Statistics - Get file count statistics for a directory without full scan
- Matches
Pattern - Check if filename matches a single pattern
- Matches
Patterns - Check if file path matches any of the provided patterns
- Scan
AndRemove Deleted - Scan a directory and remove deleted files from index
- Scan
Directories Parallel - Parallel scan of multiple directories
- Scan
Directory - Scan a directory recursively and collect matching files