diff options
| author | Linus Färnstrand <faern@faern.net> | 2022-01-18 09:31:56 +0100 |
|---|---|---|
| committer | Linus Färnstrand <faern@faern.net> | 2022-01-18 11:55:44 +0100 |
| commit | 88e18f4e27b43434f9affab46cc8f615dfdf042f (patch) | |
| tree | 357b78881b4ecead8d939a08b39c39f71b610530 | |
| parent | bf8513a5de442927067e8190690e3319ba743751 (diff) | |
| download | mullvadvpn-88e18f4e27b43434f9affab46cc8f615dfdf042f.tar.xz mullvadvpn-88e18f4e27b43434f9affab46cc8f615dfdf042f.zip | |
Move printing to stdout/stderr out of problem-report library
| -rw-r--r-- | Cargo.lock | 1 | ||||
| -rw-r--r-- | mullvad-problem-report/Cargo.toml | 1 | ||||
| -rw-r--r-- | mullvad-problem-report/src/lib.rs | 23 | ||||
| -rw-r--r-- | mullvad-problem-report/src/main.rs | 23 |
4 files changed, 36 insertions, 12 deletions
diff --git a/Cargo.lock b/Cargo.lock index aa36088310..1aa3fb75ad 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1431,6 +1431,7 @@ dependencies = [ "env_logger 0.8.4", "err-derive", "lazy_static", + "log", "mullvad-paths", "mullvad-rpc", "regex", diff --git a/mullvad-problem-report/Cargo.toml b/mullvad-problem-report/Cargo.toml index 70f34af7f0..aea2bf30d9 100644 --- a/mullvad-problem-report/Cargo.toml +++ b/mullvad-problem-report/Cargo.toml @@ -13,6 +13,7 @@ dirs-next = "2.0" env_logger = "0.8.2" err-derive = "0.3.0" lazy_static = "1.0" +log = "0.4" regex = "1.0" uuid = { version = "0.8", features = ["v4"] } tokio = { version = "1.8", features = [ "rt" ] } diff --git a/mullvad-problem-report/src/lib.rs b/mullvad-problem-report/src/lib.rs index 3b749c64d4..48b80dd1ff 100644 --- a/mullvad-problem-report/src/lib.rs +++ b/mullvad-problem-report/src/lib.rs @@ -46,6 +46,7 @@ macro_rules! write_line { /// These are critical errors that can happen when using the tool, that stops /// it from working. Meaning it will print the error and exit. #[derive(err_derive::Error, Debug)] +#[error(no_from)] pub enum Error { #[error(display = "Failed to write the problem report to {}", path)] WriteReportError { @@ -65,7 +66,10 @@ pub enum Error { CreateRpcClientError(#[error(source)] mullvad_rpc::Error), #[error(display = "Failed to send problem report")] - SendProblemReportError, + SendProblemReportError(#[error(source)] mullvad_rpc::rest::Error), + + #[error(display = "Failed to send problem report {} times", MAX_SEND_ATTEMPTS)] + SendFailedTooManyTimes, #[error(display = "Unable to spawn Tokio runtime")] CreateRuntime(#[error(source)] io::Error), @@ -293,21 +297,22 @@ pub fn send_problem_report( .await { Ok(()) => { - println!("Problem report sent."); return Ok(()); } Err(error) => { - eprintln!( - "{}", - error.display_chain_with_msg("Failed to send problem report") - ); if !error.is_network_error() { - break; + return Err(Error::SendProblemReportError(error)); } + log::error!( + "{}", + error.display_chain_with_msg( + "Failed to send problem report due to network error" + ) + ); } } } - Err(Error::SendProblemReportError) + Err(Error::SendFailedTooManyTimes) }) } @@ -369,7 +374,7 @@ impl ProblemReport { }, )); self.logs.push((redacted_path, content)); - println!("Adding {}", expanded_path.display()); + log::info!("Adding {}", expanded_path.display()); } } diff --git a/mullvad-problem-report/src/main.rs b/mullvad-problem-report/src/main.rs index 3aae8f2e30..3570fc7e3f 100644 --- a/mullvad-problem-report/src/main.rs +++ b/mullvad-problem-report/src/main.rs @@ -1,7 +1,7 @@ #![deny(rust_2018_idioms)] use clap::{crate_authors, crate_name}; -use mullvad_problem_report::{collect_report, metadata, send_problem_report, Error}; +use mullvad_problem_report::{collect_report, metadata, Error}; use std::{env, path::Path, process}; use talpid_types::ErrorExt; @@ -112,9 +112,26 @@ fn run() -> Result<(), Error> { let report_path = Path::new(send_matches.value_of_os("report").unwrap()); let user_email = send_matches.value_of("email").unwrap_or(""); let user_message = send_matches.value_of("message").unwrap_or(""); - let cache_dir = mullvad_paths::get_cache_dir()?; - send_problem_report(user_email, user_message, report_path, &cache_dir) + send_problem_report(user_email, user_message, report_path) } else { unreachable!("No sub command given"); } } + +fn send_problem_report( + user_email: &str, + user_message: &str, + report_path: &Path, +) -> Result<(), Error> { + let cache_dir = mullvad_paths::get_cache_dir().map_err(Error::ObtainCacheDirectory)?; + match mullvad_problem_report::send_problem_report( + user_email, + user_message, + report_path, + &cache_dir, + ) { + Ok(()) => println!("Problem report sent"), + Err(e) => eprintln!("{}", e.display_chain()), + } + Ok(()) +} |
