espforge_lib/parse/
devices.rs1use crate::parse::EspforgeConfiguration;
2use crate::parse::processor::{ProcessorRegistration, SectionProcessor};
3use anyhow::{Context, Result};
4use espforge_common::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 fn priority(&self) -> u32 {
15 150 }
17
18 fn process(&self, content: &Value, model: &mut EspforgeConfiguration) -> Result<()> {
19 let devices: HashMap<String, Device> =
20 serde_yaml_ng::from_value(content.clone()).context("Failed to deserialize devices")?;
21
22 model.devices = devices;
23 println!("✓ {} devices provisioned", model.devices.len());
24 Ok(())
25 }
26}
27
28inventory::submit! {
29 ProcessorRegistration {
30 factory: || Box::new(DeviceProvisioner),
31 }
32}