def get_command(self, ctx, cmd_name): global _config # If we haven't instantiated our global config, do it now and load current config if _config is None: _config = Config() # Load our config file cfg_file = os.path.join(os.path.dirname(__file__), 'aliases.ini') _config.read_config(cfg_file) # Try to get builtin commands as normal rv = click.Group.get_command(self, ctx, cmd_name) if rv is not None: return rv # No builtin found. Look up an explicit command alias in the config if cmd_name in _config.aliases: actual_cmd = _config.aliases[cmd_name] return click.Group.get_command(self, ctx, actual_cmd) # Alternative option: if we did not find an explicit alias we # allow automatic abbreviation of the command. "status" for # instance will match "st". We only allow that however if # there is only one command. matches = [x for x in self.list_commands(ctx) if x.lower().startswith(cmd_name.lower())] if not matches: # No command name matched. Issue Default command. ctx.arg0 = cmd_name cmd_name = self.default_cmd_name return DefaultGroup.get_command(self, ctx, cmd_name) elif len(matches) == 1: return DefaultGroup.get_command(self, ctx, matches[0]) ctx.fail('Too many matches: %s' % ', '.join(sorted(matches)))
def get_command(self, ctx, cmd_name): global _config # If we haven't instantiated our global config, do it now and load current config if _config is None: _config = Config() # Load our config file cfg_file = os.path.join(os.path.dirname(__file__), 'aliases.ini') _config.read_config(cfg_file) # Try to get builtin commands as normal rv = click.Group.get_command(self, ctx, cmd_name) if rv is not None: return rv # No builtin found. Look up an explicit command alias in the config if cmd_name in _config.aliases: actual_cmd = _config.aliases[cmd_name] return click.Group.get_command(self, ctx, actual_cmd) # Alternative option: if we did not find an explicit alias we # allow automatic abbreviation of the command. "status" for # instance will match "st". We only allow that however if # there is only one command. matches = [x for x in self.list_commands(ctx) if x.lower().startswith(cmd_name.lower())] if not matches: # No command name matched. Issue Default command. ctx.arg0 = cmd_name cmd_name = self.default_cmd_name return DefaultGroup.get_command(self, ctx, cmd_name) elif len(matches) == 1: return DefaultGroup.get_command(self, ctx, matches[0]) ctx.fail('Too many matches: %s' % ', '.join(sorted(matches)))
def test_default_if_no_args(): cli = DefaultGroup() @cli.command(default=True) @click.argument('foo', required=False) @click.option('--bar') def foobar(foo, bar): click.echo(foo) click.echo(bar) assert r.invoke(cli, []).output.startswith('Usage:') assert r.invoke(cli, ['foo']).output == 'foo\n\n' assert r.invoke(cli, ['foo', '--bar', 'bar']).output == 'foo\nbar\n' cli.default_if_no_args = True assert r.invoke(cli, []).output == '\n\n'
def test_default_if_no_args(): cli = DefaultGroup() @cli.command() @click.argument('foo', required=False) @click.option('--bar') def foobar(foo, bar): click.echo(foo) click.echo(bar) cli.set_default_command(foobar) assert r.invoke(cli, []).output.startswith('Usage:') assert r.invoke(cli, ['foo']).output == 'foo\n\n' assert r.invoke(cli, ['foo', '--bar', 'bar']).output == 'foo\nbar\n' cli.default_if_no_args = True assert r.invoke(cli, []).output == '\n\n'
def __call__(self, *args: Any, **kwargs: Any) -> Any: try: return DefaultGroup.__call__(self, *args, **kwargs) except RpcError as err: print(f"error: {err.details()}") # pylint: disable=no-member sys.exit(1)
def decorator(f): if wrap_for_ctx: f = with_appcontext(f) return DefaultGroup.command(self, *args, **kwargs)(f)
def test_deprecation(): # @cli.command(default=True) has been deprecated since 1.2. cli = DefaultGroup() pytest.deprecated_call(cli.command, default=True)
def test_set_ignore_unknown_options_to_false(): with pytest.raises(ValueError): DefaultGroup(ignore_unknown_options=False)