use crate::model::TemplateManifest; use include_dir::{include_dir, Dir}; use std::collections::BTreeMap; use std::fs; use std::path::Path; static TMPL_DIR: Dir = include_dir!("$CARGO_MANIFEST_DIR/templates"); #[derive(Debug, Clone)] pub struct Template { pub manifest: TemplateManifest, pub files: Vec<(String, String)>, } fn collect_dir_files(dir: &Dir, out: &mut Vec<(String, String)>) { for f in dir.files() { let p = f.path().to_string_lossy().to_string(); let name = f.path().file_name().unwrap().to_string_lossy().to_string(); if name == "template.toml" { continue; } if let Some(s) = f.contents_utf8() { out.push((p, s.to_string())); } } for d in dir.dirs() { collect_dir_files(d, out); } } pub fn list_templates() -> Vec