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:

https://github.com/lucasedson/git-auto-push

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

Ah sim!, Python tbm é maravilhoso para isso! Mas acreito que idéia do `zx`é que digamos que eu queira integrar uma Aplicação Electron Desktop com um Script Python (ou de qualquer outra linguagem de programação) E vc não queira criar uma api http. Só utilizar o output do terminal. O `zx`facilitaria bastante.
Amigo, seu exemplo é meio superficial, pois o próprio print do python envia para o stdout. Toda linguagem de programação consegue trocar dados e nem sempre é necessário o uso do protocolo http/https, existem muitos outros.

Muito bom cara. Estava com uma ideia de um projeto na caneca e isso vai me dar uma ajuda.

Bem interessante! Pode ser usado para diversas finalidades dentro de um projeto backend por exemplo.