diff options
Diffstat (limited to 'src/project')
-rw-r--r-- | src/project/git.rs | 39 | ||||
-rw-r--r-- | src/project/path.rs | 22 |
2 files changed, 0 insertions, 61 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, - }) - } -} diff --git a/src/project/path.rs b/src/project/path.rs deleted file mode 100644 index 0e38990..0000000 --- a/src/project/path.rs +++ /dev/null @@ -1,22 +0,0 @@ -use std::{io::ErrorKind, path::PathBuf}; - -use super::{Project, ProjectParser}; - -#[derive(Debug, Clone)] -pub enum PathMatcher { - All, - Pattern(String), -} - -impl ProjectParser for PathMatcher { - #[tracing::instrument] - fn parse(&self, path_buf: PathBuf) -> Result<Project, Box<dyn std::error::Error>> { - let project = match self { - PathMatcher::All => path_buf.try_into()?, - PathMatcher::Pattern(p) if path_buf.join(p).exists() => path_buf.try_into()?, - _ => return Err(Box::new(std::io::Error::from(ErrorKind::NotFound))), - }; - - Ok(project) - } -} |