let vers = (version).version for command in ($scope.commands | where is_custom == false && is_extern == false) { let top = $"--- title: ($command.command) layout: command version: ($vers) --- ($command.usage) " let sig = ($command.signature | each { |param| if $param.parameter_type == "positional" { $"('(')($param.parameter_name)(')')" } else if $param.parameter_type == "switch" { $"--($param.parameter_name)" } else if $param.parameter_type == "named" { $"--($param.parameter_name)" } else if $param.parameter_type == "rest" { $"...($param.parameter_name)" } } | str collect " ") let signature = $"## Signature(char nl)(char nl)```> ($command.command) ($sig)```(char nl)(char nl)" let params = ($command.signature | each { |param| if $param.parameter_type == "positional" { $" - `($param.parameter_name)`: ($param.description)" } else if $param.parameter_type == "switch" { $" - `--($param.parameter_name)`: ($param.description)" } else if $param.parameter_type == "named" { $" - `--($param.parameter_name) {($param.syntax_shape)}`: ($param.description)" } else if $param.parameter_type == "rest" { $" - `...($param.parameter_name)`: ($param.description)" } } | str collect (char nl)) let parameters = if ($command.signature | length) > 0 { $"## Parameters(char nl)(char nl)($params)(char nl)(char nl)" } else { "" } let examples = if ($command.examples | length) > 0 { let example_top = $"## Examples(char nl)(char nl)" let $examples = ($command.examples | each { |example| $"($example.description) ```shell > ($example.example) ``` " } | str collect) $example_top + $examples } else { "" } let doc = ( ($top + $signature + $parameters + $examples) | lines | each {|it| ($it | str trim -r) } | str collect (char nl) ) let safe_name = ($command.command | str find-replace '\?' '' | str find-replace ' ' '_') $doc | save --raw $"./docs/commands/($safe_name).md" $"./docs/commands/($safe_name).md" } | length | $"($in) commands written"