Existem padrões / documentos que me dizem como produzir mensagens de ajuda tão boas?

3

Esta é uma continuação de uma pergunta anterior , em que Silverrocker sugeriu uma boa maneira de exibir uma mensagem de ajuda semelhante a comandos como ls ou du .

program --help

Usage: program [<options>][<arguments> ...]

Options:
--help         show this message, then exit
--something    after some spaces for alignment, an explenation follows.

Eu realmente gosto dessa abordagem, mas só posso imaginar como produzir uma mensagem de ajuda desse tipo. Existe algum GNU / quaisquer documentos / padrões sobre como produzir algo assim?

    
por helpermethod 29.01.2013 / 12:43

2 respostas

3

Em ls e du, a saída --help é simples e simples codificada no programa.

Em linguagens de script, como Python, pode haver uma biblioteca de análise de opções que faz isso automaticamente para você.

Quanto aos padrões, a única coisa que consegui encontrar foi:

link

ou mais específico para ls, du (coreutils):

link

que é totalmente inútil.

Acho que cabe a você formatá-lo bem. :)

    
por 29.01.2013 / 13:00
2

Ao escrever um utilitário de linha de comando, crio uma função usage() que exibe informações nesse formulário e, quando adiciono ou altero algo no código getopt (ou qualquer outro), atualizo a função de uso para refletir isso. Naturalmente, o problema com esse sistema é que, se você é preguiçoso, pode acabar com uma mensagem de uso imprecisa, mas isso não é um problema tão difícil de evitar ou corrigir.

Quanto às diretrizes, o princípio "uso:" pode seguir as convenções da página do manual, por exemplo:

Usage: mycommand -h | [-x|y|z] [-a] [-b arg] required_param [optional_param]

Onde um tubo | indica ou (assim você pode usar um dos x ou y ou z) e colchetes com bits opcionais. Isso pode ser simplificado, como por ls, para

Usage: mycommand [options] required_param [optional_param]

Depois, veja as opções em ordem alfabética, etc.

"Uso" é acionado se uma opção de falha for analisada, -h ou --help for usado, um argumento obrigatório estiver faltando, etc.

    
por 29.01.2013 / 13:17