From df64804b008de94ac500b8a04710da6297518ad3 Mon Sep 17 00:00:00 2001 From: Dreaded_X Date: Wed, 15 Oct 2025 04:01:15 +0200 Subject: [PATCH] feat: Add bin to automatically generate lua definitions --- src/bin/generate_definitions.rs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/bin/generate_definitions.rs diff --git a/src/bin/generate_definitions.rs b/src/bin/generate_definitions.rs new file mode 100644 index 0000000..b4c44d8 --- /dev/null +++ b/src/bin/generate_definitions.rs @@ -0,0 +1,32 @@ +use std::fs::{self, File}; +use std::io::Write; + +use automation_lib::Module; +use tracing::{info, warn}; + +extern crate automation_devices; + +fn main() -> std::io::Result<()> { + tracing_subscriber::fmt::init(); + + let definitions_directory = + std::path::Path::new(std::env!("CARGO_MANIFEST_DIR")).join("definitions"); + fs::create_dir_all(&definitions_directory)?; + + for module in inventory::iter:: { + if let Some(definitions) = module.definitions() { + info!(name = module.get_name(), "Generating definitions"); + + let filename = format!("{}.lua", module.get_name()); + let mut file = File::create(definitions_directory.join(filename))?; + + file.write_all(b"-- DO NOT MODIFY, FILE IS AUTOMATICALLY GENERATED\n")?; + file.write_all(definitions.as_bytes())?; + } else { + warn!(name = module.get_name(), "No definitions"); + } + } + + Ok(()) + // automation_devices::generate_definitions() +}