summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2023-01-07 10:15:46 +0200
committerLars Wirzenius <liw@liw.fi>2023-01-07 10:15:46 +0200
commitb2da20d1a9a93bcd87a3ec38c7657b62a1990abb (patch)
treebd6eee5ccc6799b74d14d64d2192b8dc41b1869c
parent947b9b54d61dc4f9c08f2cfc987dbf74942b9217 (diff)
downloadriki-b2da20d1a9a93bcd87a3ec38c7657b62a1990abb.tar.gz
refactor: move ParseUnixTimestamp into src/git.rs
Sponsored-by: author
-rw-r--r--src/error.rs6
-rw-r--r--src/git.rs8
2 files changed, 10 insertions, 4 deletions
diff --git a/src/error.rs b/src/error.rs
index 640c023..dc2679f 100644
--- a/src/error.rs
+++ b/src/error.rs
@@ -9,6 +9,9 @@ pub enum SiteError {
#[error(transparent)]
Util(#[from] crate::util::UtilError),
+ #[error(transparent)]
+ Git(#[from] crate::git::GitError),
+
#[error("could not read file: {0}")]
FileRead(PathBuf, #[source] std::io::Error),
@@ -48,9 +51,6 @@ pub enum SiteError {
#[error("attempt to use definition lists in Markdown: line {0}, column {1}")]
DefinitionList(usize, usize),
- #[error("failed to parse Unix timetamp: {0}")]
- ParseUnixTimestamp(String, #[source] std::num::ParseIntError),
-
#[error("faileed to invoked git with subcommand {0} in {1}")]
GitInvoke(String, PathBuf, #[source] std::io::Error),
diff --git a/src/git.rs b/src/git.rs
index 89e84db..c824bfa 100644
--- a/src/git.rs
+++ b/src/git.rs
@@ -5,6 +5,12 @@ use std::path::{Path, PathBuf};
use std::process::Command;
use std::time::{Duration, SystemTime, UNIX_EPOCH};
+#[derive(Debug, thiserror::Error)]
+pub enum GitError {
+ #[error("failed to parse Unix timetamp: {0}")]
+ ParseUnixTimestamp(String, #[source] std::num::ParseIntError),
+}
+
pub fn git(args: &[&str], cwd: &Path) -> Result<String, SiteError> {
assert!(!args.is_empty());
let output = Command::new("git")
@@ -34,7 +40,7 @@ pub fn git_whatchanged(cwd: &Path) -> Result<HashMap<PathBuf, SystemTime>, SiteE
let secs = caps.name("secs").unwrap().as_str();
let timestamp = secs
.parse::<u64>()
- .map_err(|e| SiteError::ParseUnixTimestamp(secs.into(), e))?;
+ .map_err(|e| GitError::ParseUnixTimestamp(secs.into(), e))?;
mtime = Some(UNIX_EPOCH + Duration::new(timestamp, 0));
} else if let Some(caps) = filepat.captures(line) {
let flag = caps.name("flag").unwrap().as_str();