diff --git a/src/cmd_default.rs b/src/cmd_default.rs index 153a25c..1055c9d 100644 --- a/src/cmd_default.rs +++ b/src/cmd_default.rs @@ -9,10 +9,7 @@ impl CommandDefault { app.arg(Arg::with_name("verbose").long("verbose").short("v").multiple(true).help("Show verbose info")) } - pub fn run(arg_matches: &ArgMatches) -> CommandError { - let verbose_count = arg_matches.occurrences_of("verbose"); - println!("Verbose count: {}", verbose_count); - + pub fn run(_arg_matches: &ArgMatches) -> CommandError { error!("Default command is not implemented!"); Ok(()) } diff --git a/src/main.rs b/src/main.rs index fdcffa0..d2567eb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,7 @@ #[macro_use] extern crate log; //#[macro_use] extern crate lazy_static; -use clap::App; +use log::LevelFilter; +use clap::{ App, ArgMatches }; mod cmd; mod cmd_default; @@ -27,9 +28,6 @@ fn print_wa (msg: &str) { } fn main() -> CommandError { - pretty_env_logger::init(); - info!("rust-script-tool started"); - let commands: Vec> = vec![ Box::new(CommandNew{}), ]; @@ -42,6 +40,9 @@ fn main() -> CommandError { } let matches = app.get_matches(); + init_log(&matches); + info!("rust-script-tool started"); + for command in &commands { if let Some(sub_cmd_matches) = matches.subcommand_matches(command.name()) { info!("matched subcommand: {}", command.name()); @@ -51,4 +52,20 @@ fn main() -> CommandError { info!("matched default subcommand"); CommandDefault::run(&matches) +} + +fn init_log(arg_matches: &ArgMatches) { + let verbose_count = arg_matches.occurrences_of("verbose"); + if verbose_count == 0 { + pretty_env_logger::init(); + } else { + let mut builder = pretty_env_logger::formatted_builder(); + match verbose_count { + 1 => builder.filter_level(LevelFilter::Warn), + 2 => builder.filter_level(LevelFilter::Info), + 3 => builder.filter_level(LevelFilter::Debug), + _ => builder.filter_level(LevelFilter::Trace), + }; + builder.init(); + } } \ No newline at end of file