ufen Sie einen anderen Klickbefehl über einen Klickbefehl au
Ich möchte einige nützliche Funktionen als Befehle verwenden. Dafür teste ich dasclick
Bibliothek. Ich habe meine drei ursprünglichen Funktionen definiert und sie dann als @ dekorierclick.command
:
import click
import os, sys
@click.command()
@click.argument('content', required=False)
@click.option('--to_stdout', default=True)
def add_name(content, to_stdout=False):
if not content:
content = ''.join(sys.stdin.readlines())
result = content + "\n\tadded name"
if to_stdout is True:
sys.stdout.writelines(result)
return result
@click.command()
@click.argument('content', required=False)
@click.option('--to_stdout', default=True)
def add_surname(content, to_stdout=False):
if not content:
content = ''.join(sys.stdin.readlines())
result = content + "\n\tadded surname"
if to_stdout is True:
sys.stdout.writelines(result)
return result
@click.command()
@click.argument('content', required=False)
@click.option('--to_stdout', default=False)
def add_name_and_surname(content, to_stdout=False):
result = add_surname(add_name(content))
if to_stdout is True:
sys.stdout.writelines(result)
return result
Auf diese Weise kann ich die drei Befehle erzeugenadd_name
, add_surname
undadd_name_and_surname
Verwendung einersetup.py
file undpip install --editable .
Dann kann ich pfeifen:
$ echo "original content" | add_name | add_surname
original content
added name
added surname
Jedoch gibt es ein kleines Problem, das ich lösen muss, wenn ich mit verschiedenen Klickbefehlen als Funktionen komponiere:
$echo "original content" | add_name_and_surname
Usage: add_name_and_surname [OPTIONS] [CONTENT]
Error: Got unexpected extra arguments (r i g i n a l c o n t e n t
)
Ich habe keine Ahnung, warum es nicht funktioniert, ich brauche dieseadd_name_and_surname
Befehl zum Aufrufen vonadd_name
undadd_surname
nicht als Befehl, sondern als Funktionen, sonst hat es meinen ursprünglichen Zweck, Funktionen sowohl als Bibliotheksfunktionen als auch als Befehle zu verwenden, verfehlt.