diff options
Diffstat (limited to 'src/page.rs')
-rw-r--r-- | src/page.rs | 36 |
1 files changed, 30 insertions, 6 deletions
diff --git a/src/page.rs b/src/page.rs index d2f144a..41a8584 100644 --- a/src/page.rs +++ b/src/page.rs @@ -2,10 +2,11 @@ use crate::error::SiteError; use crate::html::{parse, Content, Element, ElementTag, HtmlPage}; use crate::parser::WikitextParser; use crate::site::Site; -use crate::util::{join_subpath, make_path_relative_to}; +use crate::util::{get_mtime, join_subpath, make_path_relative_to}; use crate::wikitext::Snippet; use log::{info, trace}; use std::path::{Path, PathBuf}; +use std::time::SystemTime; #[derive(Debug, Eq, PartialEq)] pub struct WikitextPage { @@ -29,7 +30,12 @@ impl WikitextPage { .to_string(); let data = std::fs::read(filename).map_err(|e| SiteError::FileRead(filename.into(), e))?; let wikitext = String::from_utf8(data).map_err(|e| SiteError::Utf8(filename.into(), e))?; - let meta = MetaBuilder::default().name(name).path(absolute).build(); + let mtime = get_mtime(filename)?; + let meta = MetaBuilder::default() + .name(name) + .path(absolute) + .mtime(mtime) + .build(); Ok(Self::new(meta, wikitext)) } @@ -122,17 +128,24 @@ pub struct PageMeta { name: String, title: Option<String>, path: PathBuf, + mtime: SystemTime, } impl PageMeta { - fn new(name: String, title: Option<String>, path: PathBuf) -> Self { + fn new(name: String, title: Option<String>, path: PathBuf, mtime: SystemTime) -> Self { trace!( - "PageMeta: name={:?} title={:?} path={:?}", + "PageMeta: name={:?} title={:?} path={:?} mtime={:?}", name, title, - path + path, + mtime, ); - Self { name, title, path } + Self { + name, + title, + path, + mtime, + } } pub fn destination_filename(&self, destdir: &Path) -> PathBuf { @@ -159,6 +172,10 @@ impl PageMeta { pub fn path(&self) -> &Path { &self.path } + + pub fn mtime(&self) -> SystemTime { + self.mtime + } } #[derive(Debug, Default)] @@ -166,6 +183,7 @@ pub struct MetaBuilder { name: String, title: Option<String>, path: Option<PathBuf>, + mtime: Option<SystemTime>, } impl MetaBuilder { @@ -174,6 +192,7 @@ impl MetaBuilder { self.name, self.title, self.path.expect("path set on MetaBuilder"), + self.mtime.expect("mtime set on MetaBuilder"), ) } @@ -191,4 +210,9 @@ impl MetaBuilder { self.path = Some(path); self } + + pub fn mtime(mut self, mtime: SystemTime) -> Self { + self.mtime = Some(mtime); + self + } } |