ggen-cli-lib 26.7.3

CLI interface for ggen
Documentation
{#- Single verb function template for clap-noun-verb framework
    Generates ONE verb function inside a noun module.
    Delegates to crate::domain::<noun>::<verb>().
    Domain logic is NEVER generated.

    Expected variables:
    - verb_name: string
    - noun_name: string
    - about: string
    - fn_name: string
    - params: array of { name, type, required, comment, tags }
-#}
    /// {{ about }}
    {%- if params | length > 0 %}
    ///
    /// # Arguments
    {%- for p in params %}
    /// * `{{ p.name }}` - {{ p.comment }}{{ p.tags | default(value="") }}
    {%- endfor %}
    {%- endif %}
    #[verb("{{ verb_name }}")]
    pub fn {{ fn_name }}({% for p in params %}{%- if p.type == "bool" %}{{ p.name }}: bool{% elif p.required %}{{ p.name }}: {{ p.type }}{% else %}{{ p.name }}: Option<{{ p.type }}>{% endif %}{%- if not loop.last %}, {% endif %}{% endfor %}) -> Result<serde_json::Value> {
        let result = crate::domain::{{ noun_name | snake }}::{{ fn_name }}(
            {%- for p in params %}
            {{ p.name }},
            {%- endfor %}
        ).map_err(|e| CliError::from(e))?;
        Ok(serde_json::to_value(&result).map_err(|e| CliError::Serialization(e.to_string()))?)
    }