wena 0.2.0

Wena is a micro-framework that provides an elegant starting point for your console application.
Documentation
mod argument;
mod argv;
mod inline;
mod null;

use std::fmt::Debug;
use std::str::FromStr;

pub use argument::Argument;
pub use argv::ArgvInput;
use clap::{ArgMatches, Command, Error, Result};
pub use inline::InlineInput;
pub use null::NullInput;

pub trait Input {
    fn argument<TValue: FromStr>(&self, name: &str) -> Option<TValue>
    where
        <TValue as FromStr>::Err: Debug,
    {
        if let Ok(matches) = &self.matches() {
            if let Some((_, sub_matches)) = matches.subcommand() {
                let value = sub_matches.value_of(name);

                if let Some(value) = value {
                    return Some(value.to_string().parse::<TValue>().unwrap());
                }

                return None;
            }
        }

        None
    }

    fn find_matches(&mut self, command: Command);

    fn matches(&self) -> Result<&ArgMatches, &Error>;
}