// NAME
name(commandName, commandShortDesc) ::= <<
<("NAME"); format="style-highlight">
       <commandName> - <commandShortDesc>
>>

// SYNOPSIS
synopsisOption(option) ::= <%
<if(option.required)>
<("[")>
<endif>

<first(option.arguments)> <(option.type)>

<if(option.required)>
<("]")>
<endif>
%>

synopsis(commandName, options) ::= <<
<("SYNOPSIS"); format="style-highlight">
       <(commandName); format="style-highlight"> <options: { o | <synopsisOption(o)>}; separator=" ">
>>

// OPTIONS
arguments(arguments) ::= <<
<arguments: { a | <a>}; separator=" or ">
>>

type(type) ::= <<
<type>
>>

required(option) ::= <%
[
<if(option.required)>
<("Mandatory")>
<else>
<("Optional")>
<endif>
<if(option.hasDefaultValue)>
<(", default = ")><(option.defaultValue)>
<endif>
]
%>

option(option) ::= <<
<arguments(option.arguments)> <type(option.type)>
<option.description>
<required(option)>


>>

options(options) ::= <<
<("OPTIONS"); format="style-highlight">
       <options:{ o | <option(o)>}>
>>

// AVAILABILITY
availability(availability) ::= <<
<if(!availability.available)>

<("CURRENTLY UNAVAILABLE"); format="style-highlight">
       <availability.reason>
<endif>
>>

// ALIASES
aliases(aliases) ::= <<
<if(aliases)>
<("ALSO KNOWN AS"); format="style-highlight">
       <aliases: { a | <a>}; separator=", ">
<endif>
>>

// main
main(model) ::= <<
<name(model.name, model.description)>

<synopsis(model.name, model.parameters)>

<options(model.parameters)>
<availability(model.availability)>
<aliases(model.aliases)>
>>
