irc-bot 0.2.1

A library for writing Internet Relay Chat (IRC) bots in Rust
Documentation
extern crate env_logger;
extern crate irc_bot;

#[macro_use]
extern crate clap;

#[macro_use]
extern crate log;

use irc_bot::modules;

fn main() {
    let args = clap::App::new("egbot")
        .arg(
            clap::Arg::with_name("config-file")
                .long("config-file")
                .short("c")
                .default_value("config.yaml"),
        )
        .arg(
            clap::Arg::with_name("data-dir")
                .long("data-dir")
                .short("d")
                .default_value("data"),
        )
        .arg(
            clap::Arg::with_name("error-verbosity")
                .long("error-verbosity")
                .possible_values(&ErrorVerbosity::variants())
                .case_insensitive(true)
                .default_value("Display"),
        )
        .get_matches();

    env_logger::init().expect("error: failed to initialize logging");

    let error_verbosity =
        value_t!(args, "error-verbosity", ErrorVerbosity).unwrap_or_else(|err| err.exit());

    irc_bot::run(
        irc_bot::Config::try_from_path(args.value_of("config-file").expect("default missing?")),
        args.value_of("data-dir").expect("default missing?"),
        move |err| {
            match error_verbosity {
                ErrorVerbosity::Display => error!("{}", err),
                ErrorVerbosity::Debug => error!("{:?}", err),
            }
            irc_bot::ErrorReaction::Proceed
        },
        &[modules::default, modules::test],
    );
}

arg_enum! {
    #[derive(Debug)]
    enum ErrorVerbosity {
        Display,
        Debug
    }
}