diff options
author | Lars Wirzenius <liw@liw.fi> | 2022-10-15 10:03:51 +0300 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2022-10-15 10:03:51 +0300 |
commit | 5a0e8a1a7bdf9b8dbe8e425643aaef259624fa69 (patch) | |
tree | 80c018d12d87427c9b1e974a6c1407b4131546cd | |
parent | de906b71f75bcf34f824f238479403bfa0cfbecb (diff) | |
download | riki-5a0e8a1a7bdf9b8dbe8e425643aaef259624fa69.tar.gz |
fix: name of SourceDir
Sponsored-by: author
-rw-r--r-- | src/site.rs | 4 | ||||
-rw-r--r-- | src/srcdir.rs | 43 |
2 files changed, 30 insertions, 17 deletions
diff --git a/src/site.rs b/src/site.rs index b314627..c522fcc 100644 --- a/src/site.rs +++ b/src/site.rs @@ -3,7 +3,7 @@ use crate::git::git_whatchanged; use crate::name::{Name, NameBuilder, Names}; use crate::page::{MarkdownPage, UnprocessedPage, WikitextPage}; use crate::parser::WikitextParser; -use crate::srcdir::{PathFilter, SouceDir}; +use crate::srcdir::{PathFilter, SourceDir}; use crate::token::TokenPatterns; use crate::util::make_relative_link; use log::{debug, info, trace}; @@ -140,7 +140,7 @@ impl Site { } fn all_files(&self) -> Result<Vec<Name>, SiteError> { - let mut srcdir = SouceDir::new(self.builder.srcdir()); + let mut srcdir = SourceDir::new(self.builder.srcdir()); srcdir.scan()?; let filter = PathFilter::new(Self::EXCLUDE_SUBSTRINGS, Self::EXCLUDE_ENDS); diff --git a/src/srcdir.rs b/src/srcdir.rs index 7958c60..1b87500 100644 --- a/src/srcdir.rs +++ b/src/srcdir.rs @@ -3,31 +3,45 @@ use log::trace; use std::path::{Path, PathBuf}; use walkdir::WalkDir; -pub struct SouceDir { +pub struct SourceDir { path: PathBuf, files: Vec<PathBuf>, + artificial: bool, } -impl SouceDir { +impl SourceDir { pub fn new(path: &Path) -> Self { Self { path: path.into(), files: vec![], + artificial: false, } } + pub fn insert_for_tests<P>(&mut self, path: P) + where + P: AsRef<Path> + { + self.artificial = true; + self.insert(path.as_ref()); + } + pub fn insert(&mut self, path: &Path) { trace!("Source Dir::insert: path={}", path.display()); self.files.push(path.into()); } pub fn scan(&mut self) -> Result<(), SiteError> { - trace!("SourceDir::scan: find files in {}", self.path.display()); - for e in WalkDir::new(&self.path) { - let e = e.map_err(|err| SiteError::WalkDir(self.path.clone(), err))?; - let path = e.path(); - trace!("SourceDir::scan: found {}", path.display()); - self.insert(path); + if self.artificial { + trace!("SourceDir::scan: artificial mode, not actually scanning"); + } else { + trace!("SourceDir::scan: find files in {}", self.path.display()); + for e in WalkDir::new(&self.path) { + let e = e.map_err(|err| SiteError::WalkDir(self.path.clone(), err))?; + let path = e.path(); + trace!("SourceDir::scan: found {}", path.display()); + self.insert(path); + } } Ok(()) } @@ -59,10 +73,9 @@ impl PathFilter { self.excluded_suffixes.push(s); } - pub fn is_included<P>(&self, path: P) -> bool where - P: AsRef<Path> + P: AsRef<Path>, { let path = path.as_ref().to_string_lossy(); for pat in self.excluded_suffixes.iter() { @@ -85,33 +98,33 @@ mod test { #[test] fn includes_dotgit_by_default() { - let filter = PathFilter::default(); + let filter = PathFilter::default(); assert!(filter.is_included(".git")); } #[test] fn excludes_dotgit_if_requested() { - let mut filter = PathFilter::default(); + let mut filter = PathFilter::default(); filter.exclude_substring(".git"); assert!(!filter.is_included(".git")); } #[test] fn includes_footilde_by_default() { - let filter = PathFilter::default(); + let filter = PathFilter::default(); assert!(filter.is_included("foo~")); } #[test] fn includes_footildebar_if_tilde_suffix_is_excluded() { - let mut filter = PathFilter::default(); + let mut filter = PathFilter::default(); filter.exclude_suffix("~"); assert!(filter.is_included("foo~bar")); } #[test] fn excludes_footilde_if_tilde_suffix_is_excluded() { - let mut filter = PathFilter::default(); + let mut filter = PathFilter::default(); filter.exclude_suffix("~"); assert!(!filter.is_included("foo~")); } |