mirror of
https://github.com/cargo-bins/cargo-binstall.git
synced 2025-04-21 13:08:42 +00:00
Fix helpers::cargo_home
: home::cargo_home
is buggy
Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
This commit is contained in:
parent
3c09cfb196
commit
5bf2b4e45d
1 changed files with 26 additions and 1 deletions
|
@ -1,3 +1,4 @@
|
||||||
|
use std::env;
|
||||||
use std::fmt::Debug;
|
use std::fmt::Debug;
|
||||||
use std::fs;
|
use std::fs;
|
||||||
use std::io;
|
use std::io;
|
||||||
|
@ -44,10 +45,34 @@ mod crate_name;
|
||||||
pub use crate_name::CrateName;
|
pub use crate_name::CrateName;
|
||||||
|
|
||||||
pub fn cargo_home() -> Result<&'static Path, io::Error> {
|
pub fn cargo_home() -> Result<&'static Path, io::Error> {
|
||||||
|
fn cargo_home_inner() -> Result<PathBuf, io::Error> {
|
||||||
|
if let Some(p) = env::var_os("CARGO_HOME") {
|
||||||
|
let p = PathBuf::from(p);
|
||||||
|
debug!("using CARGO_HOME ({})", p.display());
|
||||||
|
return Ok(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Standard $HOME/.cargo/bin
|
||||||
|
if let Some(mut d) = dirs::home_dir() {
|
||||||
|
d.push(".cargo");
|
||||||
|
|
||||||
|
if d.exists() {
|
||||||
|
debug!("using $HOME/.cargo: {}", d.display());
|
||||||
|
|
||||||
|
return Ok(d);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Err(io::Error::new(
|
||||||
|
io::ErrorKind::NotFound,
|
||||||
|
"Failed to detect cargo home",
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
static CARGO_HOME: OnceCell<PathBuf> = OnceCell::new();
|
static CARGO_HOME: OnceCell<PathBuf> = OnceCell::new();
|
||||||
|
|
||||||
CARGO_HOME
|
CARGO_HOME
|
||||||
.get_or_try_init(home::cargo_home)
|
.get_or_try_init(cargo_home_inner)
|
||||||
.map(ops::Deref::deref)
|
.map(ops::Deref::deref)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue