use anyhow::{Result, bail};
use crate::config::Resolved;
pub(crate) fn handle(resolved: &Resolved) -> Result<()> {
let document = crate::cli::machine::build_queue_validate_document(resolved);
println!("{}", document.continuation.headline);
println!("{}", document.continuation.detail);
if let Some(blocking) = document
.blocking
.as_ref()
.or(document.continuation.blocking.as_ref())
{
println!();
println!(
"Operator state: {}",
format!("{:?}", blocking.status).to_lowercase()
);
println!("{}", blocking.message);
if !blocking.detail.is_empty() {
println!("{}", blocking.detail);
}
}
if !document.warnings.is_empty() {
println!();
println!("Warnings:");
for warning in &document.warnings {
println!(" - [{}] {}", warning.task_id, warning.message);
}
}
if !document.continuation.next_steps.is_empty() {
println!();
println!("Next:");
for (index, step) in document.continuation.next_steps.iter().enumerate() {
println!(" {}. {} — {}", index + 1, step.command, step.detail);
}
}
if document.valid {
Ok(())
} else {
bail!("queue validation failed")
}
}