便利な機能をコマンドとして使いたい。そのために私はclick
ライブラリをテストしています。その後、私はパイプにできる午前setup.py
ファイルとpip install --editable .
を使用してクリックコマンドから別のクリックコマンドを呼び出す
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
私は三つのコマンドadd_name
を生成することができています。この方法で、add_surname
とadd_name_and_surname
::私はその後click.command
として飾ら私の3つの本来の機能を定義し
$ echo "original content" | add_name | add_surname
original content
added name
added surname
機能として別のクリックコマンドを使用して作成する場合、私は解決する必要があるわずかな問題があります:
$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
)
私はこれがうまくいかない理由を知りません。コマンドをadd_name
とadd_surname
をコマンドとしてではなく関数として呼び出す必要があります。そうでなければ、関数をライブラリ関数とコマンドの両方として使用するという本来の目的を打ち消します。
正しい答えと思われますが、私はContext.invokeとContext.forwardを使ってアドバイスしていないことに留意します。 – kaligne