ralph/cli/queue/
burndown.rs1use anyhow::Result;
4use clap::Args;
5
6use crate::cli::load_and_validate_queues_read_only;
7use crate::config::Resolved;
8use crate::reports;
9
10use super::QueueReportFormat;
11
12#[derive(Args)]
14#[command(
15 after_long_help = "Examples:\n ralph queue burndown\n ralph queue burndown --days 30\n ralph queue burndown --format json"
16)]
17pub struct QueueBurndownArgs {
18 #[arg(long, default_value_t = 7)]
20 pub days: u32,
21
22 #[arg(long, value_enum, default_value_t = QueueReportFormat::Text)]
24 pub format: QueueReportFormat,
25}
26
27pub(crate) fn handle(resolved: &Resolved, args: QueueBurndownArgs) -> Result<()> {
28 let (queue_file, done_file) = load_and_validate_queues_read_only(resolved, true)?;
29 let done_ref = done_file
30 .as_ref()
31 .filter(|d| !d.tasks.is_empty() || resolved.done_path.exists());
32 reports::print_burndown(&queue_file, done_ref, args.days, args.format.into())?;
33 Ok(())
34}