domingo, 24 de fevereiro de 2013

Utilitário: Monitor and Run

Olá pessoal,

Escrevi um pequeno programa em Python chamado monrun para resolver um pequeno probleminha meu e resolvi compartilhar.

Para que serve?

É a pergunta que não cala. Ele serve para executar um comando toda vez que um arquivo foi modificado, simplesmente.

E para que eu quero isso?

Bom, a utilidade depende da pessoa. Para mim, pessoalmente, eu às vezes utilizo LaTeX para escrever textos mais profissionais.

No uso do LaTeX é preciso, para ver o resultado do texto formatado, fazer a compilação para gerar PDF e eu acho chato ter que ficar alternando a minha janela o tempo todo para executar o comando. Sei que existem ambientes para usar LaTeX, mas eu normalmente escrevo o texto usando Markdown e converto para LaTeX através de um utilitário chamado pandoc (fica a dica). Mas, mesmo que fosse com LaTeX, a vantagem de usar o monrun, para mim, ao menos, é ficar independente de ambiente.

Uau, eu quero

Estou publicando o código no github em https://github.com/wagnerluis1982/monrun. Está tudo em inglês para deixar aberta a possibilidade de voluntários de qualquer lugar.

Como usar?

Usando o README do projeto, a forma mais simples usar é executando

$ python monrun.py -c <COMANDO> <ARQUIVO>

se quiser que o comando seja executado uma vez antes de iniciar o monitoramento, use a chave -b (de before) como a seguir

$ python monrun.py -b -c <COMANDO> <ARQUIVO>

Uma chave -a (de after) também está disponível para sobrepôr um -b anterior ou vice versa.

Conclusão

O uso que estou dando ao programa é o de compilar um arquivo LaTeX sempre que há mudanças. Mas pode haver vários outros usos, como uma mudança em um arquivo de Log, por exemplo.

E claro que ainda há muita coisa que pode ser melhorado como poder dizer de quanto em quanto tempo a mudança será verificada (atualmente é fixo em 1 segundo) e também a habilidade de monitorar mais de um arquivo ou mesmo um diretório. A mudança do tempo é muito simples e nos próximos dias, assim que eu tiver tempo eu já realizo essa alteração, já a outra demanda um pouco mais de tempo.

Se achar o programa util para você e querer melhorar, fork o projeto no github e faça um Pull Request. Mas se não tem conta no github nem quer ter, mande para mim via comentário mesmo (o projeto é de código aberto).