use figment::{ error::Result, providers::{Format, Serialized, Toml}, value::{Dict, Map}, Figment, Metadata, Profile, Provider, }; use serde::{Deserialize, Serialize}; use std::path::PathBuf; #[derive(Debug, Clone, Deserialize, Serialize)] pub struct Config { pub network_configs_path: Option, } impl Default for Config { fn default() -> Self { Config { network_configs_path: None, } } } impl Config { pub fn from(provider: T) -> Result { Figment::from(provider).extract() } pub fn figment() -> Figment { Figment::from(Config::default()).merge(Toml::file("NSpawn.toml").nested()) } } impl Provider for Config { fn metadata(&self) -> Metadata { Metadata::named("ZFS Config") } fn data(&self) -> Result> { Serialized::defaults(Config::default()).data() } }