use std::collections::HashMap;
#[derive(Debug, Clone, serde::Deserialize)]
pub struct RawRoot {
pub root: RawNode,
pub template: HashMap<String, RawNode>,
pub config: Option<RawConfig>,
pub global: Option<RawGlobal>,
}
#[derive(Debug, Clone, serde::Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum RawNodeType {
Dir,
File,
Ref,
}
#[derive(Debug, Clone, serde::Deserialize)]
pub struct RawNode {
pub r#type: RawNodeType,
pub name: Option<String>,
pub pattern: Option<String>,
pub children: Option<Vec<RawNode>>,
pub r#ref: Option<String>,
pub required: Option<bool>,
pub allow_defined_only: Option<bool>,
pub excluded: Option<Vec<String>>,
}
#[derive(Debug, Clone, serde::Deserialize)]
pub struct RawConfig {
pub max_recursive_depth: Option<usize>,
}
#[derive(Debug, Clone, serde::Deserialize)]
pub struct RawGlobal {
pub required: Option<bool>,
pub allow_defined_only: Option<bool>,
pub excluded: Option<Vec<String>>,
}