Skip to main content

apm/cmd/
close.rs

1use anyhow::Result;
2use apm_core::{config::Config, git, ticket, ticket_fmt};
3use std::path::Path;
4
5pub fn run(root: &Path, id_arg: &str, reason: Option<String>, no_aggressive: bool) -> Result<()> {
6    let config = Config::load(root)?;
7    let aggressive = config.sync.aggressive && !no_aggressive;
8    let agent = apm_core::config::resolve_caller_name();
9
10    let branches = git::ticket_branches(root).unwrap_or_default();
11    let branch = ticket_fmt::resolve_ticket_branch(&branches, id_arg).ok();
12
13    if let Some(ref b) = branch {
14        crate::util::fetch_branch_if_aggressive(root, b, aggressive);
15    }
16
17    let msgs = ticket::close(root, &config, id_arg, reason.as_deref(), &agent, aggressive)?;
18    for msg in &msgs {
19        println!("{msg}");
20    }
21
22    Ok(())
23}