espforge_lib/parse/
devices.rs1use 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}