ratto 0.8.0

Ratatui-powered terminal primitives for shell dashboards: flicker-free repaints, progress bars, prompts, and portable time tools
use anyhow::anyhow;

use crate::cli::DurationArgs;
use crate::color::ColorProfile;
use crate::core::duration::{
    DurationFormat, format_clock, format_compact, format_long, parse_duration,
};
use crate::exit::AppResult;
use crate::theme::Palette;

pub fn run(args: DurationArgs, _profile: ColorProfile, _palette: Palette) -> AppResult {
    if args.seconds {
        println!("{}", parse_duration(&args.value)?);
        return Ok(());
    }
    let raw: f64 = args
        .value
        .parse()
        .map_err(|_| anyhow!("invalid number: {:?}", args.value))?;
    let secs = if args.ms { raw / 1000.0 } else { raw } as i64;
    let out = match args.format {
        DurationFormat::Compact => format_compact(secs),
        DurationFormat::Long => format_long(secs),
        DurationFormat::Clock => format_clock(secs),
    };
    println!("{out}");
    Ok(())
}