Как активировать только опции, когда мы используем click.group () - PullRequest
1 голос
/ 10 марта 2020

В настоящее время я работаю над созданием аргументов командной строки с помощью click. Я почти закончил исследование, и все работает нормально. Проблема в том, что я хочу использовать единственную опцию при работе с click.group(), отличным от подкоманд.

Допустим, myCommand --version, это должно напечатать версию моего приложения, но возникает ошибка с сообщением Error: Missing command.

Мой код:

import sys
import os as _os
import click
import logging

from myApp import __version__

@click.group()
@click.option('--version', is_flag=True, help="Displays project version")
@click.pass_context
def cli(context, version: bool):
    if version:
        print(__version__)

@cli.command()
@click.pass_context
def init(context):
    click.echo(message="Starting initilization for the project" + str(context.obj))

@cli.command()
@click.pass_context
def install(context):
    click.echo(message="Starting installing from the saved data")

Здесь --version работает, только когда я вызываю команду с параметром, подобным cli --version init, но я хочу, чтобы это было cli --version для печати версии.

Кто-нибудь может мне помочь с этим?

1 Ответ

1 голос
/ 21 марта 2020

Существует click.version_option, доступный в виде билета, который должен делать то, что вы хотели.

Документация для варианта версии

Однако, если вы хотите сверните вашу собственную реализацию, я думаю, вы можете попробовать добавить invoke_without_command=True к объявлению вашей группы следующим образом:

@click.group(invoke_without_command=True)
...