igor 0.1.2

Generic text-based vendoring
Documentation
use anyhow::Result;
use serde::{Deserialize, Serialize};
use crate::file_system::ConfigFormat;
use super::{UseThundercloudConfig, NicheConfig};
use super::use_thundercloud_config_data::UseThundercloudConfigData;

#[derive(Deserialize,Serialize,Debug)]
#[serde(rename_all = "kebab-case")]
pub struct NicheConfigData {
    use_thundercloud: UseThundercloudConfigData,
}

impl NicheConfig for NicheConfigData {
    fn from_str(body: &str, config_format: ConfigFormat) -> Result<Self> {
        let niche_config: NicheConfigData = match config_format {
            ConfigFormat::TOML => toml::from_str(body)?,
            ConfigFormat::YAML => {
                let result = serde_yaml::from_str(body)?;

                #[cfg(test)]
                crate::test_utils::log_toml("Niche Config", &result)?;

                result
            }
        };
        Ok(niche_config)
    }

    fn use_thundercloud(&self) -> &impl UseThundercloudConfig {
        &self.use_thundercloud
    }
}