quarta-feira, 8 de abril de 2009

Cores no console do windows

Olá galera,

Atualmente eu estou criando uma biblioteca para Specs em PHP.

Como toda boa biblioteca do gênero, eu decidi que os testes iriam rodar atravéz da tela de comando.

Para o caso de testes, eu considero bastante importante que se tenha uma saída colorida para identificar de forma mais rápida os resultados. Pesquisando na net achei muita coisa sobre comandos ANSI que permitem fazer várias coisas legais, como por exemplo mover cursor, mudar a cor... Tudo muito bonito, até chegar no console do windows...

A desgraça não queria pegar cores de jeito nenhum, até achei em vários tutoriais na net para abilitar o ANSI no windows, mas no meu Vista (eca...) não funcionou... Então fui pro lado prático da coisa, fui ver onde funcionava. Eu utilizo o Cucumber para testes do Ruby aqui, e ele consegue fazer a saída colorida, então decidi ir por esse ponto. Depois de alguns testes eu vi que incluindo certas bibliotecas na hora de rodar o ruby, ele consegue automaticamente converter os ANSI para o console do windows, oque foi lindo, então eu meio que usei o ruby de proxy para a execução do programa em PHP, assim ele iria ler a saída, converter e exibir. Funcionou :D

Resultado:



Como podem ver, bastante colorido e legal :)

O código Ruby que eu usei para o proxy está aqui:


#!ruby

require 'rubygems'

gem 'win32console', '>= 1.2.0'
require 'Win32/Console/ANSI'

puts `/xampp/php/php5.3.0beta2/php.exe #{$*.join ' '}`


Claro que para uma futura versão de release isso ai vai mudar muito (adaptar pra verificar se está em windows, tratamento de erros e etc...)

Enquanto isso a Limber Spec já está dando os primeiros passos e deve ter algo funcionando de verdade em breve :)

Só pra finalizar, uma referência esperta pra quem quizer dar uma olhada sobre comandos ANSI: http://academic.evergreen.edu/projects/biophysics/technotes/program/ansi_esc.htm

Nenhum comentário: