diff options
author | Lars Wirzenius <liw@liw.fi> | 2023-01-07 10:15:46 +0200 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2023-01-07 10:15:46 +0200 |
commit | b2da20d1a9a93bcd87a3ec38c7657b62a1990abb (patch) | |
tree | bd6eee5ccc6799b74d14d64d2192b8dc41b1869c | |
parent | 947b9b54d61dc4f9c08f2cfc987dbf74942b9217 (diff) | |
download | riki-b2da20d1a9a93bcd87a3ec38c7657b62a1990abb.tar.gz |
refactor: move ParseUnixTimestamp into src/git.rs
Sponsored-by: author
-rw-r--r-- | src/error.rs | 6 | ||||
-rw-r--r-- | 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), @@ -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(); |