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}