aboutsummaryrefslogtreecommitdiffstats
path: root/src/project
diff options
context:
space:
mode:
authorToby Vincent <tobyv13@gmail.com>2023-05-04 19:43:08 -0500
committerToby Vincent <tobyv13@gmail.com>2023-05-04 19:43:08 -0500
commit5da4fb25f9bb72771c7f2798daa6339be0bc3900 (patch)
treec30639c7a95e1d94baff498d247eed43fdb3728e /src/project
parent589cd987217755e1da7acbc304c373a75a9f7db5 (diff)
refactor: join iterators into a single walk
Diffstat (limited to 'src/project')
-rw-r--r--src/project/git.rs39
-rw-r--r--src/project/path.rs22
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)
- }
-}