runmat-config 0.5.6

Shared configuration schema and loaders for RunMat
Documentation
use serde::{Deserialize, Serialize};
use std::path::PathBuf;

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct FeaConfig {
    #[serde(default)]
    pub artifact_store: Option<FeaArtifactStoreMode>,
    #[serde(default)]
    pub artifact_root: Option<PathBuf>,
    #[serde(default)]
    pub artifact_max_runs: Option<usize>,
    #[serde(default)]
    pub artifact_max_runs_per_kind: Option<usize>,
    #[serde(default)]
    pub study_artifact_root: Option<PathBuf>,
    #[serde(default)]
    pub geometry_prep_artifact_root: Option<PathBuf>,
    #[serde(default)]
    pub geometry_prep_max_artifacts: Option<usize>,
    #[serde(default)]
    pub geometry_prep_max_artifacts_per_geometry: Option<usize>,
    #[serde(default)]
    pub geometry_prep_max_age_seconds: Option<u64>,
    #[serde(default)]
    pub geometry_prep_require_latest_revision: Option<bool>,
    #[serde(default)]
    pub thermo_field_artifact_root: Option<PathBuf>,
}

#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
#[serde(rename_all = "snake_case")]
pub enum FeaArtifactStoreMode {
    #[default]
    InMemory,
    Filesystem,
}