arkham 0.1.0

A framework for CLI applications
Documentation
use arkham::{App, Command, Context, Opt};

fn main() {
    let _ = App::new()
        .name("Fibonacci App")
        .version("1.0")
        .command(
            Command::new("fib")
                .opt(
                    Opt::scalar("count")
                        .short("n")
                        .long("num")
                        .desc("The index of the fibonacci number to return"),
                )
                .short_desc("Calculates a fibonacci number")
                .handler(fibonacci_handler),
        )
        .run()
        .unwrap();
}

fn fibonacci_handler(_app: &App, ctx: &Context, _args: &[String]) {
    let v = fibonacci(
        ctx.get_string("count")
            .unwrap_or("1".to_string())
            .parse()
            .unwrap_or(1),
    );
    println!("Value is: {}", v);
}

fn fibonacci(n: u32) -> u32 {
    match n {
        0 => 1,
        1 => 1,
        _ => fibonacci(n - 1) + fibonacci(n - 2),
    }
}