Avoid using $HOME if not necessary (#9273)
* Avoid using $HOME if not necessary * Fix concerns and issues
This commit is contained in:
parent
0cfc6bf2a6
commit
25604dc577
@ -261,7 +261,7 @@ pub fn execute_upgrades(
|
|||||||
|
|
||||||
upgrade_data_paths(base_path, dirs, pruning);
|
upgrade_data_paths(base_path, dirs, pruning);
|
||||||
|
|
||||||
match upgrade(Some(&dirs.path)) {
|
match upgrade(&dirs.path) {
|
||||||
Ok(upgrades_applied) if upgrades_applied > 0 => {
|
Ok(upgrades_applied) if upgrades_applied > 0 => {
|
||||||
debug!("Executed {} upgrade scripts - ok", upgrades_applied);
|
debug!("Executed {} upgrade scripts - ok", upgrades_applied);
|
||||||
},
|
},
|
||||||
|
@ -102,14 +102,10 @@ fn upgrade_from_version(previous_version: &Version) -> Result<usize, Error> {
|
|||||||
Ok(count)
|
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>
|
where F: Fn(&Version) -> Result<usize, Error>
|
||||||
{
|
{
|
||||||
let mut path = db_path.map_or({
|
let mut path = PathBuf::from(db_path);
|
||||||
let mut path = env::home_dir().expect("Applications should have a home dir");
|
|
||||||
path.push(".parity");
|
|
||||||
path
|
|
||||||
}, PathBuf::from);
|
|
||||||
create_dir_all(&path).map_err(|_| Error::CannotCreateConfigPath)?;
|
create_dir_all(&path).map_err(|_| Error::CannotCreateConfigPath)?;
|
||||||
path.push("ver.lock");
|
path.push("ver.lock");
|
||||||
|
|
||||||
@ -131,7 +127,7 @@ fn with_locked_version<F>(db_path: Option<&str>, script: F) -> Result<usize, Err
|
|||||||
result
|
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| {
|
with_locked_version(db_path, |ver| {
|
||||||
upgrade_from_version(ver)
|
upgrade_from_version(ver)
|
||||||
})
|
})
|
||||||
@ -205,6 +201,10 @@ fn upgrade_user_defaults(dirs: &DatabaseDirectories) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn upgrade_data_paths(base_path: &str, dirs: &DatabaseDirectories, pruning: Algorithm) {
|
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 legacy_root_path = replace_home("", "$HOME/.parity");
|
||||||
let default_path = default_data_path();
|
let default_path = default_data_path();
|
||||||
if legacy_root_path != base_path && base_path == default_path {
|
if legacy_root_path != base_path && base_path == default_path {
|
||||||
|
@ -20,7 +20,12 @@ use std::env;
|
|||||||
/// Replaces `$HOME` str with home directory path.
|
/// Replaces `$HOME` str with home directory path.
|
||||||
pub fn replace_home(base: &str, arg: &str) -> String {
|
pub fn replace_home(base: &str, arg: &str) -> String {
|
||||||
// the $HOME directory on mac os should be `~/Library` or `~/Library/Application Support`
|
// 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);
|
let r = r.replace("$BASE", base);
|
||||||
r.replace("/", &::std::path::MAIN_SEPARATOR.to_string())
|
r.replace("/", &::std::path::MAIN_SEPARATOR.to_string())
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user