Um novo jeito de escrever Shell Scripts | Utilizando Javascript com `zx` da Google!
Existem diversas razões para optar por escrever shell scripts: automação de tarefas, administração de sistemas, scripts de redes e inúmeras outras possibilidades. Entretanto, nem todos se sentem confortáveis com as linguagens nativas de script de shell do sistema, como o .sh no Linux ou .bat no Windows. Neste artigo, apresentarei uma abordagem alternativa para a escrita de shell scripts de maneira mais acessível, utilizando Node.js e a biblioteca zx desenvolvida pela Google. Por fim, criaremos um script que automatiza o processo de adicionar, comitar e fazer push no git.
Let’s Get Started:
Vamos iniciar um projeto novo no Node:
npm init -y
Instalando o zx:
npm install zx
Criando um Exemplo Simples com zx:
Crie um arquivo chamado index.js e adicione o seguinte código:
import { $ } from "zx";
$`echo Hello World!`
Execute o arquivo no seu terminal usando node index.js
.
Se tudo ocorrer corretamente, você verá a mensagem impressa no terminal.
*Note que não utilizamos console.log() em nenhum momento.
Automação de Git com Script:
Às vezes, tarefas repetitivas como adicionar, comitar e fazer push para o GitHub podem se tornar cansativas:
git add .
git commit -m ‘Alguma Coisa’
git push
Por esse motivo, vamos implementar uma solução usando Javascript.
Vamos criar um script simples!
Substitua o exemplo anterior pelo código a seguir:
import { $ } from "zx"; // Importa a biblioteca zx
if (process.argv.length === 2) { //Verifica se o usuário digitou alguma mensagem
console.error('Por favor, digite a mensagem do Commit!'); //Exibe mensagem de erro
process.exit(1); //Finaliza a execução
}
else{
var message = process.argv[2] //Captura a mensagem
// console.log(message) //Exibe a mensagem
await $`git add .` //Adiciona o arquivo no Git
await $`git commit -m ${message}` //Comita o arquivo com a mensagem digitada
await $`git push` //Envia o arquivo para o Git
console.log("Add, Commit e Push realizado com sucesso!")
process.exit(1)
}
Considerações Finais:
Em suma, a integração da biblioteca zx com Javascript não apenas simplifica tarefas no shell, mas também catalisa a automação com elegância para quem conhece bem a linguagem. Ao abraçar essa combinação, se desvendam soluções mais fluidas e poderosas para a automação de processos no shell. Para os familiarizados com Javascript, essa abordagem não apenas facilita a criação de scripts, mas também eleva a eficácia e legibilidade das tarefas executadas, oferecendo uma via expressa rumo à automação, podendo ser simples ou complexa e sofisticada.
Documentação do zx:
https://github.com/google/zx
Subi o código para o meu Github: