diff options
author | Lars Wirzenius <liw@liw.fi> | 2022-08-03 04:56:28 +0000 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2022-08-03 04:56:28 +0000 |
commit | 3b951869505b7f1515b9c4b78f19455a235246bd (patch) | |
tree | e46e55b6a97aed6931e01da4695512735006d532 /src/page.rs | |
parent | 65c453b9b8499eb4a273bfd6f013608b9af23844 (diff) | |
parent | 6b39def739b0f5174d6c842bd798df179541db60 (diff) | |
download | riki-3b951869505b7f1515b9c4b78f19455a235246bd.tar.gz |
Merge branch 'mtime' into 'main'
feat: set output file modification times
See merge request larswirzenius/riki!30
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 + } } |