mod enums;
use config::{Config, File, FileFormat};
use serde::{Deserialize, Serialize};
pub use crate::enums::{Categories, PluginType};
#[derive(Debug, Default, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
#[non_exhaustive]
pub struct PluginMetadata {
pub vendor: String,
pub categories: Option<Vec<Categories>>,
pub plugin_type: Option<PluginType>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Metadata {
pub metadata: PluginMetadata,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct ShizenConfig {
pub shizen: Metadata,
}
impl ShizenConfig {
pub fn new() -> Result<Self, config::ConfigError> {
let conf = Config::builder()
.add_source(File::new("Cargo.toml", FileFormat::Toml))
.build()?
.try_deserialize()?;
Ok(conf)
}
}