2009-11-24 6 views
4

J'ai configuré Ant pour utiliser le AnsiColorLogger. Sous Mac OS 10.5, tout allait bien. Depuis la mise à niveau vers Snow Leopard, le AnsiColorLoggger ne fonctionne plus. Je vois la sortie Ant (uncolorized) pendant une seconde puis il disparaît juste. Quelqu'un d'autre a-t-il travaillé avec Snow Leopard? D'autres couleurs ANSI fonctionnent correctement dans Terminal.app (couleur ls sortie, couleurs dans mon invite).Problème avec AnsiColorLogger de Ant dans Snow Leopard

Aussi, serait-ce une meilleure question sur SuperUser?

Répondre

6

MISE À JOUR: J'ai résolu le problème. Cela a à voir avec ANT donnant des séquences d'échappement qui, bien que appropriées pour un xterm Linux, ne sont pas correctement interprétées par Mac OS X. Il est possible de filtrer la sortie ANT pour convertir ces séquences et restaurer la sortie colorisée.

La morale de l'histoire est que ce script enveloppe atteindra sortie colorisée:

 
# cat /workspace/SDK/bin/ant-wrapper.sh 
/usr/bin/ant -logger org.apache.tools.ant.listener.AnsiColorLogger "[email protected]" | perl -pe 's/(?<=\e\[)2;//g' 

# alias ant='/workspace/SDK/bin/ant-wrapper.sh' 

# ant publish 
(output has lots of pretty colors; well, maybe not so pretty, more like an easter egg) 

Original Post (et les étapes de mise au point):

Je rencontre des problèmes similaires à l'égard de AnsiColorLogger ne pas afficher les couleurs du tout. Je ne suis pas sûr de ce que l'auteur veut dire par "[sortie apparaît] pendant une seconde, puis il disparaît". Cela semble être un problème étrange sur le terminal.

My Box:

 
# uname -a 
Darwin Dave-Dopsons-MacBook-Pro.local 10.7.0 Darwin Kernel Version 10.7.0: Sat Jan 29 15:17:16 PST 2011; root:xnu-1504.9.37~1/RELEASE_I386 i386 

Ceci est l'enregistreur ANT nous utilisons: http://ant.apache.org/manual/listeners.html#AnsiColorLogger

Voici un post sur le forum lié (a essayé les conseils donnés, en vain): http://ant.1045680.n5.nabble.com/Macosx-and-AnsiColorLogger-td1355310.html

J'ai fait "ant | less", et je vois des séquences d'échappement, mais toujours pas de couleurs:

 
Buildfile: /workspace/Words/words_blackberry/build.xml 
ESC[2;32m 
publish:ESC[m 

toujours bloqué sur ce point, et je serais ravi des conseils si quelqu'un a obtenu à travailler sur OSX

IT GOT!

Alors, voici la sortie de ls colorisées:

 
# CLICOLOR_FORCE=exfxcxdxbxegedabagacad ls -lGF | less 
total 112 
-rw-r--r-- 1 ddopson admin 6511 May 29 12:41 build.xml 
drwxr-xr-x 6 ddopson admin 204 May 28 23:59 ESC[34meclipse-binESC[mESC[m/ 
lrwxr-xr-x 1 ddopson admin 35 May 23 21:24 ESC[35mfilesESC[mESC[[email protected] -> ../artwork/output/blackberry/files/ 
lrwxr-xr-x 1 ddopson admin 36 May 23 21:20 ESC[35mimagesESC[mESC[[email protected] -> ../artwork/output/blackberry/images/ 

Remarquez comment les séquences d'échappement sont subtilement différentes; ils n'ont pas le '2'; comme ANT l'a fait ...

Donc, pour tester cette théorie: ant -logger org.apache.tools.ant.listener.AnsiColorLogger publier | sed 's/2; // g'

... et la sortie est COLORISÉE! La victoire!

+0

IMPRESSIONNANT! C'est excellent. – Nate

+0

+1: mais j'ai trouvé un moyen de le faire sans le fichier ant-wrapper.sh ... –

3

J'ai connaissance de prendre ddopson et entassés dans une seule ligne:

ant() { command ant -logger org.apache.tools.ant.listener.AnsiColorLogger "[email protected]" | sed 's/2;//g' ; } 

Cela fonctionne à l'aide d'un Bash Function. Placez-le dans votre fichier ~/.profile et il fera la même chose que ant-wrapper.sh de ddopson, mais sans avoir besoin d'un second fichier pour le faire fonctionner. Un peu plus élégant et moins fragile.

+0

Votre regex risque de surclasser. Cela supprimera toutes les occurrences de "2"; du flux de sortie, qui pourrait très facilement se produire légitimement. Exemple: "Construire foo avec value = 2; foo = bar; z = a" –

+0

Pour mes propres utilisations, je préfère un fichier exécutable unique car je peux le vérifier dans le contrôle source et le partager. Mais là où ce n'est pas une considération, un paquebot de bashrc fonctionnerait très bien. –

+0

p.s., Pour le non-familier-avec-ligne-de-commande-fu: dans ce contexte "sed" et "perl -pe" font fondamentalement la même chose, en exécutant une regex. Perl regex est un peu plus puissant si vous le connaissez bien. Mais bien sûr, chaque langue a ses propres fonctionnalités. Je sais perl raisonnablement bien, et sed à peine, donc mon parti pris est clair. Cependant, la grande chose qui m'a poussé à préférer perl sur sed est l'incohérence dans les arguments de ligne de commande entre Mac OS X (basé sur BSD) et Linux. J'ai trouvé plus facile de faire des scripts portables avec Perl. YMMV –