use std::env;
use std::path::{Path, PathBuf};
use super::{ProjectConfig, ProjectError};
pub(crate) fn discover() -> Result<ProjectConfig, ProjectError> {
let current = env::current_dir().map_err(ProjectError::CurrentDirectory)?;
discover_from(¤t)
}
pub(crate) fn discover_from(start: &Path) -> Result<ProjectConfig, ProjectError> {
let mut candidate = Some(start);
while let Some(directory) = candidate {
if directory.join("arcature.toml").is_file() {
return ProjectConfig::load(directory);
}
candidate = directory.parent();
}
Err(ProjectError::NotFound(PathBuf::from(start)))
}