Выберите вариант, только если параметр соответствует чему-либо, все подсказки - PullRequest
0 голосов
/ 29 мая 2020

Привет, я пытаюсь сделать так, чтобы нажмите кнопку «пропустить» для варианта, если предыдущее значение что-то равно. Решение находится в этом связанном вопросе:

Щелкните параметр пароля, только если аргумент имеет значение

Однако это решение работает только в том случае, если параметр «зависимый» передается как параметр в командной строке. Если зависимое значение также должно быть запрошено для «args» и «opts», пусто.

def PromptIf(arg_name, arg_value):

class Cls(click.Option):
    def __init__(self, *args, **kwargs):
        kwargs['prompt'] = kwargs.get('prompt', True)
        super(Cls, self).__init__(*args, **kwargs)

    def handle_parse_result(self, ctx, opts, args):
        assert any(c.name == arg_name for c in ctx.command.params), \
            "Param '{}' not found for option '{}'".format(
                arg_name, self.name)
        if arg_name not in opts: #Is empty if previous values are promted for. 
            raise click.UsageError(
                "Illegal usage: `%s` is a required parameter with" % (
                    arg_name))

        # remove prompt from 
        if opts[arg_name] not in arg_value:
            self.prompt = None


        return super(Cls, self).handle_parse_result(ctx, opts, args)

return Cls

Есть предложения?

...