pub struct Scanner<'a> { /* private fields */ }Expand description
Scans pack directories and matches files against rules.
Implementations§
Source§impl<'a> Scanner<'a>
impl<'a> Scanner<'a>
pub fn new(fs: &'a dyn Fs) -> Self
Sourcepub fn scan_pack(
&self,
pack: &Pack,
rules: &[Rule],
pack_ignore: &[String],
) -> Result<Vec<RuleMatch>>
pub fn scan_pack( &self, pack: &Pack, rules: &[Rule], pack_ignore: &[String], ) -> Result<Vec<RuleMatch>>
Scan a pack directory and return all rule matches.
Walks the pack directory (non-recursively for top-level, but
directories matched by the directory pattern are included as
single entries). Skips hidden files (except .config), special
files (.dodot.toml, .dodotignore), and files matching
pack-level ignore patterns.
This is a convenience wrapper over [walk_pack] + [match_entries].
Sourcepub fn walk_pack(
&self,
pack_path: &Path,
ignore_patterns: &[String],
) -> Result<Vec<PackEntry>>
pub fn walk_pack( &self, pack_path: &Path, ignore_patterns: &[String], ) -> Result<Vec<PackEntry>>
Walk a pack directory and return raw file entries.
Skips hidden files (except .config), special files
(.dodot.toml, .dodotignore), and files matching
pack-level ignore patterns.
Walk the pack’s top-level children only.
Returns depth-1 entries (files and directories directly under
the pack root). Nested files/dirs are not returned — handlers
that receive a directory entry decide internally whether and how
to recurse (e.g. symlink falls back to per-file mode when
protected_paths or targets reach inside the dir).
Preprocessing is the one exception: it still needs to see nested
files to discover templates (*.tmpl) and the like. Use
Scanner::walk_pack_recursive for that use case.
Sourcepub fn walk_pack_recursive(
&self,
pack_path: &Path,
ignore_patterns: &[String],
) -> Result<Vec<PackEntry>>
pub fn walk_pack_recursive( &self, pack_path: &Path, ignore_patterns: &[String], ) -> Result<Vec<PackEntry>>
Walk the pack recursively. Only used by the preprocessing pipeline.
Sourcepub fn match_entries(
&self,
entries: &[PackEntry],
rules: &[Rule],
pack_name: &str,
) -> Vec<RuleMatch>
pub fn match_entries( &self, entries: &[PackEntry], rules: &[Rule], pack_name: &str, ) -> Vec<RuleMatch>
Match a list of entries against rules, returning rule matches.
This is the second half of the scan pipeline: given raw entries
(from [walk_pack] or from preprocessing), match each against
the rule set to determine which handler processes it.