diff --git a/Cargo.lock b/Cargo.lock index beca618..90c5f7f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -315,9 +315,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6" +checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" dependencies = [ "cfg-if", "libc", @@ -472,9 +472,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.135" +version = "0.2.138" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68783febc7782c6c5cb401fbda4de5a9898be1762314da0bb2c10ced61f18b0c" +checksum = "db6d7e329c562c5dfab7a46a2afabc8b987ab9a4834c9d1ca04dc54c1546cef8" [[package]] name = "libgit2-sys" @@ -901,9 +901,9 @@ dependencies = [ [[package]] name = "shellexpand" -version = "2.1.2" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ccc8076840c4da029af4f87e4e8daeb0fca6b87bbb02e10cb60b791450e11e4" +checksum = "dd1c7ddea665294d484c39fd0c0d2b7e35bbfe10035c5fe1854741a57f6880e1" dependencies = [ "dirs", ] diff --git a/Cargo.toml b/Cargo.toml index cfaf24b..b9b9fd3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -51,7 +51,7 @@ features = ["derive"] version = "=0.15.0" [dependencies.shellexpand] -version = "=2.1.2" +version = "=3.0.0" [dependencies.clap] version = "=4.0.11" diff --git a/src/config.rs b/src/config.rs index 360f203..3c631af 100644 --- a/src/config.rs +++ b/src/config.rs @@ -240,7 +240,7 @@ impl Config { pub fn normalize(&mut self) { if let Config::ConfigTrees(config) = self { - let home = path::env_home().display().to_string(); + let home = path::env_home(); for tree in &mut config.trees_mut().iter_mut() { if tree.root.starts_with(&home) { // The tilde is not handled differently, it's just a normal path component for `Path`. diff --git a/src/path.rs b/src/path.rs index 897d340..7e004cc 100644 --- a/src/path.rs +++ b/src/path.rs @@ -47,9 +47,9 @@ pub fn path_as_string(path: &Path) -> String { path.to_path_buf().into_os_string().into_string().unwrap() } -pub fn env_home() -> PathBuf { +pub fn env_home() -> String { match std::env::var("HOME") { - Ok(path) => Path::new(&path).to_path_buf(), + Ok(path) => path, Err(e) => { print_error(&format!("Unable to read HOME: {}", e)); process::exit(1); @@ -58,16 +58,12 @@ pub fn env_home() -> PathBuf { } pub fn expand_path(path: &Path) -> PathBuf { - fn home_dir() -> Option { - Some(env_home()) - } - let expanded_path = match shellexpand::full_with_context( &path_as_string(path), - home_dir, + || Some(env_home()), |name| -> Result, &'static str> { match name { - "HOME" => Ok(Some(path_as_string(home_dir().unwrap().as_path()))), + "HOME" => Ok(Some(env_home())), _ => Ok(None), } },