use std::path::Path;
use balls::delivery_path::{attempt_branch, work_branch};
use balls::layout::Xdg;
use crate::app::Snapshot;
use crate::control::root::claimed;
use crate::fan::{self, delivered_commit};
use crate::opslog::OpEntry;
use super::Attempt;
use super::read::diff_change;
pub(super) fn candidates(
snap: &Snapshot,
workspace: &Path,
entries: &[OpEntry],
xdg: &Xdg,
name: &str,
) -> Vec<Attempt> {
let Some((project, ball)) = claimed(entries, name) else {
return Vec::new();
};
let named = snap.project_name(&project);
let target = work_branch(&ball);
fan::cohort::members(entries, xdg, &project, workspace)
.into_iter()
.map(|member| Attempt {
project: named.clone(),
ball_id: ball.clone(),
delivered: delivered_commit(&project, &target, &member.handle),
change: diff_change(&project, target.clone(), attempt_branch(&member.handle)),
handle: Some(member.handle),
})
.collect()
}