todotui 0.0.5

A simple todo terminal app
Documentation
use std::{fs::create_dir, path::PathBuf};

use clap::Parser;
use home::home_dir;
use todotui::model::Model;

#[derive(Parser, Debug)]
#[command(author, version, about, long_about = None)]
struct Args {
    #[arg(short, long)]
    directory: Option<PathBuf>,
}

fn main() {
    let args = Args::parse();
    match args.directory {
        Some(dir) => Model::new(dir).main_loop(),
        None => match home_dir() {
            Some(mut dir) => {
                dir.push("todotui_data");
                if dir.as_path().metadata().is_ok() {
                    Model::new(dir).main_loop();
                    return;
                }
                match create_dir(dir.clone()) {
                    Ok(_) => Model::new(dir).main_loop(),
                    Err(err) => println!("{}", err),
                }
            }
            None => panic!("Home directory discovery failed :("),
        },
    };
}