selfware 0.6.1

Your personal AI workshop — software you own, software that lasts
use crate::swl::parser::SwlDocument;

pub fn generate_rust_stub(doc: &SwlDocument) -> String {
    let agents = doc
        .agents
        .keys()
        .map(|name| format!("    \"{name}\","))
        .collect::<Vec<_>>()
        .join("\n");

    let workflows = doc
        .workflows
        .keys()
        .map(|name| format!("    \"{name}\","))
        .collect::<Vec<_>>()
        .join("\n");

    format!(
        "// Generated SWL stub for {name}\n\
         pub const SWL_NAME: &str = \"{name}\";\n\
         pub const SWL_VERSION: &str = \"{version}\";\n\
         pub const SWL_AGENTS: &[&str] = &[\n{agents}\n];\n\
         pub const SWL_WORKFLOWS: &[&str] = &[\n{workflows}\n];\n",
        name = doc.name,
        version = doc.version,
        agents = agents,
        workflows = workflows
    )
}

#[cfg(test)]
#[path = "../../../tests/unit/swl/codegen/rust_gen/rust_gen_test.rs"]
mod tests;