Basis CLI ?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Gute Frage, ich fange auch jedes Mal wieder von vorne an, mich durch argparse durchzukämpfen.
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

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 :)
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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 ;)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Passend dazu auch Scriptine
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
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/

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!

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

jens hat geschrieben:Nutzt jemand "click" ???
Ich mittlerweile :P

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

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
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.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

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.
Antworten