diff --git a/src/config.rs b/src/config.rs index bbfd137d..d5c73d00 100644 --- a/src/config.rs +++ b/src/config.rs @@ -117,6 +117,10 @@ pub struct CommandLineArgs { /// Do not perform upgrades for the given steps #[structopt(long = "disable", raw(possible_values = "&Step::possible_values()"))] disable: Vec, + + /// Output logs + #[structopt(short = "v", long = "verbose")] + verbose: bool, } /// Represents the application configuration @@ -189,4 +193,9 @@ impl Config { pub fn no_retry(&self) -> bool { self.opt.no_retry } + + /// Tell whether we should print log. + pub fn verbose(&self) -> bool { + self.opt.verbose + } } diff --git a/src/main.rs b/src/main.rs index 8c54b68f..846f3f28 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,5 @@ +#![allow(clippy::cognitive_complexity)] + mod config; mod ctrlc; mod error; @@ -14,6 +16,7 @@ use self::error::{Error, ErrorKind}; use self::report::Report; use self::steps::*; use self::terminal::*; +use env_logger::Env; use failure::{Fail, ResultExt}; use log::debug; #[cfg(feature = "self-update")] @@ -73,7 +76,11 @@ fn run() -> Result<(), Error> { } } - env_logger::init(); + let mut env = Env::default(); + if config.verbose() { + env = env.filter_or("LOG_LEVEL", "info"); + } + env_logger::init_from_env(env); let git = git::Git::new(); let mut git_repos = git::Repositories::new(&git);