Seite 1 von 1
Basis CLI ?
Verfasst: Dienstag 27. August 2013, 16:24
von jens
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
Re: Basis CLI ?
Verfasst: Freitag 30. August 2013, 08:23
von mkesper
Gute Frage, ich fange auch jedes Mal wieder von vorne an, mich durch argparse durchzukämpfen.
Re: Basis CLI ?
Verfasst: Samstag 31. August 2013, 13:39
von derdon
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

Re: Basis CLI ?
Verfasst: Sonntag 1. September 2013, 19:09
von jens
Danke! Docopt sieht auf dem ersten Blick ganz nett aus.
Allerdings ist das ja nur ein Teil den man zu einem CLI braucht. Wenn auch einer der wichtigsten

Re: Basis CLI ?
Verfasst: Donnerstag 5. September 2013, 20:17
von Leonidas
Passend dazu auch
Scriptine…
Re: Basis CLI ?
Verfasst: Dienstag 25. November 2014, 15:38
von jens
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/
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!
Re: Basis CLI ?
Verfasst: Mittwoch 25. Februar 2015, 11:59
von jens
jens hat geschrieben:Nutzt jemand "click" ???
Ich mittlerweile
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
Re: Basis CLI ?
Verfasst: Mittwoch 25. Februar 2015, 12:18
von BlackJack
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.
Re: Basis CLI ?
Verfasst: Freitag 27. Februar 2015, 20:25
von DasIch
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.