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:
Achei interessante, realmente a ideia do bash é pra script simples, minha máxima é, se tu ta precisando fazer loop no bash já ta errado. Mas não trocaria python por javascript pra esse tipo de script
Bem interessante! Pode ser usado para diversas finalidades dentro de um projeto backend por exemplo.