Veschachtelter Befehl in Click

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
MacGruber
User
Beiträge: 63
Registriert: Sonntag 28. Mai 2017, 13:04

Moinchen,

ich versuche mich gerade mit Click auseinander zusetzen, um verschachtelte Befehle fürs Mac Terminal zu erstellen. Dabei habe versucht, dass nachzuprogrammieren, was ich in folgendem Video gesehen habe.
https://www.youtube.com/watch?v=kNke39OZ2k0

Aber wenn ich mit Group eine Befehlsgruppe mit Subcommands erstellen will, gibt es leider Probleme. Das Sub-Command "say" wird einfach nicht erkannt und auch mit --help nicht aufgelistet.

Das ist mein Script.

Code: Alles auswählen

import click

@click.group()
def cli():
    pass

@click.command()
@click.option("--string", default="World", help="Wer soll gegrüsst werden?")
@click.option("--repeat", default=1, help="Wie oft soll gegrüßt werden?")
@click.argument("out", type=click.File("w"), default="-", required=False)
def say(string, repeat, out):
    
    for x in range(repeat):
        click.echo("Hello " + string, file=out)

Und das ist meine setup.py.

Code: Alles auswählen

from setuptools import setup

setup(name="Hello World",
      version="0.1",
      py_modules="hello",
      install_requires=["Click"],
      entry_points="""
      [console_scripts]
      hello=hello:cli
      """
      )
Eigentlich müsste jetzt mit dem Kommando

Code: Alles auswählen

hello say
"Hello World" ausgegeben werden.
Wisst ihr was ich falsch gemacht habe? Muss ich was an setup.py ändern?

Gruß MacGruber
Benutzeravatar
__blackjack__
User
Beiträge: 13110
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@MacGruber: Du verwendest `click.command()` — woher soll denn dann bekannt sein das `say()` zu der Gruppe `cli()` gehört? Du musst `cli.command()` vewenden.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
MacGruber
User
Beiträge: 63
Registriert: Sonntag 28. Mai 2017, 13:04

:shock: :shock: :shock:
Oh mann. Ich habe bestimmt 3 Stunden immer wieder alles kontrolliert und kam nicht auf den Fehler. Vielen vielen Dank!
Antworten