summaryrefslogtreecommitdiff
path: root/src/page.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/page.rs')
-rw-r--r--src/page.rs36
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
+ }
}