Como determinar o sucesso do programa ao executar uma sequência de tarefas semelhantes?

3

Estou escrevendo uma série de ferramentas CLI que compartilham o mesmo comando pai, semelhante a programas como git .

program verb OPTIONS

Um dos verbos de ação, install , foi criado para git clone , já que muitos repositórios são especificados como URLs.

O que é uma maneira lógica robusta e semelhante ao UNIX para determinar o sucesso ou a falha do programa?

  1. Bons URLs > 0 → EXIT_SUCCESS
  2. URLs inválidos == 0 → EXIT_SUCCESS
  3. Escreva o número de URLs válidos para a saída padrão e, em seguida, (1) ou (2)
  4. Retorna o número de URLs válidos.
  5. Outro?
por Jorge Bucaran 09.11.2015 / 07:21

1 resposta

4

Seu programa deve pelo menos sair (3) EXIT_SUCCESS (ou seja, 0 ) em sucesso e provavelmente EXIT_FAILURE (ie 1) na falha. Você pode copiar (ou ser inspirado por) FreeBSD sysexits.h para mais códigos de falha (mas não tenho certeza se vale a pena o esforço).

Não esqueça de dar uma mensagem para stderr (ou através de syslog (3) ) para qualquer tipo de falha. Pelo que você descreve, falhar em git clone até mesmo um (entre muitos) repositórios para seu subcomando install deve ser uma falha.

O usuário provavelmente faria alguma ação corretiva (por exemplo, corrigir a ortografia da URL com falha) e, em seguida, repetir o mesmo comando, então você pode querer que ele seja idempotente.

Não se esqueça da opção --help e documente qualquer código de saída fora de 0 e 1.

    
por 09.11.2015 / 07:32