use std::path::{Path, PathBuf};
const MARKER: &str = "views/app.gvb";
const SYSTEM_PREFIX: &str = "/usr/share/rustploy";
pub fn locate_and_chdir() {
if let Some(base) = find_base()
&& let Err(e) = std::env::set_current_dir(&base)
{
eprintln!("assets: falha ao entrar em {}: {e}", base.display());
}
}
fn find_base() -> Option<PathBuf> {
if let Ok(dir) = std::env::var("RUSTPLOY_UI_ASSETS") {
let p = PathBuf::from(dir);
if has_marker(&p) {
return Some(p);
}
}
if let Ok(exe) = std::env::current_exe()
&& let Some(dir) = exe.parent()
&& has_marker(dir)
{
return Some(dir.to_path_buf());
}
if let Ok(cwd) = std::env::current_dir()
&& has_marker(&cwd)
{
return None;
}
let system = PathBuf::from(SYSTEM_PREFIX);
if has_marker(&system) {
return Some(system);
}
None
}
fn has_marker(base: &Path) -> bool {
base.join(MARKER).is_file()
}