use clap::Parser;
use jiff::civil::Date;
use lifec::{LifeCalendar, LifeCalendarConfig, LifeCalendarStyle};
fn main() {
let config = Cli::parse().build_config();
LifeCalendar::from_config(config).print();
}
#[derive(Parser)]
struct Cli {
#[arg()]
birth_date: Date,
#[arg(short, long)]
short: bool,
#[arg(short, long, default_value_t = 10)]
rows: u32,
#[arg(short, long, default_value_t = -2)]
offset: i32,
#[arg(short, long, default_value_t = 60)]
total: u32,
}
impl Cli {
fn build_config(&self) -> LifeCalendarConfig {
LifeCalendarConfig {
style: self.build_life_board_style(),
years_total: self.total,
birth_date: self.birth_date,
}
}
fn build_life_board_style(&self) -> LifeCalendarStyle {
match self.short {
true => LifeCalendarStyle::Short {
rows: self.rows,
offset: self.offset,
},
false => LifeCalendarStyle::Full,
}
}
}