noqqe


blog | sammelsurium | projects | about

Mehr Commandline Wiki

2015-06-06 @ bsd, cmd, cmddocs, code, commandlinedocs, documentation, opensource, python, shell, web, wiki

Wenn ich nicht gerade mit IRC-Bot schreiben oder das Wiki für k4cg.org schön/neu mache, bastle ich immer wieder an cmddocs.

Der Code wurde umfangreicher, robuster, paar Features kamen hinzu. Tollste Sache ist aber, dass ich mal was auf pypi hoch geladen hab. Das ist tatsächlich das erste Packet was ich dort hochlade. Demnach kann man cmddocs jetzt einfach über pip installieren.

$ pip install cmddocs
$ cmddocs

\o/, Extrem fragwürdig finde ich aber die Downloads/Zugriffszahlen.

So schön ich es fände wenn es so wäre, aber das kann einfach nicht sein. Wenn jemand nen Link hat wie diese Stats generiert werden oder eine Erklärung hat (Bots, Mirrors?) bitte, her damit.

Wesentlichste Änderung ist wahrscheinlich, dass Markdown->ANSI Highlightning jetzt nicht mehr nur über 4 Zeilen Regex realisiert ist. Ich hab den Markdown Lexer von mistune verwendet und die Output-Funktionen so überschrieben, dass statt HTML ANSI Codes herauskommen.

class md_to_ascii(mistune.Renderer):

    # Pagelayout
    def block_code(self, code, lang):
        return '\n\033[92m%s\033[0m\n' % code.strip()
    def header(self, text, level, raw=None):
        if level == 2 or level == 1:
            head = '\n\033[4m\033[1m\033[37m%s\033[0m\n' % text.strip()
        else:
            head = '\n\033[1m\033[37m%s\033[0m\n' % text.strip()
        return head
    def block_quote(self, text):
        return '\n%s\n' % text.strip()
    def block_html(self, html):
        return '\n%s\n' % html.strip()
    def hrule(self):
        return '---'
    def list(self, body, ordered=True):
        return '\n%s' % body
    def list_item(self, text):
        return '* %s \n'  %  text.strip()

Schönen dank an Flowwar für die Idee an der Stelle ;) Ansonsten noch folgende Dinge eingebaut:

  • undo Feature implementiert
  • Suchfunktion gibt auch Ergebnisse in Dateinamen wieder (siehe Screenshot oben)
  • Anständige Fehlermeldungen an mehreren Stellen
  • Nicht vorhandene Configoptionen mit sinnvollen Defaults eingebaut
  • Error Handling für nicht vorhandene Config/Datadir
  • Description für pip eingefügt
  • Readme nach RST konvertiert
  • Promptfarbe konfigurierbar

Wems gefällt und Pull- oder Feature Requests hat, bitte immer her damit.

Comments (12)

Martin on 2015-06-06T21:44:42.379442
Extrem fragwürdig finde ich aber die Downloads/Zugriffszahlen. Die Statistiken lassen sich nur begrenzt verwerten, sind eben genau Bots und Mirrors.

P-Tronic on 2015-06-06T23:33:22.671053
Ich wollte es gerade installiere, werde aber aus dem Error nicht schlau, benutze Archlinux im Configparser scheint aber ein Syntaxerror zu sein, liege ich da richtig ? http://paste.pwhl.tk/img/23-31-04-502190502f155c4637bf96873b9f8f96.png

noqqe on 2015-06-06T23:36:40.230792
hast du Python wirklich auf 2.7?

P-Tronic on 2015-06-07T12:12:23.314409
Ich Hab Python 3.4, läuft cmddocs auf 2.7, Wenn es so ist, habe ich keinen Hinweis dazu entdeckt.

noqqe on 2015-06-07T13:03:51.894236
ist im moment nur in 2.7. Die Information ist auch in pip.

noqqe on 2015-06-07T13:04:30.285276
Alles klar, danke!

Anonymous on 2015-06-07T13:42:14.262148
Hi! versucht es doch mal mit: pip2.7 install cmddocs Dann klappts auch mit verschiedenen Python versionen (...zumindest auf Arch)

Anonymous on 2015-06-07T15:46:03.205676
andererseits bekomme ich dann folgenden Fehler: cmddocs - press ? for help cmddocs dirs Traceback (most recent call last): File "/usr/sbin/cmddocs", line 9, in load_entry_point('cmddocs==0.10.5', 'console_scripts', 'cmddocs')() File "/usr/lib/python2.7/site-packages/cmddocs/__init__.py", line 246, in main Cmddocs().cmdloop() File "/usr/lib/python2.7/cmd.py", line 142, in cmdloop stop = self.onecmd(line) File "/usr/lib/python2.7/cmd.py", line 221, in onecmd return func(arg) File "/usr/lib/python2.7/site-packages/cmddocs/__init__.py", line 112, in do_dirs return list_directories(dir) File "/usr/lib/python2.7/site-packages/cmddocs/articles.py", line 16, in list_directories subprocess.call(["tree", "-d", dir]) File "/usr/lib/python2.7/subprocess.py", line 522, in call return Popen(*popenargs, **kwargs).wait() File "/usr/lib/python2.7/subprocess.py", line 710, in __init__ errread, errwrite) File "/usr/lib/python2.7/subprocess.py", line 1335, in _execute_child raise child_exception OSError: [Errno 2] No such file or directory und danach ist beendet sich cmddocs. Ist das vielleicht irgend ein Modul, das ich in python3-Version benutze, und es sollte Version2 sein?

Martin on 2015-06-07T16:42:11.667842
`tree` per *pacman* installieren, ist 'ne externe Abhängigkeit.

Anonymous on 2015-06-07T16:44:45.020207
super! Vielen Dank!

noqqe on 2015-06-07T20:33:17.709410
das sollte ich vielleicht Dokumentieren...

Dr. Azrael Tod on 2015-06-08T06:52:52.859658
%s/Packet/Paket ;-)