Опции#
Класс click.Option:
class click.Option(
param_decls=None,
show_default=False,
prompt=False,
confirmation_prompt=False,
hide_input=False,
is_flag=None,
flag_value=None,
multiple=False,
count=False,
allow_from_autoenv=True,
type=None,
help=None,
hidden=False,
show_choices=True,
show_envvar=False,
**attrs
)
Имена опций:
@click.option("-f", "--foo-bar")
, имя параметра функции будет"foo_bar"
@click.option("-x")
, имя"x"
@click.option("-f", "--filename", "dest")
, имя"dest"
@click.option("--CamelCase")
, имя"camelcase"
@click.option("-f", "-fb")
, имя"f"
@click.option("--f", "--foo-bar")
, имя"f"
@click.option("---f")
, имя"_f"
Запрос значения у пользователя#
Запрос выполняется только если в опции не указано значение:
@click.command()
@click.option("--username", "-u", prompt=True)
@click.option("--password", "-p", prompt=True, hide_input=True)
@click.option("--secret", "-s", prompt=True, hide_input=True)
def cli(username, password, secret):
pass
Параметр hide_input позволяет скрывать вводимое значение.
Переменные окружения#
@click.command()
@click.option("--username", "-u", envvar="NET_USER")
@click.option("--password", "-p", envvar="NET_PASSWORD")
@click.option("--secret", "-s", envvar="NET_SECRET")
def cli(username, password, secret):
pass
Переменные окружения и prompt - сначала проверяется переменная окружения, потом, если ее нет, запрос у пользователя:
@click.command()
@click.option("--username", "-u", envvar="NET_USER", prompt=True)
@click.option("--password", "-p", envvar="NET_PASSWORD", prompt=True, hide_input=True)
@click.option("--secret", "-s", envvar="NET_SECRET", prompt=True, hide_input=True)
def cli(username, password, secret):
pass
Флаг#
@click.option("--show-all", "-a", is_flag=True, help="show db content")
Подтверждение ввода#
confirmation_prompt может пригодится при запросе пароля или других критичных данных. В этом случае пароль запрашивается повторно автоматически и два введенных значения сравниваются:
@click.command()
@click.option("--username", "-u", prompt=True)
@click.option("--password", "-p", prompt=True, hide_input=True, confirmation_prompt=True)
def cli(username, password):
print(username, password)
Примечание
Так как это распространенная задача, ввод пароля таким образом можно заменить декоратором click.password_option.