use anyhow::{anyhow, Result};
use serde::Deserialize;
use std::path::PathBuf;
/// Represents the Foundry configuration (foundry.toml)
#[derive(Deserialize)]
pub struct FoundryConfig {
/// The profile section of the `foundry.toml` configuration.
pub profile: Profile,
}
/// Represents a profile in the Foundry configuration.
#[derive(Deserialize)]
pub struct Profile {
/// The default profile settings.
pub default: ProfileSettings,
}
/// Represents the settings for a Foundry profile.
#[derive(Deserialize)]
pub struct ProfileSettings {
/// The output directory for compiled artifacts.
pub out: Option<String>,
}
/// Find a file by walking up the directory tree
pub fn find_up(filename: &str) -> Result<PathBuf> {
let mut path = std::env::current_dir()?;
loop {
let candidate = path.join(filename);
if candidate.exists() {
return Ok(candidate);
}
if !path.pop() {
return Err(anyhow!(
"Could not find {} in current or parent directories",
filename
));
}
}
}