summaryrefslogtreecommitdiff
path: root/src/git.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/git.rs')
-rw-r--r--src/git.rs8
1 files changed, 7 insertions, 1 deletions
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();