damdara 0.4.1

Dragon Quest Core Module, created in Rust.
Documentation
use clap::Parser;
use std::str::FromStr;

use crate::constants::status::Flags;
use crate::constants::text::DEFAULT_NAME;
pub const DEFAULT_MODE: &str = "start";

#[derive(Parser, Debug)]
pub struct Cli {
    #[clap(short, long, default_value_t = String::from(DEFAULT_NAME))]
    pub name: String,
    #[clap(short, long, default_value_t = 0)]
    pub exp: u16,
    #[clap(short, long, default_value_t = 0)]
    pub gold: u16,
    #[clap(short, long, default_value_t = 0)]
    pub weapon: u8,
    #[clap(short, long, default_value_t = 0)]
    pub armor: u8,
    #[clap(short, long, default_value_t = 0)]
    pub shield: u8,
    #[clap(short, long)]
    pub item: Vec<u8>,
    #[clap(short = 'y', long, default_value_t = 0)]
    pub herbs: u8,
    #[clap(short, long, default_value_t = 0)]
    pub keys: u8,
    #[clap(short, long, default_value_t = String::from(DEFAULT_MODE))]
    pub mode: String,
    #[arg(long, default_value_t = Flags::default())]
    pub flags: Flags,
}

#[derive(Debug)]
pub enum Mode {
    Start,
}

impl Mode {
    pub const fn default() -> Mode {
        Mode::Start
    }
}

impl FromStr for Mode {
    type Err = ();

    fn from_str(input: &str) -> Result<Mode, Self::Err> {
        match input {
            "start" => Ok(Mode::Start),
            _ => Err(()),
        }
    }
}