diff options
| author | Linus Färnstrand <linus@mullvad.net> | 2017-07-14 11:30:55 +0200 |
|---|---|---|
| committer | Linus Färnstrand <linus@mullvad.net> | 2017-07-14 11:30:55 +0200 |
| commit | cd4e983ca55135dbd7a92b032d739c84148675c7 (patch) | |
| tree | d65c60da9c387b8baa013c46b90166c5447810e7 /mullvad_daemon/src/cli.rs | |
| parent | 829e92c8c2680f5be4e89ba3433d1ddc7e442198 (diff) | |
| parent | f8350334903962820dcf9e82d5ce70de9a12fa69 (diff) | |
| download | mullvadvpn-cd4e983ca55135dbd7a92b032d739c84148675c7.tar.xz mullvadvpn-cd4e983ca55135dbd7a92b032d739c84148675c7.zip | |
Merge branch 'log-to-file'
Diffstat (limited to 'mullvad_daemon/src/cli.rs')
| -rw-r--r-- | mullvad_daemon/src/cli.rs | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/mullvad_daemon/src/cli.rs b/mullvad_daemon/src/cli.rs new file mode 100644 index 0000000000..670a2bf28b --- /dev/null +++ b/mullvad_daemon/src/cli.rs @@ -0,0 +1,45 @@ +use clap::{App, Arg}; +use log; + +use std::path::PathBuf; + +pub struct Config { + pub log_level: log::LogLevelFilter, + pub log_file: Option<PathBuf>, +} + +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, + }; + let log_file = matches.value_of_os("log_file").map(PathBuf::from); + + Config { + log_level, + log_file, + } +} + +fn create_app() -> App<'static, 'static> { + App::new(::CRATE_NAME) + .version(crate_version!()) + .author(crate_authors!()) + .about(crate_description!()) + .arg( + Arg::with_name("v") + .short("v") + .multiple(true) + .help("Sets the level of verbosity."), + ) + .arg( + Arg::with_name("log_file") + .long("log") + .takes_value(true) + .help("Activates file logging to the given path"), + ) +} |
