Automatize o fluxo de trabalho no shell

Automatize o fluxo de trabalho no shell

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

Percebi que o fluxo de trabalho para um projeto específico é 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, mas qual é a ferramenta certa para isso? Lendo por aí, parece que um script Bash é o que eu preciso, mas gostaria de saber com os especialistas.

Responder1

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 issona 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 em ordem apenas chamando o fluxo de trabalho.

Agora você é um programador de sistema iniciante. Você só pode subir a partir daí.

Atualizar

Especificarmudançassem precisar editar o script toda vez que você precisar alterar:

git commit -m "changes"

Ler:

git commit -m "$1"

Você pode então passarmudançasin 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 PATHvariável e não precisar digitar o caminho completo para o script toda vez que quiser iniciá-lo. No caso de aliases, você precisa criar um alias para cada script, porém às vezes o alias é mais confortável porque você pode especificar diferentes parâmetros de execução nele.

Responder2

Você pode organizar seu código com utilitários python:https://wiki.python.org/moin/FlowBasedProgramming

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

informação relacionada