diff options
-rw-r--r-- | Cargo.toml | 2 | ||||
-rw-r--r-- | src/cmd.rs | 17 | ||||
-rw-r--r-- | src/main.rs | 4 |
3 files changed, 16 insertions, 7 deletions
@@ -12,7 +12,7 @@ directories = "2" env_logger = "0.7" futures = "0.1" lazy_static = "1" -log = "0.4" +log = { version = "0.4", features = ["release_max_level_info"] } mio = "0.6" native-tls = "0.2" oauth2 = "3.0.0-alpha.3" # need the alpha for async support @@ -10,6 +10,7 @@ struct Command { name: &'static str, cmd: &'static dyn for<'a, 'b> Fn(clap::App<'a, 'b>) -> clap::App<'a, 'b>, run: &'static dyn for<'a> Fn(&clap::ArgMatches<'a>) -> Result<()>, + log_level: &'static str, } const COMMANDS: &[Command] = &[ @@ -17,26 +18,31 @@ const COMMANDS: &[Command] = &[ name: "stream", cmd: &stream::cmd, run: &stream::run, + log_level: "error", }, Command { name: "server", cmd: &server::cmd, run: &server::run, + log_level: "info", }, Command { name: "watch", cmd: &watch::cmd, run: &watch::run, + log_level: "error", }, Command { name: "record", cmd: &record::cmd, run: &record::run, + log_level: "error", }, Command { name: "play", cmd: &play::cmd, run: &play::run, + log_level: "error", }, ]; @@ -55,10 +61,17 @@ pub fn parse<'a>() -> Result<clap::ArgMatches<'a>> { } pub fn run(matches: &clap::ArgMatches<'_>) -> Result<()> { + let mut chosen_cmd = &COMMANDS[0]; + let mut chosen_submatches = &clap::ArgMatches::<'_>::default(); for cmd in COMMANDS { if let Some(submatches) = matches.subcommand_matches(cmd.name) { - return (cmd.run)(submatches); + chosen_cmd = cmd; + chosen_submatches = submatches; } } - (COMMANDS[0].run)(&clap::ArgMatches::<'_>::default()) + env_logger::from_env( + env_logger::Env::default().default_filter_or(chosen_cmd.log_level), + ) + .init(); + (chosen_cmd.run)(chosen_submatches) } diff --git a/src/main.rs b/src/main.rs index edba700..20172af 100644 --- a/src/main.rs +++ b/src/main.rs @@ -27,10 +27,6 @@ mod util; fn main() { dirs::Dirs::new().create_all().unwrap(); - env_logger::from_env( - env_logger::Env::default().default_filter_or("info"), - ) - .init(); match crate::cmd::parse().and_then(|m| crate::cmd::run(&m)) { Ok(_) => {} Err(err) => { |