Use home::cargo_home in helpers::cargo_home

Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
This commit is contained in:
Jiahao XU 2022-07-23 19:17:47 +10:00
parent ad2d393be7
commit 5367b366d1
No known key found for this signature in database
GPG key ID: 591C0B03040416D6

View file

@ -45,34 +45,10 @@ 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
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(cargo_home_inner) .get_or_try_init(home::cargo_home)
.map(ops::Deref::deref) .map(ops::Deref::deref)
} }