Skip to content
This repository has been archived by the owner on Nov 6, 2020. It is now read-only.

Commit

Permalink
Avoid using $HOME if not necessary (#9273)
Browse files Browse the repository at this point in the history
* Avoid using $HOME if not necessary

* Fix concerns and issues
  • Loading branch information
tomaka authored and niklasad1 committed Aug 3, 2018
1 parent 0cfc6bf commit 25604dc
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 9 deletions.
2 changes: 1 addition & 1 deletion parity/helpers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -261,7 +261,7 @@ pub fn execute_upgrades(

upgrade_data_paths(base_path, dirs, pruning);

match upgrade(Some(&dirs.path)) {
match upgrade(&dirs.path) {
Ok(upgrades_applied) if upgrades_applied > 0 => {
debug!("Executed {} upgrade scripts - ok", upgrades_applied);
},
Expand Down
14 changes: 7 additions & 7 deletions parity/upgrade.rs
Original file line number Diff line number Diff line change
Expand Up @@ -102,14 +102,10 @@ fn upgrade_from_version(previous_version: &Version) -> Result<usize, Error> {
Ok(count)
}

fn with_locked_version<F>(db_path: Option<&str>, script: F) -> Result<usize, Error>
fn with_locked_version<F>(db_path: &str, script: F) -> Result<usize, Error>
where F: Fn(&Version) -> Result<usize, Error>
{
let mut path = db_path.map_or({
let mut path = env::home_dir().expect("Applications should have a home dir");
path.push(".parity");
path
}, PathBuf::from);
let mut path = PathBuf::from(db_path);
create_dir_all(&path).map_err(|_| Error::CannotCreateConfigPath)?;
path.push("ver.lock");

Expand All @@ -131,7 +127,7 @@ fn with_locked_version<F>(db_path: Option<&str>, script: F) -> Result<usize, Err
result
}

pub fn upgrade(db_path: Option<&str>) -> Result<usize, Error> {
pub fn upgrade(db_path: &str) -> Result<usize, Error> {
with_locked_version(db_path, |ver| {
upgrade_from_version(ver)
})
Expand Down Expand Up @@ -205,6 +201,10 @@ fn upgrade_user_defaults(dirs: &DatabaseDirectories) {
}

pub fn upgrade_data_paths(base_path: &str, dirs: &DatabaseDirectories, pruning: Algorithm) {
if env::home_dir().is_none() {
return;
}

let legacy_root_path = replace_home("", "$HOME/.parity");
let default_path = default_data_path();
if legacy_root_path != base_path && base_path == default_path {
Expand Down
7 changes: 6 additions & 1 deletion util/dir/src/helpers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,12 @@ use std::env;
/// Replaces `$HOME` str with home directory path.
pub fn replace_home(base: &str, arg: &str) -> String {
// the $HOME directory on mac os should be `~/Library` or `~/Library/Application Support`
let r = arg.replace("$HOME", env::home_dir().unwrap().to_str().unwrap());
// We use an `if` so that we don't need to call `home_dir()` if not necessary.
let r = if arg.contains("$HOME") {
arg.replace("$HOME", env::home_dir().expect("$HOME isn't defined").to_str().unwrap())
} else {
arg.to_owned()
};
let r = r.replace("$BASE", base);
r.replace("/", &::std::path::MAIN_SEPARATOR.to_string())
}
Expand Down

0 comments on commit 25604dc

Please sign in to comment.