Meu script virou programa!

Foi no FISL 9.0 que conheci pessoalmente o Aurélio, não o cara do dicionário :p, mas a pessoa que motiva muitos shelleiros do Brasil a transformarem seus shell scripts em verdadeiros programas!

aurelio
Eu e Aurélio Marinho Jargas

Trabalho com desenvolvimento web com php, apache, postgres e sempre que aparece uma oportunidade de fazer um shell script para desenrolar um problema, lá estou no site do Aurélio buscando informação. Foi baseado em um script que tenho em casa para sincronizar meu diretório home com um hd secundário que começou a idéia que descrevo logo a seguir:

Até um mês atrás a rotina dos analistas de testes era de copiar manualmente os arquivos fontes .php, baixados do Subversion em sua maquina local, para o servidor de Testes, via ssh. Tarefa repetitiva e cansativa que rendia muita dor de cabeça por, às vezes, esquecimento de alguns arquivos que o desenvolvedor não comunicava, ou até mesmo o analista não copiava. A confusão começava com aquela velha frase: “Na minha máquina tá funcionando!”. Era um panavoeiro só🙂.

Já havíamos conversado algumas vezes sobre o uso do rsync para automatizar esta tarefa. Mas faltou tempo para implementar a idéia. No início de setembro “meti a cara no mato” e decidi começar o “scriptizinho” que baixa o código do repositório subversion e sincroniza com o servidor de testes, via rsync. Bom, mas porque não usar somente o Subversion? Para quem não conhece o Subversion, ele controla as cópias locais através de diretórios .svn em cada ramificação da árvore de um projeto. E não achei conveniente copiar estes diretórios para o servidor de testes. Outro problema é que trabalhamos com duas salas que representam Gerências de desenvolvimento, e uma não queria “mexer” com os arquivos da outra. Exemplo disso é que na minha sala trabalhamos com o módulo de Controle de Obras e na outra trabalham com Controle de Processos.

A solução foi criar arquivos de configuração para armazenar informações do projeto, gerências, módulos de cada gerência para não gerar confusão. O mês de setembro foi de intensa pesquisa e desenvolvimento da solução combinando subversion, rsync, dialog e sed. “Comi com farinha” o tutorial Dominando o sed. Utilizei o dialog para melhorar a usabilidade do programa, já que a maioria das pessoas não possuem conhecimentos de bash. Tudo o que eu precisava fazer para tratar strings nos arquivos, o sed me ajudou. Tanto que deu pra ajudar a equipe de suporte de redes com relaçao a extração e formatação de usuários LDAP.

Com o feedback das equipes, surgiram sugestões de melhorias para o script que faziam eu mergulhar cada vez mais na man-page do rsync, não dá para aprender tudo é claro, mas para cada necessidade que tínhamos, o rsync possuía um parâmetro específico: backup, log, lista de arquivos que não serão sincronizados, não copiar arquivos de controle de versão (.cvs, .svn, .git, etc.).

O nome do programa é synccode. Mais informações de como instalar e usá-lo, encontra-se em seu repositório está hospedado no github.

O script, quer dizer programa :p, já está em produção e aguardando feedback. Shell Script te dá poder e flexibilidade de fazer o que quiser com o sistema operacional.

Além do livro Shell Script Profissional, tive outras fontes de pesquisa:

4 comentários sobre “Meu script virou programa!

  1. Muito bacana, Sanches! É bem recompensador ver que as coisas que fazemos realmente está ajudando a melhorar o trabalho das pessoas. Parabéns!

    Agora só por referência, pra jogar dados de um repositório sem mandar os .svn podes também usar um svn export.

    1. Olá Raylander,

      Estou fazendo várias adaptações no script, que por sinal até mudou de nome, agora ele se chama “synccode” e está hospedado no http://github.com/luizsanches/synccode. O lance é fazer um “git clone http://github.com/luizsanches/synccode.git” para baixar a versão atual do projeto.

      Caso você não conheca o sistema de controle de versões git dá uma lida no site do akita que tem muita informação sobre git: http://github.com/luizsanches/synccode.git

      Logo na home-page do projeto você tem um README que explica como instalar e configurar o programa. A versão 1.10 está muito boa, o pessoal aqui do trabalho aprovou 100%.

      Se você tiver mais dúvidas envia um e-mail para “luiz gr sanches arroba gmail . com

      T+

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s