Qual é a melhor prática para criar uma ferramenta de linha de comando unix / linux em C / C ++?
Atualmente tenho a tarefa de criar alguns utilitários auxiliares de linha de comando para uso da equipe de desenvolvimento interna. No entanto, quero conhecer a prática recomendada para criar ferramentas de linha de comando unix. Eu tentei vergit source code para um exemplo de como ler parâmetros e exibir mensagens de acordo. No entanto, estou procurando um modelo claro para criar uma ferramenta, ler parâmetros com segurança e exibir as mensagens padrão de "ajuda" se um usuário digitar um parâmetro incorreto ou--help
Eu quero mostrar a mensagem de ajuda. Existe uma biblioteca padrão para leitura?-abcFGH
e--parameter
e comutando qual processo inicia baseado no parâmetro passado?
Linha de comando:
git
ou
git --help
Saída:
usage: git [--version] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
[-p|--paginate|--no-pager] [--no-replace-objects] [--bare]
[--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
[-c name=value] [--help]
<command> [<args>]
...
Linha de comando:
MyTool CommandName --CommandArgs
Saída:
O que quer que esse comando específico faça.
O que eu tenho trabalhado até agora:
Código:
int main(int argc, char **argv)
{
if(argc < 2)
helpMessage();
char* commandParameter = argv[1];
if (strncmp(argv [1],"help", strlen(commandParameter)) == 0)
helpMessage();
else if (strncmp(argv [1],"pull", strlen(commandParameter)) == 0)
pull();
else
helpMessage();
}
O que seria ideal seria assim:
Código:
int main(int argc, char **argv)
{
MagicParameters magicParameters = new MagicParameters(argv);
switch(magicParameters[1])
{
case command1:
Command1();
break;
case ...
case help:
default:
HelpMessage();
break;
}
}