Захват вывода при вызове команды click внутри другой команды - PullRequest
0 голосов
/ 01 ноября 2018

Я вызываю команду create внутри команды run, но не могу захватить вывод create. result Нет. Я что-то пропустил?

Как правильно вызвать другую команду и перехватить ее вывод?

   @click.command(
        'create')
    @click.pass_context
    def create(ctx):
            ...
            click.echo(click.style(response['name'], fg='green'))
            return response['name']


@click.command(
    'run')
@click.pass_context
def run(ctx):
    result = ctx.invoke(create)

1 Ответ

0 голосов
/ 05 ноября 2018

Контексты кликов связаны с родительским, поэтому я просто передаю значение родительскому контексту.

@click.command('create')
@click.pass_context
    def create(ctx):
        ...
        click.echo(click.style(response['name'], fg='green'))
        if 'invoked_by_subcommand' in ctx.parent.__dict__:
            ctx.parent.return = response['output']


@click.command('run')
@click.pass_context
def run(ctx):
    ctx.invoked_by_subcommand = True
    result = ctx.invoke(create)
...