summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorLinus Färnstrand <linus@mullvad.net>2019-03-29 07:56:27 +0100
committerLinus Färnstrand <linus@mullvad.net>2019-03-29 10:51:24 +0100
commitd798558a71c0f2a280654b19819a758b730b45f3 (patch)
treef6a9d723b0188282733994174e29959ece49fa24
parentc95b0e55a5b56a7dc3fa15e51240ec531a48f9a5 (diff)
downloadmullvadvpn-d798558a71c0f2a280654b19819a758b730b45f3.tar.xz
mullvadvpn-d798558a71c0f2a280654b19819a758b730b45f3.zip
Remove error-chain from mullvad-paths
-rw-r--r--Cargo.lock2
-rw-r--r--mullvad-paths/Cargo.toml2
-rw-r--r--mullvad-paths/src/cache.rs2
-rw-r--r--mullvad-paths/src/lib.rs41
-rw-r--r--mullvad-paths/src/settings.rs3
5 files changed, 24 insertions, 26 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 53d74ecece..76061d1a26 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1131,7 +1131,7 @@ name = "mullvad-paths"
version = "0.1.0"
dependencies = [
"dirs 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "err-derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
diff --git a/mullvad-paths/Cargo.toml b/mullvad-paths/Cargo.toml
index ceb6391e32..131a6dd798 100644
--- a/mullvad-paths/Cargo.toml
+++ b/mullvad-paths/Cargo.toml
@@ -7,7 +7,7 @@ license = "GPL-3.0"
edition = "2018"
[dependencies]
-error-chain = "0.12"
+err-derive = "0.1.5"
log = "0.4"
[target.'cfg(any(windows, target_os = "macos"))'.dependencies]
diff --git a/mullvad-paths/src/cache.rs b/mullvad-paths/src/cache.rs
index 7493606d66..dd4307572c 100644
--- a/mullvad-paths/src/cache.rs
+++ b/mullvad-paths/src/cache.rs
@@ -22,7 +22,7 @@ pub fn get_default_cache_dir() -> Result<PathBuf> {
}
#[cfg(any(target_os = "macos", windows))]
{
- dir = dirs::cache_dir().ok_or_else(|| crate::ErrorKind::FindDirError.into())
+ dir = dirs::cache_dir().ok_or(crate::Error::FindDirError)
}
dir.map(|dir| dir.join(crate::PRODUCT_NAME))
}
diff --git a/mullvad-paths/src/lib.rs b/mullvad-paths/src/lib.rs
index 2e458c7169..1d829e1145 100644
--- a/mullvad-paths/src/lib.rs
+++ b/mullvad-paths/src/lib.rs
@@ -1,23 +1,22 @@
-#[macro_use]
-extern crate error_chain;
+use std::{fs, io, path::PathBuf};
-use std::{fs, path::PathBuf};
+pub type Result<T> = std::result::Result<T, Error>;
-error_chain! {
- errors {
- CreateDirFailed(path: PathBuf) {
- description("Failed to create directory")
- display("Failed to create directory {}", path.display())
- }
- SetDirPermissionFailed(path: PathBuf) {
- description("Failed to set directory permissions")
- display("Failed to set directory permissions on {}", path.display())
- }
- #[cfg(any(windows, target_os = "macos"))]
- FindDirError { description("Not able to find requested directory" )}
- #[cfg(windows)]
- NoProgramDataDir { description("Missing %ALLUSERSPROFILE% environment variable") }
- }
+#[derive(err_derive::Error, Debug)]
+pub enum Error {
+ #[error(display = "Failed to create directory {}", _0)]
+ CreateDirFailed(String, #[error(cause)] io::Error),
+
+ #[error(display = "Failed to set directory permissions on {}", _0)]
+ SetDirPermissionFailed(String, #[error(cause)] io::Error),
+
+ #[cfg(any(windows, target_os = "macos"))]
+ #[error(display = "Not able to find requested directory")]
+ FindDirError,
+
+ #[cfg(windows)]
+ #[error(display = "Missing %ALLUSERSPROFILE% environment variable")]
+ NoProgramDataDir,
}
#[cfg(unix)]
@@ -31,7 +30,7 @@ const PRODUCT_NAME: &str = "Mullvad VPN";
fn get_allusersprofile_dir() -> Result<PathBuf> {
match std::env::var_os("ALLUSERSPROFILE") {
Some(dir) => Ok(PathBuf::from(&dir)),
- None => bail!(ErrorKind::NoProgramDataDir),
+ None => Err(Error::NoProgramDataDir),
}
}
@@ -40,10 +39,10 @@ fn create_and_return(
permissions: Option<fs::Permissions>,
) -> Result<PathBuf> {
let dir = dir_fn()?;
- fs::create_dir_all(&dir).chain_err(|| ErrorKind::CreateDirFailed(dir.clone()))?;
+ fs::create_dir_all(&dir).map_err(|e| Error::CreateDirFailed(dir.display().to_string(), e))?;
if let Some(permissions) = permissions {
fs::set_permissions(&dir, permissions)
- .chain_err(|| ErrorKind::SetDirPermissionFailed(dir.clone()))?;
+ .map_err(|e| Error::SetDirPermissionFailed(dir.display().to_string(), e))?;
}
Ok(dir)
}
diff --git a/mullvad-paths/src/settings.rs b/mullvad-paths/src/settings.rs
index 1c720eab50..0645a38a6e 100644
--- a/mullvad-paths/src/settings.rs
+++ b/mullvad-paths/src/settings.rs
@@ -1,5 +1,4 @@
use crate::Result;
-
use std::{env, path::PathBuf};
/// Creates and returns the settings directory pointed to by `MULLVAD_SETTINGS_DIR`, or the default
@@ -23,7 +22,7 @@ pub fn get_default_settings_dir() -> Result<PathBuf> {
}
#[cfg(windows)]
{
- dir = dirs::data_local_dir().ok_or_else(|| crate::ErrorKind::FindDirError.into());
+ dir = dirs::data_local_dir().ok_or(crate::Error::FindDirError);
}
dir.map(|dir| dir.join(crate::PRODUCT_NAME))
}