Automatizar o fluxo de trabalho no shell

6

Vindo de interfaces GUI, eu finalmente entendi o poder de ter tudo canalizado no texto, mas eu realmente não sei usar todo esse poder ainda.

Eu percebi que o fluxo de trabalho para um projeto em particular é assim ...

# compile repo 1
cd ~/workspace/repo1
make -B
# deploys compiled code into repo2
make deploy

# commit repo 1
cd ~/workspace/repo1
git add .
git commit -m "changes"
git push origin master

# commit repo 2
cd ~/workspace/repo2
git add .
git commit -m "changes"
git push origin master

Minha pergunta não é tanto como fazer isso, é a ferramenta certa para isso? Lendo por aí parece que um script Bash é o que eu preciso, mas gostaria de saber dos especialistas.

    
por Duopixel 27.06.2012 / 20:47

2 respostas

8

Você começou muito bem digitando tudo em um só lugar.

Copie tudo isso em um arquivo de texto (por exemplo, workflow.sh , mas o nome realmente não importa) e coloque esse na primeira linha do arquivo :

#!/bin/sh

Agora você tem um script de shell. Torne-o executável:

chmod +x workflow.sh

Agora você pode executá-lo como um comando:

./workflow.sh

Ele executará cada um desses comandos apenas chamando o fluxo de trabalho.

Você agora é um programador de sistema iniciante. Você só pode subir de lá.

Atualizar

Para especificar alterações sem precisar editar o script toda vez que precisar mudar:

git commit -m "changes"

Para ler:

git commit -m "$1"

Você pode então passar alterações como um argumento de linha de comando:

./workflow "Describe changes made"

Outras ferramentas úteis são aliases e PATH . Você pode criar um diretório especial (por exemplo, ~/bin ) e colocar todos os scripts lá, adicionar esse diretório à sua variável PATH e você não precisará digitar o caminho completo para o script toda vez que quiser iniciá-lo. No caso dos aliases, você precisa criar alias para cada script, mas às vezes o alias fica mais confortável, pois é possível especificar diferentes parâmetros de execução.

    
por 27.06.2012 / 20:58
1

Você pode organizar seu código com utilitários python: link

Outro pacote não mencionado acima, mas ainda promissor é o Snakemake.

    
por 08.12.2013 / 13:30