summaryrefslogtreecommitdiff
path: root/src/git.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/git.rs')
-rw-r--r--src/git.rs12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/git.rs b/src/git.rs
index c824bfa..c64453a 100644
--- a/src/git.rs
+++ b/src/git.rs
@@ -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))
}
}