espforge 0.1.24

A scaffolding++ project generator for ESP32 projects
Documentation
use crate::parse::EspforgeConfiguration;
use crate::parse::processor::SectionProcessor;
use anyhow::{Context, Result};
use espforge_configuration::components::Device;
use serde_yaml_ng::Value;
use std::collections::HashMap;

pub struct DeviceProvisioner;

impl SectionProcessor for DeviceProvisioner {
    fn section_key(&self) -> &'static str {
        "devices"
    }

    fn priority(&self) -> u32 {
        100
    }

    fn process(&self, content: &Value, model: &mut EspforgeConfiguration) -> Result<()> {
        let devices: HashMap<String, Device> =
            serde_yaml_ng::from_value(content.clone()).context("Failed to deserialize devices")?;

        model.devices.extend(devices);

        println!("✓ {} devices provisioned", model.devices.len());
        Ok(())
    }
}