runmat-config 0.6.2

Shared configuration schema and loaders for RunMat
Documentation
use crate::desktop::schema::DesktopConfigValidationError;

#[derive(Debug, thiserror::Error)]
pub enum RunmatConfigDocumentError {
    #[error("unsupported RunMat config extension `{0}`; expected .toml or .json")]
    UnsupportedExtension(String),
    #[error("RunMat config path must end in .toml or .json")]
    MissingExtension,
    #[error("failed to parse RunMat TOML: {0}")]
    TomlParse(String),
    #[error("failed to parse RunMat JSON: {0}")]
    JsonParse(#[from] serde_json::Error),
    #[error("failed to edit RunMat TOML: {0}")]
    TomlEdit(String),
    #[error("RunMat config must be a top-level object")]
    InvalidDocumentShape,
    #[error("{0}")]
    DesktopValidation(String),
    #[error("legacy Desktop configuration cannot be migrated automatically: {0}")]
    LegacyMigration(String),
}

impl From<DesktopConfigValidationError> for RunmatConfigDocumentError {
    fn from(value: DesktopConfigValidationError) -> Self {
        Self::DesktopValidation(value.message)
    }
}