fhevm-forge 0.1.1

Foundry scaffold, deployer, gas estimator and linter for Zama FHEVM
Documentation
use anyhow::Result;
use serde::{Deserialize, Serialize};
use std::fs;

#[derive(Debug, Default, Deserialize, Serialize)]
pub struct FhevmForgeConfig {
    #[serde(default)]
    pub deploy: DeployConfig,

    #[serde(default)]
    pub lint: LintConfig,

    #[serde(default)]
    pub gas: GasConfig,
}

#[derive(Debug, Default, Deserialize, Serialize)]
pub struct DeployConfig {
    #[serde(default)]
    pub chains: Vec<String>,
    pub default_contract: Option<String>,
}

#[derive(Debug, Default, Deserialize, Serialize)]
pub struct LintConfig {
    #[serde(default)]
    pub ignore: Vec<String>,
}

#[derive(Debug, Default, Deserialize, Serialize)]
pub struct GasConfig {
    pub output: Option<Vec<String>>,
    pub json_path: Option<String>,
    pub warn_if_coprocessor_gas_exceeds: Option<u64>,
}

impl FhevmForgeConfig {
    pub fn load() -> Result<Self> {
        let path = "fhevm-forge.toml";
        if !std::path::Path::new(path).exists() {
            return Ok(Self::default());
        }
        let contents = fs::read_to_string(path)?;
        let config: FhevmForgeConfig = toml::from_str(&contents)?;
        Ok(config)
    }
}