use camino::Utf8PathBuf;
use crate::{error::Result, model::normalized::Policy};
pub mod agents_md;
pub mod claude_md;
pub mod clinerules;
pub mod copilot_instructions;
pub mod copilot_instructions_scoped;
pub mod cursor_rules;
pub mod gemini_md;
pub mod junie_guidelines;
pub mod windsurf_rules;
pub struct RenderedOutput {
pub path: Utf8PathBuf,
pub content: String,
}
pub fn render_all(policy: &Policy) -> Result<Vec<RenderedOutput>> {
let mut outputs = Vec::new();
if policy.outputs.agents_md {
outputs.push(agents_md::render(policy)?);
}
if policy.outputs.claude_md {
outputs.push(claude_md::render(policy)?);
}
if policy.outputs.cursor_rules {
outputs.extend(cursor_rules::render(policy)?);
}
if policy.outputs.gemini_md {
outputs.push(gemini_md::render(policy)?);
}
if policy.outputs.copilot_instructions {
outputs.push(copilot_instructions::render(policy)?);
}
if policy.outputs.clinerules {
outputs.extend(clinerules::render(policy)?);
}
if policy.outputs.windsurf_rules {
outputs.extend(windsurf_rules::render(policy)?);
}
if policy.outputs.copilot_instructions_scoped {
outputs.extend(copilot_instructions_scoped::render(policy)?);
}
if policy.outputs.junie_guidelines {
outputs.push(junie_guidelines::render(policy)?);
}
Ok(outputs)
}