lifec 0.1.4

A CLI tool that displays your life calendar.
Documentation
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,
        }
    }
}