summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorLinus Färnstrand <faern@faern.net>2022-01-18 09:31:56 +0100
committerLinus Färnstrand <faern@faern.net>2022-01-18 11:55:44 +0100
commit88e18f4e27b43434f9affab46cc8f615dfdf042f (patch)
tree357b78881b4ecead8d939a08b39c39f71b610530
parentbf8513a5de442927067e8190690e3319ba743751 (diff)
downloadmullvadvpn-88e18f4e27b43434f9affab46cc8f615dfdf042f.tar.xz
mullvadvpn-88e18f4e27b43434f9affab46cc8f615dfdf042f.zip
Move printing to stdout/stderr out of problem-report library
-rw-r--r--Cargo.lock1
-rw-r--r--mullvad-problem-report/Cargo.toml1
-rw-r--r--mullvad-problem-report/src/lib.rs23
-rw-r--r--mullvad-problem-report/src/main.rs23
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(())
+}