use clap::{Parser, ValueEnum};
use strum_macros::AsRefStr;
#[derive(Parser)]
#[command(author, version, about, long_about = None)]
pub struct Cli {
pub address: Option<String>,
#[arg(short, long, action)]
pub forecast: bool,
#[arg(long, short, next_line_help = false, use_value_delimiter = true, num_args(..=2))]
pub units: Vec<ArgUnits>,
#[arg(short, long)]
pub language: Option<String>,
#[arg(short, long, action)]
pub greeting: bool,
#[arg(short, long, action, group = "config_file_action", global = true)]
pub save: bool,
#[arg(short, long, action, group = "config_file_action", global = true)]
pub reset: bool,
}
#[derive(Debug, Clone, PartialEq, ValueEnum, AsRefStr)]
#[allow(non_camel_case_types)]
pub enum ArgUnits {
#[value(name = "(c)elsius", aliases = ["c", "celsius"])]
celsius,
#[value(name = "(f)ahrenheit", aliases = ["f", "fahrenheit"])]
fahrenheit,
kmh,
mph,
#[value(name = "(kn)ots", aliases = ["kn", "knots"])]
kn,
ms,
}