use std::path::PathBuf;
use serde::Deserialize;
use crate::rubase::ruentity;
#[derive(Debug, Default,Deserialize, Clone)]
pub struct CargoHome{
pub dir: PathBuf,
}
impl ruentity::BaseEntitySingle for CargoHome{
}
impl CargoHome {
pub fn new() -> Self {
Self {
..Default::default()
}
}
pub fn get_pkg_home(&self, pkg: &str) {
println!("pkg_home: {}", pkg);
}
}
#[allow(dead_code)]
fn cargo_pkg_home(pkg: &str) -> PathBuf {
println!("cargo pkg home{}", pkg);
carge_home_src()
}
fn carge_home_src() -> PathBuf {
cargo_registry_src().unwrap()
}
fn cargo_registry_src() -> Option<PathBuf> {
let cargo_home = std::env::var("CARGO_HOME")
.or_else(|_| {
std::env::var("USERPROFILE") .or_else(|_| std::env::var("HOME")) .map(|h| format!("{}\\.cargo", h)) })
.ok()?;
Some(PathBuf::from(cargo_home).join("registry").join("../../.."))
}
#[test]
fn main() {
if let Some(path) = cargo_registry_src() {
println!("包目录: {}", path.display());
}
}