use anyhow::Result;
use clap::Args;
use crate::cli::load_and_validate_queues_read_only;
use crate::config::Resolved;
use crate::reports;
use super::QueueReportFormat;
#[derive(Args)]
#[command(
after_long_help = "Examples:\n ralph queue history\n ralph queue history --days 14\n ralph queue history --format json"
)]
pub struct QueueHistoryArgs {
#[arg(long, default_value_t = 7)]
pub days: u32,
#[arg(long, value_enum, default_value_t = QueueReportFormat::Text)]
pub format: QueueReportFormat,
}
pub(crate) fn handle(resolved: &Resolved, args: QueueHistoryArgs) -> Result<()> {
let (queue_file, done_file) = load_and_validate_queues_read_only(resolved, true)?;
let done_ref = done_file
.as_ref()
.filter(|d| !d.tasks.is_empty() || resolved.done_path.exists());
reports::print_history(&queue_file, done_ref, args.days, args.format.into())?;
Ok(())
}