From b2da20d1a9a93bcd87a3ec38c7657b62a1990abb Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sat, 7 Jan 2023 10:15:46 +0200 Subject: refactor: move ParseUnixTimestamp into src/git.rs Sponsored-by: author --- src/error.rs | 6 +++--- src/git.rs | 8 +++++++- 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 { assert!(!args.is_empty()); let output = Command::new("git") @@ -34,7 +40,7 @@ pub fn git_whatchanged(cwd: &Path) -> Result, SiteE let secs = caps.name("secs").unwrap().as_str(); let timestamp = secs .parse::() - .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(); -- cgit v1.2.1