У меня есть инструмент, который использует Click для определения интерфейса CLI. Он использует группы для достижения иерархии подкоманд. Итак, если это mytool, у нас есть такие команды, как mytool edit, mytool show, mytool выполнить script1.sh и т. д.
Сама базовая команда, mytool, не имеет позиционных аргументов. Он определяется примерно так:
Код: Выделить всё
@click.group()
@click.option('--config-file', type=click.STRING, help='Config file to use')
def mytool(count, name):
"""Simple program that does things."""
....
@mytool.command()
@click.argument("script_name")
@click.pass_context
def execute(ctx, script_name):
"""Execute custom script"""
....
Я хочу добавить новое поведение. Существуют многоуровневые подкоманды различных видов. Я хочу, чтобы, если ни одна подкоманда не соответствует заданному вводу командной строки, инструмент вел себя так, как если бы вызывалась конкретная подкоманда по умолчанию. Если это подкоманда mytool выполнить, то я хочу, чтобы вызов типа mytool script1.sh вел себя так, как если бы был задан mytool выполнить script1.sh, поскольку этот ввод обычно не соответствует ни одной допустимой подкоманде.
Какова хорошая стратегия для достижения этой цели?
Подробнее здесь:
https://stackoverflow.com/questions/798 ... nd-matches