Skip to main content

espforge_lib/parse/
devices.rs

1use crate::parse::EspforgeConfiguration;
2use crate::parse::processor::SectionProcessor;
3use anyhow::{Context, Result};
4use espforge_common::components::Device;
5use serde_yaml_ng::Value;
6use std::collections::HashMap;
7
8pub struct DeviceProvisioner;
9
10impl SectionProcessor for DeviceProvisioner {
11    fn section_key(&self) -> &'static str {
12        "devices"
13    }
14
15    fn priority(&self) -> u32 {
16        100 
17    }
18
19    fn process(&self, content: &Value, model: &mut EspforgeConfiguration) -> Result<()> {
20        let devices: HashMap<String, Device> = 
21            serde_yaml_ng::from_value(content.clone()).context("Failed to deserialize devices")?;
22        
23        model.devices.extend(devices);
24        
25        println!("✓ {} devices provisioned", model.devices.len());
26        Ok(())
27    }
28}