uma cadeia de comandos do terminal, cada um executado se existir um arquivo

0

Procurei isso em outras perguntas, mas parece que não consigo encontrar nada parecido. No entanto, isso parece bastante útil.

Desejo configurar um snippet / alias do ZSH para meu git add . , para que ele execute três tarefas em uma cadeia:

  1. se o caminho ./readme.md existir, execute doctoc (aplicativo CLI instalado globalmente a partir do npm) nele. Se isso não acontecer , não faça nada e pule para a próxima etapa.
  2. se o caminho ./changelog.md existir, execute um script CLI local diferente instalado nele (digamos, chamado changelogupd ). Se isso não acontecer , não faça nada e pule para a próxima etapa.
  3. independentemente dos resultados anteriores, execute git add .

Atualmente, tenho dois comandos encadeados em .zshrc alias como este e funciona:

path-exists ./readme.md && doctoc readme.md && git add . || git add .

Mas eu quero três : duas verificações de caminho e chamadas condicionais mais git add .

A propósito. o path-exists é path-exists-cli , globalmente instalado via npm.

Três cadeias de comando parecem complicadas, abaixo está uma mistura sem sentido para mostrar a coisa difícil que estou procurando:

path-exists ./readme.md && doctoc readme.md && git add . || path-exists ./changelog.md && changelogupd changelog.md && git add . || git add .

Devo tentar cobrir todos os quatro casos usando canais duplos:

(

  1. readme presente, não changelog , mais git add .
  2. readme não presente, não changelog , mais git add .
  3. ambos readme e changelog presente, mais git add .
  4. não readme mas changelog presente, mais git add .

ou existe uma maneira mais fácil (ou uma biblioteca npm CLI ou algum comando de terminal secreto)?

Isto é para ser executado em um terminal Mac pelo caminho. Obrigado.

    
por revelt 09.05.2017 / 08:29

2 respostas

4

Basta escrever uma função:

my-git-add-.() {
  [ -e readme.md ] && doctoc readme.md
  [ -e changelog.md ] && changelogupd changelog.md
  git add .
}
    
por 09.05.2017 / 09:03
2
path-exists ./readme.md    && { doctoc       readme.md;    :; } || \
path-exists ./changelog.md && { changelogupd changelog.md; :; }
git add .

Você precisa agrupar os comandos para alcançar o que você está querendo. A instrução : foi adicionada para fornecer um final verdadeiro quando o doctoc pode falhar.

    
por 09.05.2017 / 08:55