diff --git a/src/bin/generate_definitions.rs b/src/bin/generate_definitions.rs index 495b5b0..7518f2b 100644 --- a/src/bin/generate_definitions.rs +++ b/src/bin/generate_definitions.rs @@ -1,12 +1,8 @@ use std::fs::{self, File}; use std::io::Write; -use automation::config::{ - Config, FulfillmentConfig, Module as ConfigModule, Schedule, SetupFunction, -}; +use automation::config::generate_definitions; use automation_lib::Module; -use automation_lib::mqtt::{MqttConfig, WrappedAsyncClient}; -use lua_typed::Typed; use tracing::{info, warn}; extern crate automation_devices; @@ -29,28 +25,6 @@ fn write_definitions(filename: &str, definitions: &str) -> std::io::Result<()> { Ok(()) } -fn config_definitions() -> String { - let mut output = "---@meta\n\n".to_string(); - - output += - &FulfillmentConfig::generate_full().expect("FulfillmentConfig should have a definition"); - output += "\n"; - output += &Config::generate_full().expect("Config should have a definition"); - output += "\n"; - output += &SetupFunction::generate_full().expect("SetupFunction should have a definition"); - output += "\n"; - output += &Schedule::generate_full().expect("Schedule should have a definition"); - output += "\n"; - output += &ConfigModule::generate_full().expect("Module should have a definition"); - output += "\n"; - output += &MqttConfig::generate_full().expect("MqttConfig should have a definition"); - output += "\n"; - output += - &WrappedAsyncClient::generate_full().expect("WrappedAsyncClient should have a definition"); - - output -} - fn main() -> std::io::Result<()> { tracing_subscriber::fmt::init(); @@ -65,7 +39,7 @@ fn main() -> std::io::Result<()> { } } - write_definitions("config.lua", &config_definitions())?; + write_definitions("config.lua", &generate_definitions())?; Ok(()) } diff --git a/src/config.rs b/src/config.rs index c9820b0..60408d0 100644 --- a/src/config.rs +++ b/src/config.rs @@ -38,7 +38,7 @@ pub struct FulfillmentConfig { } #[derive(Debug)] -pub struct SetupFunction(mlua::Function); +struct SetupFunction(mlua::Function); impl Typed for SetupFunction { fn type_name() -> String { @@ -70,7 +70,7 @@ impl Deref for SetupFunction { } #[derive(Debug, Default)] -pub struct Schedule(HashMap>); +struct Schedule(HashMap>); impl Typed for Schedule { fn type_name() -> String { @@ -103,11 +103,11 @@ impl IntoIterator for Schedule { } #[derive(Debug, Default)] -pub struct Module { - pub setup: Option, - pub devices: Vec>, - pub schedule: Schedule, - pub modules: Vec, +struct Module { + setup: Option, + devices: Vec>, + schedule: Schedule, + modules: Vec, } // TODO: Add option to typed to rename field @@ -264,3 +264,25 @@ fn default_fulfillment_ip() -> Ipv4Addr { fn default_fulfillment_port() -> u16 { 7878 } + +pub fn generate_definitions() -> String { + let mut output = "---@meta\n\n".to_string(); + + output += + &FulfillmentConfig::generate_full().expect("FulfillmentConfig should have a definition"); + output += "\n"; + output += &Config::generate_full().expect("Config should have a definition"); + output += "\n"; + output += &SetupFunction::generate_full().expect("SetupFunction should have a definition"); + output += "\n"; + output += &Schedule::generate_full().expect("Schedule should have a definition"); + output += "\n"; + output += &Module::generate_full().expect("Module should have a definition"); + output += "\n"; + output += &MqttConfig::generate_full().expect("MqttConfig should have a definition"); + output += "\n"; + output += + &WrappedAsyncClient::generate_full().expect("WrappedAsyncClient should have a definition"); + + output +}