Geramos comandos da CLI dos arquivos de origem da CLI na openthread (link em inglês) repositório do GitHub.
Este guia fornece instruções sobre como usar nossos comentários de Doxygen personalizados que usamos para criar a lista de comandos.
Primeiros passos
Para documentar um comando da CLI, conclua as etapas a seguir. É importante que siga essas etapas na ordem em que aparecem.
Encontre o
Cmd
associado noopenthread/src/cli
diretório. Por exemplo, para encontrarba state
, pesquiseCmd("ba")
. Cada comando terá um modelo de função associado:template <> otError Interpreter::Process<Cmd("ba")>(Arg aArgs[])
No modelo de função, localize a lógica de comando correta. Por exemplo,
ba state
:else if (aArgs[0] == "state")
Antes da lógica começar, inicie o bloco Doxygen
@cli
:/** * @cli ba state
Em seguida, logo abaixo de
@cli
, adicione exemplos usando@code
. Incluir em um exemplo. Não inclua o comando>
e lembre-se de documente o resultado completo do retorno, incluindo a respostaDone
padrão.* @code * ba state * Started * Done * @endcode
Os comandos da CLI fornecem acesso de linha de comando a métodos comuns de API. e funções, alguns dos comandos compartilham a mesma descrição que seus a API correspondente. Se a descrição do comando for a mesma, conclua o etapas a seguir:
Encontre a API associada no
openthread/include/openthread
diretório. Por exemplo,ba state
é mapeado paraotBorderAgentGetState
.Use o comando
api_copy
e digite o nome da API diretamente abaixo dela. Antes da definição da API, use a cerquilha#
. para criar a vinculação automática de Doxygen.@par api_copy #otBorderAgentGetState
Aqui está um exemplo completo do número mínimo de comentários de Doxygen necessários para gerar automaticamente um comando da CLI OT:
/**
* @cli ba state
* @code
* ba state
* Started
* Done
* @endcode
* @par api_copy
* #otBorderAgentGetState
*/
Para revisar a saída HTML, consulte ba state. Para exemplos avançados e outras opções, consulte as seções a seguir.
Opções de modelo da CLI
Os comandos da CLI são agrupados por um bloco de comentários contínuos, começando com o
Tag ALIAS @cli
. Há suporte para vários exemplos de @code
.
A ordem em que você especifica cada tag é importante.
@cparam
precisa vir depois de@code
- Se você estiver copiando uma descrição de API,
@par api_copy
precisará vir depois@cparam
* @cli command name (overload1,overload2)
* @code
* command name arg1
* Done
* @endcode
* @cparam command name @ca{arg1} [@ca{opt-arg}] [@ca{choose-1}|@ca{choose-2}]
* Optional parameter description; displays below the Parameter heading.
* * Markdown and lists are supported.
* @par api_copy
* #{apiName}
* @par
* Optional CLI specific paragraph. Markdown and lists are supported.
* @note Notes are supported.
* @csa{other command name}
* @sa API method or function name
A seguir, saiba mais sobre como cada tag ALIAS é usada.
Nomes de comandos
Qualquer texto após @cli
se torna o cabeçalho do nome do comando. Esse cabeçalho é usado
a vinculação dinâmica, por exemplo,
prefixo de publicação do netdata
comando:
* @cli netdata publish prefix
Outros comandos podem ser mais complexos. Por exemplo:
O netdata publish dnssrp unicast
oferece algumas opções:
- Publicar por endereço e número da porta
- Publicar pelo número da porta e pelo EID Mesh-Local de um dispositivo
Se um comando estiver sobrecarregado, use parênteses para identificar exclusivamente o comando.
* @cli netdata publish dnssrp unicast (mle)
* @cli netdata publish dnssrp unicast (addr,port)
Descrições de comandos
Há três maneiras de documentar as descrições de comandos. É possível copiar descrição da API, use a descrição da API, mas adicione mais informações, ou fornecer uma descrição completamente exclusiva que pertence somente ao comando da CLI. Nas próximas seções, vamos conhecer cada método.
Copiar a descrição correspondente da API
Use api_copy
para copiar o método ou função de API correspondente. Quando
você copiar APIs, certifique-se de que a descrição funcione para os
e o comando da CLI. Evite usar frases que se aplicam apenas a
função, por exemplo, This function
ou This method
. Prefere
uma voz ativa, por exemplo, Gets the
ou Sets the
.
* @par api_copy
* #otBorderAgentGetState
Adicionar mais informações à descrição da API
Se você quiser usar api_copy
, mas precisar adicionar outras informações que
se aplica apenas ao comando da CLI, use @par
. Depois da tag @par
, verifique se
para ir até a próxima linha.
* @par api_copy
* #otBorderAgentGetState
* @par
* CLI description here; add a few things that do not apply to the API method.
* @par
* Start a new paragraph.
Esses parágrafos são exibidos após a descrição da API.
Forneça apenas descrições específicas da CLI
Alguns comandos da CLI usam várias APIs ou são diferentes da chamada de API.
Outros não têm uma API associada, por exemplo, netdata help
.
Para fornecer uma descrição separada, use @par
.
Não inclua um título @par
e inicie sua descrição no próximo
linha Nesse cenário, não use @api_copy
.
/**
* @cli netdata help
* @code
* netdata help
* ...
* show
* steeringdata
* unpublish
* Done
* @endcode
* @par
* Gets a list of `netdata` CLI commands.
*/
Parâmetros
Defina os parâmetros de comando usando @cparam
e @ca
.
- Coloque colchetes
[ ]
em torno dos argumentos opcionais. - Use barras verticais
|
(barras verticais) entre as opções de argumento. - Para mostrar detalhes do parâmetro, insira frases e listas de markdown
abaixo da tag
@cparam
.
Parâmetros com detalhes
* @cparam netdata publish prefix @ca{prefix} [@ca{padcrosnD}] [@ca{high}|@ca{med}|@ca{low}]
* OT CLI uses mapped arguments to configure #otBorderRouterConfig values. @moreinfo{the @overview}.
Para revisar a saída HTML, consulte prefixo de publicação do netdata.
Parâmetros com listas de markdown
Também é possível usar listas após @cparam
. Isso é útil para quando você quiser
fornecem detalhes sobre os argumentos de comando usados.
* @cparam netdata show [@ca{local}] [@ca{-x}]
* * The optional `-x` argument gets Network Data as hex-encoded TLVs.
* * The optional `local` argument gets local Network Data to sync with Leader.
Para revisar a saída HTML, consulte netdata show.
Os blocos @cli
precisam ser um comentário contínuo sem espaços. Se você adicionar
em uma lista abaixo de @cparam
e precisar de outro parágrafo abaixo dessa lista, use
um ponto final .
para encerrar a lista manualmente.
* @cparam commandname [@ca{qmr}]
* [`q`, `m`, and `r`] map to #otLinkMetricsValues.
* * `q`: Layer 2 LQI (#otLinkMetricsValues::mLqiValue).
* * `m`: Link Margin (#otLinkMetricsValues::mLinkMarginValue).
* * `r`: RSSI (#otLinkMetricsValues::mRssiValue).
* .
* Add another paragraph here. The dot above will end the HTML list that's generated.
* This paragraph displays under the Parameters heading, and not the command description.
Para mais exemplos, consulte a documentação Listas.
Vincular APIs automaticamente
Você pode vincular outros métodos ou funções de API com #otFunctionName
ou
@sa
. Insira esses links no final do bloco de comentários da CLI.
/**
* @cli netdata publish prefix
* @code
* netdata publish prefix fd00:1234:5678::/64 paos med
* Done
* @endcode
* @cparam netdata publish prefix @ca{prefix} [@ca{padcrosnD}] [@ca{high}|@ca{med}|@ca{low}]
* OT CLI uses mapped arguments to configure #otBorderRouterConfig values. @moreinfo{the @overview}.
* @par
* Publish an on-mesh prefix entry. @moreinfo{@netdata}.
* @sa otNetDataPublishOnMeshPrefix
*/
Os links @sa
são exibidos no título Referências da CLI e da API. Para revisar o HTML
a saída, consulte
prefixo de publicação do netdata.
Como impedir vinculações automáticas
Às vezes, o Doxygen pode confundir uma palavra normal com um link para uma classe de CLI, por
exemplo, a palavra Joiner
. Para evitar que o Doxygen se vincule a palavras-chave ou classes
usados em uma frase, use o operador %
na frente da palavra,
Por exemplo:
Clear the %Joiner discerner
Para mais informações, consulte Geração automática de vinculações no guia de doxigênio.
Vincular automaticamente a outros comandos
Use @csa
para vincular a outros comandos.
* @csa{netdata publish dnssrp anycast}
Se um comando estiver sobrecarregado, inclua os parênteses e adicione uma vírgula. se aplicável. Não use espaços entre parênteses:
* @csa{netdata publish dnssrp unicast (addr,port)}
* @csa{netdata publish dnssrp unicast (mle)}
Comandos especiais do Doxygen
Os comandos da CLI são compatíveis com os seguintes ALIASES e comandos especiais do Doxygen:
ALIAS | Exemplo | Descrição |
---|---|---|
@cli | @cli ba port | Nome do comando. Inicia um bloco de comentários da CLI. |
@código | @code ba porta 41953 Concluído @endcode |
Exemplo de comando. |
@ca | [@ca{prefixo}] | Argumento de comando. Use colchetes [ ] para argumentos opcionais. |
@cparam | @cparam joiner discerner @ca{discerner} Detalhes do parâmetro. |
Parâmetros de comando. |
@par | @par Descrição da CLI opcional. |
Parágrafos específicos da CLI. |
@csa | @csa{prefix add} | Command Consulte também. Links para outro comando. |
@sa | @sa otBorderRouterConfig | Consulte também. Cria um link para uma referência da API. |
@visão geral | @visão geral | Cria um link para a Visão geral da CLI OpenThread. |
@netdata | @netdata | Cria um link para Exibir e gerenciar dados de rede com a CLI OT. |
@dataset | @dataset | Cria um link para Exibir e gerenciar conjuntos de dados com a CLI OT. |
@udp | @udp | Cria um link para Testar a funcionalidade UDP com a CLI OT. |
@moreinfo | @moreinfo{@netdata} | Cria um link de referência. |
@nota | @note Frase de destaque importante. | Cria uma caixa de frase de destaque de nota. |
Como corrigir linhas corrompidas pelo script make pretty
Alguns comentários de código, como parâmetros da CLI ou resposta ao comando, precisam estar no
uma única linha para que sejam renderizados corretamente na referência openthread.io.
No entanto, make pretty
impõe um limite de largura de coluna, que pode quebrar a
de saída para linhas longas.
Essa situação pode ser resolvida adicionando quebras de linha e colocando-as com uma tag de comentário HTML, como mostrado nos dois exemplos abaixo.
O primeiro exemplo é o comando dns resolve
, que pode levar até seis
parâmetros. Para renderizar corretamente a sintaxe usando Doxygen e ainda transmitir
na verificação make pretty
, os parâmetros precisam ser divididos em três linhas
na origem:
* @cparam dns resolve @ca{hostname} [@ca{dns-server-IP}] <!--
* --> [@ca{dns-server-port}] [@ca{response-timeout-ms}] <!--
* --> [@ca{max-tx-attempts}] [@ca{recursion-desired-boolean}]
O segundo exemplo é a saída do comando history ipaddr list 5
.
Para que a saída seja renderizada corretamente e ainda transmita a verificação make pretty
,
cada uma das cinco linhas de saída precisa ser dividida em duas, da seguinte maneira:
* history ipaddr list 5
* 00:00:20.327 -> event:Removed address:2001:dead:beef:cafe:c4cb:caba:8d55:e30b <!--
* -->prefixlen:64 origin:slaac scope:14 preferred:yes valid:yes rloc:no
* 00:00:59.983 -> event:Added address:2001:dead:beef:cafe:c4cb:caba:8d55:e30b <!--
* -->prefixlen:64 origin:slaac scope:14 preferred:yes valid:yes rloc:no
* 00:01:22.535 -> event:Added address:fd00:0:0:0:0:0:0:1 prefixlen:64 <!--
* -->origin:manual scope:14 preferred:yes valid:yes rloc:no
* 00:02:33.221 -> event:Added address:fdde:ad00:beef:0:0:ff:fe00:fc00 <!--
* -->prefixlen:64 origin:thread scope:3 preferred:no valid:yes rloc:no
* 00:02:33.221 -> event:Added address:fdde:ad00:beef:0:0:ff:fe00:5400 <!--
* -->prefixlen:64 origin:thread scope:3 preferred:no valid:yes rloc:yes
* Done