summaryrefslogtreecommitdiff
path: root/crates/git-tracker/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/git-tracker/src/lib.rs')
-rw-r--r--crates/git-tracker/src/lib.rs33
1 files changed, 32 insertions, 1 deletions
diff --git a/crates/git-tracker/src/lib.rs b/crates/git-tracker/src/lib.rs
index cb0907b..0bf17dc 100644
--- a/crates/git-tracker/src/lib.rs
+++ b/crates/git-tracker/src/lib.rs
@@ -1,4 +1,35 @@
//! A library that helps you track commits and branches in a Git repository
+use log::trace;
+mod managed_repository;
mod tracker;
-pub use tracker::{Error, Tracker};
+pub use managed_repository::ManagedRepository;
+pub use tracker::Tracker;
+
+/// Collect the status of the commit SHA [`commit_sha`] in each of the nixpkgs
+/// branches in [`branches`], using the repository at path [`repository_path`]
+///
+/// NOTE: `branches` should contain the full ref (i.e., `origin/main`)
+///
+/// # Errors
+///
+/// Will return [`Err`] if we can't start tracking a repository at the given path,
+/// or if we can't determine if the branch has given commit
+pub fn collect_statuses_in(
+ repository_path: &str,
+ commit_sha: &str,
+ branches: &Vec<String>,
+) -> Result<Vec<(String, bool)>, tracker::Error> {
+ // start tracking nixpkgs
+ let tracker = Tracker::from_path(repository_path)?;
+
+ // check to see what branches it's in
+ let mut status_results = Vec::new();
+ for branch_name in branches {
+ trace!("Checking for commit in {branch_name}");
+ let has_pr = tracker.branch_contains_sha(branch_name, commit_sha)?;
+ status_results.push((branch_name.to_string(), has_pr));
+ }
+
+ Ok(status_results)
+}