Transformando scripts em uma aplicação

Matheus H. de Souza
devorando
Published in
5 min readMay 15, 2020

Fala galerinha, tudo tranks? Me chamo Matheus, sou desenvolvedor FullStack aqui no aiqfome e hoje vou te contar como um projetinho de escola acabou ajudando a me desenvolver como dev. Partiu?

Bom, tudo começou com uma aula de sistemas operacionais no IFSul, em 2014 e a atividade proposta era baixar e instalar o tão temido Linux em uma máquina. Como devem imaginar não foi muito fácil, mas consegui concluir a tarefa com sucesso, e confesso que um pouquinho de dor de cabeça. Então saí da aula determinado a aprender mais sobre aquele sistema: cheguei em casa e a primeira coisa que fiz foi instalar o linux numa (famosa) máquina virtual 😋.

AAAAAAAH LINUX!!

Num primeiro momento me senti muito intimidado. Era um mundo totalmente novo, já que estava acostumado a usar outro sistema operacional há muito tempo, desde o meu primeiro contato com um computador. Mas me senti desafiado :p.

O ponto crucial, talvez um dos momentos mais marcantes da minha história com linux, foi quando resolvi instalar o sistema e utilizar como SO principal na minha máquina pessoal. Você pode pensar “não mudou nada, você já não estava usando numa VM?”e é aí que você, assim como eu, se engana.

O ambiente em uma máquina virtual é totalmente controlável, com snapshots e tudo. Logo que comecei a usar o linux, eu vi o quanto as coisas eram personalizáveis, ainda mais a interface gráfica (quem nunca ativou janelas gelatinosas no Ubuntu que atire a primeira pedra 😂😂).

Efeito do Windows Jelly Linux

Realmente, é muito bacana deixar o ambiente com a sua cara, mas com isso eu (sem muita experiência) acabava “quebrando o sistema”. Dependendo das configurações que fazia e sem saber arrumar as cagadas, eu tentava resolver do jeito “mais fácil”: instalando tudo do zero. Isso mesmo, toda vez que alguma configuração não saia como o planejado, eu formatava minha máquina. Instalar todas as atualizações e programas de novo…, era um sofrimento só 😢, mas como sou bastante curioso, comecei a pesquisar formas de automatizar as tarefas no linux.

Com o processo de formatação e reformatação eu acabei criando um arquivo texto com um monte de passo a passo de como instalar os programas que usava, eu só precisava de um jeito de rodar isso forma automatizada. Foi aí que encontrei um carinha chamado Shell Script, com ele eu conseguia fazer a instalação de todos os programas com apenas a chamada de um script e nossa, foi mágico!

foi exatamente assim que fiquei depois de remontar meu SO com Shell Script 😛

Nesse ponto já estava apaixonado pelo linux ❤ e claro, eu queria que mais pessoas conhecessem esse mundo lindo: mostrei para meus amigos do IFSul que usavam basicamente os mesmos programas que eu, ressaltei que todos os programas utilizados tinham compatibilidade com linux e consegui converter alguns e, detalhe, sempre compartilhando meu script de instalação de programas. Há algo melhor que montar todo um ambiente com apenas um script?

Com essa onda de linux rolando na instituição até os professores, principalmente os de programação, não ficaram de fora e começamos a trocar experiências, problemas, soluções, etc. Despretensiosamente, passei meu script de instalação para um professor que estava com problemas para instalar uma versão específica do Java. Ele usou e tudo funcionou como era esperado :D, foi aí que ele me deu uma ideia topíssima, criar uma aplicação open source desse script, que poderia ajudar quem está entrando no mundo linux.

Criei um “projetinho” no GitHub e comecei a adicionar scripts de instalação de softwares e automatização de tarefas cotidianas no linux, como atualizar repositórios e programas. Contei também com alguns amigos que me ajudaram a adicionar mais programas, assim conseguimos uma variedade bem bacana de softwares e automatizações. Mas algo não me agradava, a interface, sim, entendo que era um script, mas porque não ser mais agradável visualmente?!

Comecei a estudar alternativas e encontrei o Whiptail, que funciona como uma caixa de diálogo para utilizar em scripts. Além de ser nativo, também trouxe usabilidade pro projeto, com ele conseguimos criar menus e campos de input de uma forma bem mais agradável para o usuário. Esse passo foi essencial para evoluirmos nosso pacote de scripts, que até ganhou o nome de Backpack.

Hoje o Backpack possui inúmeros scripts de instalação de softwares e automatização de tarefas, que foram sendo implementados organicamente por colaboradores do projeto.

Durante o processo de desenvolvimento, manutenção e publicação do projeto trabalhei com uma variedade de ferramentas (Git/GitHub, Travis CI e Codacy), aprendi a trabalhar com versionamento de código, integração contínua, testes, documentação de projetos — desde o readme, licenciamento, código de conduta, como contribuir e outras atividades que nós, devs, não estamos tão habituados — , aprendi sobre code review, aprovação de pull requests e muito mais. Todas as ferramentas e atividades que tive contato durante esse período foram me preparando (mesmo sem eu saber na época), assim amadureci como dev.

Aconselho a você que está lendo esse post a tirar aquela sua ideia do papel, publique-a, compartilhe, chame amigos para participar, tenho certeza que você vai aprender alguma coisa importante e, além de tudo, se divertir muito.

Aaah, nem mencionei que essa experiência com shell script e ferramentas de modo texto me ajudaram bastante quando comecei a utilizar Docker, mas isso é assunto para um outro post, belê?

Espero que tenha curtido essa viagem, até a próxima meu jovem!

SUGESTÕES, RECLAMAÇÕES, DÚVIDAS E ELOGIOS

Por favor falar com o Clodoaldo. Ele tá sempre no twitter, instagram, face, e até no linkedin do aiq.

Mentira, o Crô é mó ocupado, pode me responder por aqui mesmo ou conversar comigo no Linkedin!

--

--