blob: 0bf17dc04898e13c574a7309052c09877d826976 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
//! A library that helps you track commits and branches in a Git repository
use log::trace;
mod managed_repository;
mod 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)
}
|