arcature-cli 2026.1.1

Developer lifecycle CLI for Arcature applications.
Documentation
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(&current)
}

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)))
}