diff options
| author | Linus Färnstrand <linus@mullvad.net> | 2017-07-13 16:09:41 +0200 |
|---|---|---|
| committer | Linus Färnstrand <linus@mullvad.net> | 2017-07-13 16:09:41 +0200 |
| commit | f5a69fb98a891107522fb9507cc3d98de5551325 (patch) | |
| tree | ecb7bcc0ae6594546ee8c64fc77f2e57a31123b9 | |
| parent | 7c265e30b3a3a19cc2bf931b7d41fe62ae701803 (diff) | |
| download | mullvadvpn-f5a69fb98a891107522fb9507cc3d98de5551325.tar.xz mullvadvpn-f5a69fb98a891107522fb9507cc3d98de5551325.zip | |
Add clap and parse verbosity argument
| -rw-r--r-- | mullvad_daemon/Cargo.toml | 3 | ||||
| -rw-r--r-- | mullvad_daemon/src/cli.rs | 32 | ||||
| -rw-r--r-- | mullvad_daemon/src/main.rs | 10 |
3 files changed, 41 insertions, 4 deletions
diff --git a/mullvad_daemon/Cargo.toml b/mullvad_daemon/Cargo.toml index 8de43cf83b..c5ddc653a2 100644 --- a/mullvad_daemon/Cargo.toml +++ b/mullvad_daemon/Cargo.toml @@ -2,13 +2,14 @@ name = "mullvad_daemon" version = "0.1.0" authors = ["Linus Färnstrand <linus@mullvad.net>", "Erik Larkö <erik@mullvad.net>"] -description = "The meat of Mullvad, the core if you wish" +description = "Mullvad VPN backend daemon. Runs and controls the VPN tunnels." [[bin]] name = "mullvadd" [dependencies] chrono = "0.4" +clap = "2.25" error-chain = "0.10" fern = "0.4" serde = "1.0" diff --git a/mullvad_daemon/src/cli.rs b/mullvad_daemon/src/cli.rs new file mode 100644 index 0000000000..cdc2f5fd81 --- /dev/null +++ b/mullvad_daemon/src/cli.rs @@ -0,0 +1,32 @@ +use clap::{App, Arg}; +use log; + +pub struct Config { + pub log_level: log::LogLevelFilter, +} + +pub fn get_config() -> Config { + let app = create_app(); + let matches = app.get_matches(); + + let log_level = match matches.occurrences_of("v") { + 0 => log::LogLevelFilter::Info, + 1 => log::LogLevelFilter::Debug, + _ => log::LogLevelFilter::Trace, + }; + + Config { + log_level, + } +} + +fn create_app() -> App<'static, 'static> { + App::new("mullvadd") + .version(crate_version!()) + .author(crate_authors!()) + .about(crate_description!()) + .arg(Arg::with_name("v") + .short("v") + .multiple(true) + .help("Sets the level of verbosity.")) +} diff --git a/mullvad_daemon/src/main.rs b/mullvad_daemon/src/main.rs index 4b2e03cfb3..a9f3dcc460 100644 --- a/mullvad_daemon/src/main.rs +++ b/mullvad_daemon/src/main.rs @@ -1,3 +1,5 @@ +#[macro_use] +extern crate clap; extern crate chrono; #[macro_use] extern crate log; @@ -22,6 +24,7 @@ extern crate mullvad_types; extern crate talpid_core; extern crate talpid_ipc; +mod cli; mod management_interface; mod rpc_info; mod shutdown; @@ -453,7 +456,8 @@ fn log_error<E>(error: &E) quick_main!(run); fn run() -> Result<()> { - init_logger()?; + let config = cli::get_config(); + init_logger(config.log_level)?; let daemon = Daemon::new().chain_err(|| "Unable to initialize daemon")?; @@ -467,7 +471,7 @@ fn run() -> Result<()> { Ok(()) } -fn init_logger() -> Result<()> { +fn init_logger(log_level: log::LogLevelFilter) -> Result<()> { let log_filename = "mullvadd.log"; fern::Dispatch::new() .format(|out, message, record| { @@ -478,7 +482,7 @@ fn init_logger() -> Result<()> { record.level(), message)) }) - .level(log::LogLevelFilter::Debug) + .level(log_level) .chain(std::io::stdout()) .chain(fern::log_file(log_filename).chain_err(|| "Failed to open log file for writing")?) .apply().chain_err(|| "Failed to bootstrap logging system") |
