use anstream::println;
use clap::Args;
use cooklang::{
convert::{ConvertTo, Converter, System},
quantity::Number,
Quantity, Value,
};
#[derive(Debug, Args)]
pub struct ConvertArgs {
value: f64,
unit: String,
to: String,
}
pub fn run(converter: &Converter, args: ConvertArgs) -> anyhow::Result<()> {
use owo_colors::OwoColorize;
let to = match args.to.as_str() {
"fit" | "best" => ConvertTo::SameSystem,
"metric" => ConvertTo::Best(System::Metric),
"imperial" => ConvertTo::Best(System::Imperial),
_ => ConvertTo::Unit(cooklang::convert::ConvertUnit::Key(&args.to)),
};
let mut quantity = Quantity::new(Value::Number(Number::Regular(args.value)), Some(args.unit));
quantity.convert(to, converter)?;
println!(
"{:#} {}",
quantity.value,
quantity.unit_text().unwrap().italic()
);
Ok(())
}