diff options
Diffstat (limited to 'src/git.rs')
-rw-r--r-- | src/git.rs | 12 |
1 files changed, 9 insertions, 3 deletions
@@ -9,20 +9,26 @@ use std::time::{Duration, SystemTime, UNIX_EPOCH}; pub enum GitError { #[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), + + #[error("git {0} in in {1}:\n{2}")] + GitError(String, PathBuf, String), } -pub fn git(args: &[&str], cwd: &Path) -> Result<String, SiteError> { +pub fn git(args: &[&str], cwd: &Path) -> Result<String, GitError> { assert!(!args.is_empty()); let output = Command::new("git") .args(args) .current_dir(cwd) .output() - .map_err(|e| SiteError::GitInvoke(args[0].into(), cwd.into(), e))?; + .map_err(|e| GitError::GitInvoke(args[0].into(), cwd.into(), e))?; if output.status.success() { Ok(String::from_utf8_lossy(&output.stdout).into()) } else { let stderr = String::from_utf8_lossy(&output.stderr).into(); - Err(SiteError::GitError(args[0].into(), cwd.into(), stderr)) + Err(GitError::GitError(args[0].into(), cwd.into(), stderr)) } } |