Neue Version, Windows-Kompatibilität und Guard

Für die neueste Version von docbook_status (0.5) habe ich einmal das getan, was ich schon ewig nicht mehr getan habe: eine Anwendung für Windows angepasst. Früher wäre dies wohl das erste gewesen, was man ob der Klagen getan hätte. Die Zeiten haben sich geändert, jetzt passiert das so im Nachhinein. Aber immerhin, es wurde getan.

Ein Windows-Problem war die farbliche Ausgabe, die über ANSI-Sequenzen gesteuert wird. Im XP-Terminal wurden die Sequenzen mit ausgegeben, statt sie in Farbe umzuwandeln. Um dem abzuhelfen, versucht docbook_status nun beim Start unter Windows “win32console” zu laden. Ist win32console nicht vorhanden, wird auf reine Textausgabe umgeschaltet. Wer also die Fortschrittsverfolgung von docbook_status unter Windows nutzt und es farbig mag: bitte win32console installieren! (Gibt es das Problem eigentlich auch mit Windows 7? Konnte leider nur mit einer XP-VM testen, daher die Neugier.)

Ein anderes Problem betraf nicht nur Windows, sondern auch Linux. Die Option –demon, die das Programm am Laufen hielt und bei Dateiänderungen die Analyse der DocBook-Dateien automatisch neu starten sollte, funktionierte nur unter OSX. Die eingesetzte Bibliothek war da leider nicht über die Plattformen hinweg kompatibel.

Bei der Suche nach Ersatz fand ich Guard. Das unterstützt alle drei Desktop-Plattformen, man muss nur der Anleitung für sein Betriebssystem folgen. Da der Test gut verlief, habe ich mich also dazu entschlossen, Guard zu nutzen. Guard verfügt mittlerweile über viele Zusatzmodule, die es vielseitig einsetzbar machen. Innerhalb eines Schreibprojektes kann man es zu mehr einsetzen, als nur docbook_status zu starten. Aus diesem Grund habe ich kurzerhand die Dämon-Funktionalität aus docbook_status entfernt, und ein eigenes Zusatzmodul für Guard verfasst: guard-docbook-status. Wer die Dämon-Funktionalität von docbook_status gern weiter nutzen möchte, der sollte sich das installieren.

Die Nutzung ist einfach:

guard init docbbok-status

Damit erstellt Guard eine Datei namens Guardfile im Verzeichnis. In unserem Fall ist die einfach strukturiert:

guard 'docbook-status', :cli => '--remarks myproject.xml' do
   watch(/.+\.xml$/i)
end

Das was man anpassen kann, sind die Kommndozeile für docbook_status (:cli) und eventuell der Ausdruck zur Überwachung der Verzeichnisse und Dateien (watch). Voreingestellt ist, dass alle XML-Dateien im Arbeitsverzeichnis und darunter als Auslöser für docbook_status dienen sollen — in der Annahme, dass dies alles DocBook-Dateien sind.

Startet man das Ganze mit

guard start

hat man die Funktionalität der –demon Option wieder hergestellt.