Trac + Growl
Quand on suit ou quand on participe à un projet de développement, on a souvent besoin d'être au courant de tout ce qu'il s'y passe ! Le trac envoie des mails, mais je sais pas vous, je ne sais pas me servir des mails comme source d'information immédiate.
Un soft existe et fait déjà du RSS -> Growl : http://osiris.laya.com/projects/RSSGrowler Ils ont sortit une dernière version qui marche vraiment, j'avais beaucoup de soucis avec l'ancienne. Mais ça nécéssite que le login/mdp soit demandé en header de chaque pages et si comme moi vous avez un trac qui demande une authentifications sur une page à part ...
Là je propose un script qui permet de synchroniser le trac et growl en utilisant RSSGrowler.
Alors évidemment ça marche que si on a un serveur web d'installé sur sa machine avec php fonctionnel. Mais qui n'a pas ça hein ?
Au début j'étais partit sur un script Python qui fait juste un echo du RSS feed. Voila a quoi il ressemble :
#! /usr/bin/python import urllib2, cookielib user = 'user' pwd = 'password' realm = 'realm_or_IP' top_level_url = "http://IP.IP.IP.IP/trac/" login_url = 'http://IP.IP.IP.IP/trac/login' rss_url = 'http://IP.IP.IP.IP/trac/timeline?milestone=on&ticket=on&changeset=on&max=50&wiki=on&ticket_details=on&daysback=90&format=rss' def openDigest(url, username, pw, realm): jar = cookielib.CookieJar() cookiehandler = urllib2.HTTPCookieProcessor(jar) password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm() password_mgr.add_password(None, top_level_url, user, pwd) authhandler = urllib2.HTTPBasicAuthHandler(password_mgr) opener = urllib2.build_opener(authhandler, cookiehandler) urllib2.install_opener(opener) opener.open(login_url) pagehandle = urllib2.urlopen(url) return pagehandle.readlines() print "\n".join(openDigest(rss_url, user, pwd, realm))
C'est pas super compliqué, on a besoin de s'authentifier sur une page et d'en récupérer une autre avec le cookie issue de l'authentification ...
J'aurais sans doute pu faire un netcat pour avoir ça sur un port quelconque :
while true; do tracrss.py | nc -l 8080; done
Mais bon ... je suis traditionnel, je le fais avec un script php :
Voila pas vraiment plus compliqué. Après on link le RSSGrowler sur http://localhost/tracrss/rss.php et le tour est joué !
