Entendendo os argumentos cmd de um aplicativo

0

Estou testando um aplicativo e seu código fonte não fornece pistas sobre a sintaxe real que não seja a saída da ajuda.

Eu tentei muitas combinações tentando fazê-lo funcionar, e ele continua me exibindo a tela de ajuda devido à sintaxe inválida. Aqui está o uso:

Usage is : ngenerator <options> filepath|directorypath
Where <options> may be :

        -h : print this help notice
        -d : Tell NGenerator that the supplied path is a directory path -o filename : write the source code in filename
        -u Unsafe|Safe[UnsafeWithWrapper : the degree of "unsafeness" of the source, see man

Agora, se você estivesse olhando para isso, qual seria a maneira correta de funcionar? O programa não tem absolutamente nenhuma documentação e é de um projeto morto. No primeiro olhar, você pode me dar o que você acha que seria a maneira correta de inserir a sintaxe?

    
por user1632018 09.11.2013 / 06:57

1 resposta

0

Para responder ao título desta questão. A saída da ajuda na linha de comando deve ser padrão. Geralmente, o Linux tende a ser mais consistente do que o Windows, mas geralmente é assim que eles podem ser entendidos:

C:\>attrib /?
Displays or changes file attributes.

ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [+I | -I]
       [drive:][path][filename] [/S [/D] [/L]]
...

As regras são geralmente as seguintes:

  • Qualquer coisa em [] é opcional
  • Parâmetros opcionais podem ser aninhados: [/S [/D] [/L]] significa que você pode, opcionalmente, fornecer /S e, se preferir, também é possível fornecer /D e / ou /L
  • Alguns parâmetros são uma situação 'ou / ou': [+R | -R] significa que você pode, opcionalmente, especificar +R ou -R , mas não ambos.

Aqui está outro exemplo:

Usage: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
            [-r count] [-s count] [[-j host-list] | [-k host-list]]
            [-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name

Observe que o Windows às vezes usa - e às vezes usa / para prefixar os parâmetros (suspiro). Isso mostra que alguns parâmetros opcionais, como -n , também precisam de um valor, count e também que target_name é obrigatório porque não está em []

A saída do ngenerator:

Usage is : ngenerator <options> filepath|directorypath
Where <options> may be :

        -h : print this help notice
        -d : Tell NGenerator that the supplied path is a directory path -o filename : write the source code in filename
        -u Unsafe|Safe[UnsafeWithWrapper : the degree of "unsafeness" of the source, see man

... é muito pobre. Olhando para isso, eu tentaria: ngenerator -o c:\file.h . Quer que c:\file.h já exista? Olhando para o repositório, há uma quantidade horrível de código para analisar uma linha de comando simples, que não dá muita confiança ao aplicativo. Precisa C:\file.h ?

    
por 10.12.2013 / 11:28