use std::path::PathBuf;
use std::str::FromStr;
pub fn workspace_root() -> PathBuf {
if let Ok(root_str) = std::env::var("SWEET_ROOT") {
return PathBuf::from_str(&root_str).unwrap();
}
#[cfg(target_arch = "wasm32")]
{
return PathBuf::default();
}
#[cfg(not(target_arch = "wasm32"))]
{
use std::ffi::OsString;
let path = std::env::current_dir().unwrap();
let mut path_ancestors = path.as_path().ancestors();
while let Some(p) = path_ancestors.next() {
if std::fs::read_dir(p).unwrap().any(|p| {
p.map(|p| p.file_name() == OsString::from("Cargo.lock"))
.unwrap_or(false)
}) {
use std::path::PathBuf;
return PathBuf::from(p);
}
}
return path;
}
}