use crate::{config_enum, config_struct, is_false};
use schematic::{Config, validate};
config_struct!(
#[derive(Config)]
pub struct BinConfig {
#[setting(validate = validate::not_empty)]
pub bin: String,
#[serde(default, skip_serializing_if = "is_false")]
pub force: bool,
#[serde(default, skip_serializing_if = "is_false")]
pub local: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
);
config_enum!(
#[derive(Config)]
#[serde(untagged)]
pub enum BinEntry {
String(String),
#[setting(nested)]
Object(BinConfig),
}
);
impl BinEntry {
pub fn get_name(&self) -> &str {
match self {
BinEntry::String(name) => name,
BinEntry::Object(cfg) => &cfg.bin,
}
}
}