diff options
Diffstat (limited to 'src/cmd.rs')
-rw-r--r-- | src/cmd.rs | 17 |
1 files changed, 15 insertions, 2 deletions
@@ -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) } |