При использовании click
я знаю, как определить множественный выбор. Я также знаю, как сделать параметр обязательным. Но как я могу указать, что опция B
требуется только в том случае, если значение опции A
равно foo
?
Вот пример:
import click
@click.command()
@click.option('--output',
type=click.Choice(['stdout', 'file']), default='stdout')
@click.option('--filename', type=click.STRING)
def main(output, filename):
print("output: " + output)
if output == 'file':
if filename is None:
print("filename must be provided!")
else:
print("filename: " + str(filename))
if __name__ == "__main__":
main()
Если параметр output
равен stdout
, то filename
не нужен. Однако, если пользователь выбирает output
вместо file
, необходимо предоставить другой вариант filename
. Поддерживается ли этот шаблон кликом?
В начале функции я могу добавить что-то вроде:
if output == 'file' and filename is None:
raise ValueError('When output is "file", a filename must be provided')
Но мне интересно, есть ли более красивое/чистое решение.