summaryrefslogtreecommitdiff
path: root/gen/gen_renderers_file.rs
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-03-17 14:47:25 +0800
committer魏曹先生 <1992414357@qq.com>2026-03-17 14:47:25 +0800
commit92670ec92b555383fc31cf42b15d4ea38f8e9c8f (patch)
treeb2f1479247411027fb41b346d2195e79e38729a1 /gen/gen_renderers_file.rs
parent7fcc38d0e76fc4088269cd3ea22c56a60e5db109 (diff)
Extract build-time generation code into separate crate
Diffstat (limited to 'gen/gen_renderers_file.rs')
-rw-r--r--gen/gen_renderers_file.rs69
1 files changed, 0 insertions, 69 deletions
diff --git a/gen/gen_renderers_file.rs b/gen/gen_renderers_file.rs
deleted file mode 100644
index f16c504..0000000
--- a/gen/gen_renderers_file.rs
+++ /dev/null
@@ -1,69 +0,0 @@
-use std::path::PathBuf;
-
-use just_template::{Template, tmpl};
-
-use crate::r#gen::constants::{
- OVERRIDE_RENDERER_DISPATCHER, OVERRIDE_RENDERER_DISPATCHER_TEMPLATE, REGISTRY_TOML,
-};
-
-/// Generate renderer list file from Registry.toml configuration using just_template
-pub async fn generate_renderers_file(repo_root: &PathBuf) {
- let template_path = repo_root.join(OVERRIDE_RENDERER_DISPATCHER_TEMPLATE);
- let output_path = repo_root.join(OVERRIDE_RENDERER_DISPATCHER);
- let config_path = repo_root.join(REGISTRY_TOML);
-
- // Read the template
- let template_content = tokio::fs::read_to_string(&template_path).await.unwrap();
-
- // Read and parse the TOML configuration
- let config_content = tokio::fs::read_to_string(&config_path).await.unwrap();
- let config: toml::Value = toml::from_str(&config_content).unwrap();
-
- // Collect all renderer configurations
- let mut renderers = Vec::new();
-
- let Some(table) = config.as_table() else {
- return;
- };
- let Some(renderer_table) = table.get("renderer") else {
- return;
- };
- let Some(renderer_table) = renderer_table.as_table() else {
- return;
- };
-
- for (_, renderer_value) in renderer_table {
- let Some(renderer_config) = renderer_value.as_table() else {
- continue;
- };
- let Some(name) = renderer_config.get("name").and_then(|v| v.as_str()) else {
- continue;
- };
- let Some(renderer_type) = renderer_config.get("type").and_then(|v| v.as_str()) else {
- continue;
- };
-
- renderers.push((name.to_string(), renderer_type.to_string()));
- }
-
- // Create template
- let mut template = Template::from(template_content);
-
- for (name, renderer_type) in &renderers {
- tmpl!(template += {
- renderer_match_arms {
- (name = name, renderer_type = renderer_type)
- }
- });
- }
-
- let final_content = template.expand().unwrap();
-
- // Write the generated code
- tokio::fs::write(output_path, final_content).await.unwrap();
-
- println!(
- "Generated renderer list file with {} renderers using just_template",
- renderers.len()
- );
-}