Пакет Click позволяет выбрать диапазон значений из списка с помощью метода click.Choice .
В моем случае значения относительно длинныестроки, поэтому с помощью:
choice_names = [u'Vulnerable BMC (IPMI)', u'IoT Vulnerability', u'SMBv1', u'BadHTTPStatus', u'Compromised']
@click.option('--category', prompt='\nPlease enter the category of incident.\n\n -- Options:\n{}\n\n'.format(
format_choices(choice_names)), type=click.Choice(choice_names))
будут перечислены значения в виде:
-> Vulnerable BMC (IPMI)
-> IoT Vulnerability
-> SMBv1
-> BadHTTPStatus
-> Compromised
Это требует от пользователя ввода полной строки, что неудобно.Предоставляет ли Click функциональность для выбора значения, используя только числовой идентификатор?Таким образом, перечисленные выше параметры могут быть перечислены как:
-> Vulnerable BMC (IPMI) [1]
-> IoT Vulnerability [2]
-> SMBv1 [3]
-> BadHTTPStatus [4]
-> Compromised [5]
, и чтобы выбрать первый вариант, пользователь должен будет ввести 1
.Это могло быть возможно путем определения пользовательской функции проверки, но я не смог найти ни одной существующей функциональности, предлагаемой Click.