Gibt es irgendwo eine Art "Basis CLI" ?
Sowas ähnliches wie die "Management Commands" bei Django -> https://docs.djangoproject.com/en/1.5/h ... -commands/
Also das man schnell ein CLI für ein kleines tool realisieren kann und alles von vorn Implementieren muß.
Dabei sollte direkt logging einstellbar sein:
* log level für stdout
* log level für logging in einer datei (Parallel zu stdout)
Hab mir eins gebaut, aber nicht optimal: https://github.com/jedie/PyDragon32/blo ... ase_cli.py
Basis CLI ?
Habt ihr schon von docopt gehört? Mit dem Paket kann das CLI direkt über den Hilfe-Text spezifiziert werden. Auf der verlinkten Seite ist auch ein Video zu dem Vortrag auf der PyCon UK 2012 zu sehen; einfach mal anschauen und begeistert sein
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Nutzt jemand "click" ???
-> https://pypi.python.org/pypi/click/
ist von mitsuhiko: https://github.com/mitsuhiko/click
Hab es gerade in https://github.com/sloria/pypi-cli/blob/dev/pypi_cli.py gesehen. Offensichtlich markiert man quasi nur eine funktion per decorator zu einem CLI zusammen. Sieht interessant aus.
Beispiel von http://click.pocoo.org/
-> https://pypi.python.org/pypi/click/
ist von mitsuhiko: https://github.com/mitsuhiko/click
Hab es gerade in https://github.com/sloria/pypi-cli/blob/dev/pypi_cli.py gesehen. Offensichtlich markiert man quasi nur eine funktion per decorator zu einem CLI zusammen. Sieht interessant aus.
Beispiel von http://click.pocoo.org/
Code: Alles auswählen
import click
@click.command()
@click.option('--count', default=1, help='Number of greetings.')
@click.option('--name', prompt='Your name',
help='The person to greet.')
def hello(count, name):
"""Simple program that greets NAME for a total of COUNT times."""
for x in range(count):
click.echo('Hello %s!' % name)
if __name__ == '__main__':
hello()
Code: Alles auswählen
$ python hello.py --count=3
Your name: John
Hello John!
Hello John!
Hello John!
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Ich mittlerweilejens hat geschrieben:Nutzt jemand "click" ???
Kann es empfehlen.
Super ist auch, das es direkt Helfer für Unitests gibt, siehe: http://click.pocoo.org/3/testing/
Damit hab ich nun unitests für meine "pylucid_installer" geschrieben: https://github.com/jedie/PyLucid/commit ... ea76123c9f
Ich habe das noch auf meiner TODO-Liste um es mal in eine Webanwendung einzubauen bei der im Laufe der Zeit mehrere Module eine `main()` bekommen haben für Cronjobs und Ähnliches. Da müsste ich mal aufräumen und einen zentralen Einstiegspunkt erstellen.
Nutze ebenfalls click und kann es definitiv empfehlen. Vorallem auch wenn es komplexer werden soll oder Komposition möglich sein soll. Ansonsten ist docopt für kleine triviale Spielereien ganz nett aber ansonsten mMn unbrauchbar.