noqqe » blog | sammelsurium | photos | projects | about

cmddocs

2015-01-24 @ development, docs, git, gitit, haskell, markdown, openbsd, python, wiki

“Ich habe mein eigenes Wiki programmiert. So einfach ist das.”

In letzter Zeit hab ich damit den ein oder anderen seltsamen Blick kassiert. Tatsächlich ist aber alles etwas anders.

gitit

Ich war lange ein zufriedener User von gitit. Zugegeben, nur wenn es dann wirklich mal kompiliert war. Ich wollte nicht zum 3. mal nach neuem OpenBSD Release 4-5 Stunden verschwenden, das Stück Haskell gebaut zu bekommen. Außerdem war ich das Webinterface irgendwie Leid.

Übergang

Also was will ich überhaupt? Ich will auf CLI markdown schreiben und die Files mit git unter Versionskontrolle halten. Möglichst einfach durchsuchen und bearbeiten können. Ich dachte okay, gitit speichert Markdown Files. Ich kopier einfach alles weg, lege mir in einem Verzeichnis auf meiner OpenBSD CLI Maschine an, in dem ich alles finde was ich brauche. Das passt super ins Konzept mit mutt, taskwarrior, jrnl, weechat und was ich sonst so verwende.

Auf längere Sicht wurde es aber ziemlich Tippintensiv. Jedes mal alle git add, git commit, grep, tree Commands nutzen. Es hat sich irgendwie müßig angefühlt. Hab nicht mehr gerne damit gearbeitet, kam zu dem Schluss das ich auf Commandline bleiben, aber mir das dokumentieren/notieren etwas erleichtern will.

cmddocs

Zuerst machte ich mich auf die suche nach CLI-Wikis, aber die da sowas so gut wie garnicht zu existieren scheint, fing ich an mir ein kleines Commandline Interface mit Python zu bauen. Dazu benutzt hab ich das Cli Modul, was so gefühlt der heilige Gral der CLI Module ist. Tabcompletion, Helps, History, CTRL-R (unendlich wichtig), ESC-., ist alles schon drin.

Die Codebase von cmddocs war nicht besonders schön, aber tat das was ich wollte. Ich war erstmal zufrieden. Dann kam #31c3, ich traf posativ wieder, der mich erstmal darauf Hinwies, wie hässlich eigentlich. Nach seinen Tipps fing ich dann an das ganze etwas umzustrukturieren. Eigentlich wollte ich das gute Stück nie irgendwo publishen, aber durch die Änderungen sieht der Code jetzt doch einigermaßen annehmbar aus. Ein Github Repo+Readme angelegt und gepushed.

Demo hier: asciinema cmddocs demo (etwas outdated)

Es fehlen noch ein paar Features, der View-Mode bzw. der aus 6 Zeilen bestehende Markdown->ANSI Converter hat noch ein paar Problemchen, aber alles in Allem bin ich wirklich zufrieden was daraus geworden ist.

Comments (6)

dAnjou on 2015-01-24T20:18:18.947328
Du realisierst aber schon, dass du das ganze auch mit einer überschaubaren Anzahl Aliasen haben könntest? Falls du das Tool `tree` nicht kennst, hab ich es dir soeben empfohlen. Und zusammen mit einer besseren Shell wie z.B. zsh sehe ich in diesem Projekt absolut keinen Mehrwert. Kläre mich auf, falls ich es noch nicht ganz verstanden habe.

Martin on 2015-01-25T00:38:13.749454
Der Vorteil einer dedizierten "Wiki-Shell" ist z.B. das automatische comitten von Änderungen, z.B. nach `edit Foobar` folgt sofort ein Commit. Natürlich lässt sich das auch mit einem Alias realisieren. Auch das ANSI-Highlighting hast Du mit `cat` nicht direkt ootb.

noqqe on 2015-01-25T13:38:14.669727
Warum gibt es `htop`. Da gibts die selben Informationen wie in `top`

dAnjou on 2015-01-30T19:13:15.198285
Du hast halt ziemlich viel Code geschrieben, den man durch simple Tools, die meistens schon vorinstalliert sind, ersetzen könnte.

noqqe on 2015-01-31T13:53:54.871927
Das da wäre?

bo on 2015-02-13T14:02:25.353568
Ja fett :)