Seite 1 von 1

Veschachtelter Befehl in Click

Verfasst: Sonntag 13. Oktober 2019, 19:46
von MacGruber
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

Re: Veschachtelter Befehl in Click

Verfasst: Sonntag 13. Oktober 2019, 20:07
von __blackjack__
@MacGruber: Du verwendest `click.command()` — woher soll denn dann bekannt sein das `say()` zu der Gruppe `cli()` gehört? Du musst `cli.command()` vewenden.

Re: Veschachtelter Befehl in Click

Verfasst: Sonntag 13. Oktober 2019, 21:16
von MacGruber
:shock: :shock: :shock:
Oh mann. Ich habe bestimmt 3 Stunden immer wieder alles kontrolliert und kam nicht auf den Fehler. Vielen vielen Dank!