use serde::Serialize;
use hwpforge::ops::{self, OpsError};
use hwpforge_smithy_hwpx::presets::PresetInfo;
use crate::compat::{self, Tool};
use crate::output::ToolErrorInfo;
#[derive(Debug, Serialize)]
pub struct TemplatesData {
pub templates: Vec<PresetInfo>,
}
pub fn run_templates(name: Option<&str>) -> Result<TemplatesData, ToolErrorInfo> {
let presets = ops::templates().presets;
if let Some(name) = name {
let filtered: Vec<PresetInfo> = presets.into_iter().filter(|p| p.name == name).collect();
if filtered.is_empty() {
return Err(compat::tool_error(
Tool::Templates,
OpsError::PresetNotFound { name: name.to_string() },
));
}
Ok(TemplatesData { templates: filtered })
} else {
Ok(TemplatesData { templates: presets })
}
}