diff options
Diffstat (limited to 'src/project/git.rs')
-rw-r--r-- | src/project/git.rs | 39 |
1 files changed, 0 insertions, 39 deletions
diff --git a/src/project/git.rs b/src/project/git.rs deleted file mode 100644 index e2067ec..0000000 --- a/src/project/git.rs +++ /dev/null @@ -1,39 +0,0 @@ -use git2::{BranchType, Repository}; -use std::{path::PathBuf, time::Duration}; - -use super::{Project, ProjectParser}; - -#[derive(Debug, Clone)] -pub struct GitMatcher; - -impl ProjectParser for GitMatcher { - #[tracing::instrument] - fn parse(&self, path_buf: PathBuf) -> Result<Project, Box<dyn std::error::Error>> { - Repository::open(&path_buf)?.parse(path_buf) - } -} - -impl ProjectParser for Repository { - fn parse(&self, path_buf: PathBuf) -> Result<Project, Box<dyn std::error::Error>> { - let mut branches = self.branches(Some(BranchType::Local))?; - let timestamp = branches - .try_fold(0, |latest, branch| -> std::result::Result<u64, _> { - let (branch, _) = branch?; - - let name = branch - .name()? - .ok_or_else(|| git2::Error::from_str("Failed to find branch"))?; - - self.revparse_single(name)? - .peel_to_commit() - .map(|c| (c.time().seconds() as u64).max(latest)) - }) - .map(Duration::from_secs) - .unwrap_or_default(); - - Ok(Project { - worktree: path_buf, - timestamp, - }) - } -} |