diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/bin/riki.rs | 21 | ||||
-rw-r--r-- | src/site.rs | 7 |
2 files changed, 28 insertions, 0 deletions
diff --git a/src/bin/riki.rs b/src/bin/riki.rs index 9749e3b..1455b45 100644 --- a/src/bin/riki.rs +++ b/src/bin/riki.rs @@ -32,6 +32,7 @@ fn real_main() -> Result<(), SiteError> { let args = Args::parse(); match args.command { Command::Build(cmd) => cmd.run()?, + Command::List(cmd) => cmd.run()?, } info!("riki ends OK"); @@ -47,6 +48,7 @@ struct Args { #[derive(Parser)] enum Command { Build(Build), + List(List) } #[derive(Parser)] @@ -92,3 +94,22 @@ impl Build { Ok(()) } } + +#[derive(Parser)] +struct List { + srcdir: PathBuf, +} + +impl List { + fn run(&self) -> Result<(), SiteError> { + let srcdir = canonicalize(&self.srcdir)?; + let mut site = Site::new(&srcdir, &srcdir); + site.scan()?; + let mut filenames = site.included_files().to_vec(); + filenames.sort_unstable(); + for filename in filenames { + println!("{}", filename.display()); + } + Ok(()) + } +} diff --git a/src/site.rs b/src/site.rs index 1a58801..1d1de60 100644 --- a/src/site.rs +++ b/src/site.rs @@ -13,6 +13,7 @@ pub struct Site { unprocessed_pages: Vec<UnprocessedPage>, markdown_pages: Vec<MarkdownPage>, files: Vec<PathBuf>, + included_files: Vec<PathBuf>, patterns: TokenPatterns, srcdir: PathBuf, destdir: PathBuf, @@ -29,6 +30,7 @@ impl Site { unprocessed_pages: vec![], markdown_pages: vec![], files: vec![], + included_files: vec![], patterns: TokenPatterns::default(), srcdir: srcdir.as_ref().into(), destdir: destdir.as_ref().into(), @@ -38,6 +40,7 @@ impl Site { pub fn scan(&mut self) -> Result<(), SiteError> { for filename in Self::all_files(&self.srcdir)? { + self.included_files.push(make_path_relative_to(&self.srcdir, &filename)); if Self::is_markdown(&filename) { let page = WikitextPage::read(&self.srcdir, &filename)?; self.add_wikitextpage(page); @@ -104,6 +107,10 @@ impl Site { &self.files } + pub fn included_files(&self) -> &[PathBuf] { + &self.included_files + } + pub fn input_filename(&self, filename: &Path) -> Result<PathBuf, SiteError> { Ok(join_subpath(&self.srcdir, filename)) } |