示例#1
0
def test():
    from click._bashcomplete import resolve_ctx
    ctx = resolve_ctx(cli, "hcli", ["g1"])
    assert ctx.command.name == "g1"

    ctx = resolve_ctx(cli, "hcli", ["g2", "subcmd3"])
    assert ctx.command.name == "subcmd3"
    return
示例#2
0
def get_choices(cli: Command, prog_name: str, args: List[str],
                incomplete: str) -> List[Tuple[str, str]]:
    ctx: typer.Context = resolve_ctx(cli, prog_name, args)
    if ctx.parent is None:
        assert isinstance(cli, Group)
        cli = cast(Group, cli)
        maybe_update_state(ctx)
        maybe_add_run_to_cli(cli)
    return original_get_choices(cli, prog_name, args, incomplete)
示例#3
0
    def get_choices(cli, prog_name, args, incomplete):
        ctx = resolve_ctx(cli, prog_name, args)

        if ctx is None:
            return

        choices = []
        if incomplete and not incomplete[:1].isalnum():
            for param in ctx.command.params:
                if not isinstance(param, click.Option):
                    continue
                choices.extend(param.opts)
                choices.extend(param.secondary_opts)
        elif isinstance(ctx.command, click.MultiCommand):
            choices.extend(ctx.command.list_commands(ctx))

        for item in choices:
            if item.startswith(incomplete):
                yield item
示例#4
0
    def complete_(self, text, line, begidx, endidx):  # pylint: disable=unused-argument
        # Pulled from click._bashcomplete.do_complete, and adapted to work in this situation.
        args = shlex.split(line[:begidx])

        ctx = resolve_ctx(command, command.name, args)
        if ctx is None:
            return []

        choices = []
        if text and not text[:1].isalnum():
            for param in ctx.command.params:
                if not isinstance(param, click.Option):
                    continue
                choices.extend(param.opts)
                choices.extend(param.secondary_opts)
        elif isinstance(ctx.command, click.MultiCommand):
            choices.extend(ctx.command.list_commands(ctx))

        return [cmd for cmd in choices if cmd.startswith(text)]
示例#5
0
    def complete_(self, text, line, begidx, endidx):  # pylint: disable=unused-argument
        # Pulled from click._bashcomplete.do_complete, and adapted to work in this situation.
        args = shlex.split(line[:begidx])

        ctx = resolve_ctx(command, command.name, args[1:])
        if ctx is None:
            return []

        choices = []
        if text and not text[:1].isalnum():
            for param in ctx.command.params:
                if not isinstance(param, click.Option):
                    continue
                choices.extend(param.opts)
                choices.extend(param.secondary_opts)
        elif isinstance(ctx.command, click.MultiCommand):
            choices.extend(ctx.command.list_commands(ctx))

        return [cmd for cmd in choices if cmd.startswith(text)]