diff options
-rw-r--r-- | click/_bashcomplete.py | 9 | ||||
-rw-r--r-- | examples/bashcompletion/bashcompletion.py | 2 | ||||
-rw-r--r-- | tests/test_bashcomplete.py | 20 |
3 files changed, 24 insertions, 7 deletions
diff --git a/click/_bashcomplete.py b/click/_bashcomplete.py index 15eb980..31ca859 100644 --- a/click/_bashcomplete.py +++ b/click/_bashcomplete.py @@ -38,7 +38,7 @@ def resolve_ctx(cli, prog_name, args): return ctx -def get_choices(cli, prog_name, args, incomplete, cwords, cword): +def get_choices(cli, prog_name, args, incomplete): ctx = resolve_ctx(cli, prog_name, args) if ctx is None: return @@ -60,9 +60,8 @@ def get_choices(cli, prog_name, args, incomplete, cwords, cword): try: if callable(param.autocompletion): choices.extend(param.autocompletion(ctx=ctx, - incomplete=incomplete, - cwords=cwords, - cword=cword)) + args=args, + incomplete=incomplete)) else: choices.extend(param.autocompletion) except AttributeError: @@ -83,7 +82,7 @@ def do_complete(cli, prog_name): except IndexError: incomplete = '' - for item in get_choices(cli, prog_name, args, incomplete, cwords, cword): + for item in get_choices(cli, prog_name, args, incomplete): echo(item) return True diff --git a/examples/bashcompletion/bashcompletion.py b/examples/bashcompletion/bashcompletion.py index f3f9dcd..f338c53 100644 --- a/examples/bashcompletion/bashcompletion.py +++ b/examples/bashcompletion/bashcompletion.py @@ -14,7 +14,7 @@ def cmd1(count, first, last): for c in range(count): click.echo('Name: %s %s' % (first, last)) -def get_env_vars(ctx, incomplete, cwords, cword): +def get_env_vars(ctx, args, incomplete): return os.environ.keys() @cli.command() diff --git a/tests/test_bashcomplete.py b/tests/test_bashcomplete.py index f75a236..2abd610 100644 --- a/tests/test_bashcomplete.py +++ b/tests/test_bashcomplete.py @@ -14,7 +14,25 @@ def test_basic(): def sub(local_opt): pass - assert list(get_choices(cli, 'lol', [], '')) == ['sub'] + COLORS = ['red', 'green', 'blue'] + @cli.command() + @click.argument('color', autocompletion=COLORS) + def sub2(color): + pass + + def get_colors(ctx, args, incomplete): + return COLORS + + @cli.command() + @click.argument('color', autocompletion=get_colors) + def sub3(color): + pass + + assert list(get_choices(cli, 'lol', [], '')) == ['sub', 'sub2', 'sub3'] assert list(get_choices(cli, 'lol', [], '-')) == ['--global-opt'] assert list(get_choices(cli, 'lol', ['sub'], '')) == [] assert list(get_choices(cli, 'lol', ['sub'], '-')) == ['--local-opt'] + assert list(get_choices(cli, 'lol', ['sub2'], '')) == COLORS + assert list(get_choices(cli, 'lol', ['sub2'], 'g')) == ['green'] + assert list(get_choices(cli, 'lol', ['sub3'], '')) == COLORS + assert list(get_choices(cli, 'lol', ['sub2'], 'b')) == ['blue'] |