def test_load_sample_packages(self): loaded = list(cmdloader.load_commands(sample_package)) self.assertEquals(3, len(loaded)) from tests.sample_package import commands from tests.sample_package.subpackage import more_commands self.assertTrue(commands.example_command1 in loaded) self.assertTrue(more_commands.example_command2 in loaded) self.assertTrue(more_commands.SuperCommand in loaded)
async def _pre_run(self, cli_args): self._opts_parser = self._plugin.get_opts_parser() SubParser = create_subparser_class(self._opts_parser) self._opts_parser.add_argument("--_print-completion-model", action="store_true", help=argparse.SUPPRESS) cmd_parser = self._opts_parser.add_subparsers( dest="_cmd", help="Subcommand to run, if missing the interactive mode is started" " instead.", parser_class=SubParser, metavar="[command]", ) builtin_cmds = [ builtin.Connect, builtin.Exit, builtin.Verbose, help.HelpCommand, ] listeners = self._plugin.get_listeners() self._registry = CommandsRegistry(cmd_parser, listeners) self._ctx.set_registry(self._registry) self._registry.register_priority_listener(self._ctx) # register built-in commands for cmd in builtin_cmds: await self._registry.register_command(cmd()) # load commands from plugin for cmd in self._plugin.get_commands(): await self._registry.register_command(cmd, override=True) # load commands from command packages if not isinstance(self._command_pkgs, list): self._command_pkgs = [self._command_pkgs] for pkg in self._command_pkgs: for cmd in cmdloader.load_commands(pkg): await self._registry.register_command(AutoCommand( cmd, self._options), override=True) # By default, if we didn't receive any command we will use the connect # command which drops us to an interactive mode. self._opts_parser.set_default_subparser("connect") args = self._parse_args(cli_args) self._setup_logging(args) # check if we can add colors to stdout self._setup_terminal(args) self._validate_args(args) self._ctx.set_args(args) self._registry.set_cli_args(args) return args
def test_load_empty_packages(self): self.assertEquals([], list(cmdloader.load_commands(empty_package)))
def test_load_no_packages(self): self.assertEquals([], list(cmdloader.load_commands(None)))
def __init__( self, name, command_pkgs=None, plugin: typing.Optional[PluginInterface] = None, testing: bool = False, options: typing.Optional[Options] = None, ): self._name = name self._plugin = plugin or PluginInterface() self._options = options or Options() assert isinstance(self._plugin, PluginInterface) self._blacklist = self._plugin.getBlacklistPlugin() self._command_pkgs = command_pkgs if self._blacklist is not None: assert isinstance(self._blacklist, CommandBlacklist) self._testing = testing # Setting the context to be global context._ctx = self._plugin.create_context() self._ctx = context.get_context() assert isinstance(self._ctx, context.Context) # Setting the binary name self._ctx.set_binary_name(self._name) # Load, setup the usagelogger self._usagelogger = None self._opts_parser = self._plugin.get_opts_parser() SubParser = create_subparser_class(self._opts_parser) self._opts_parser.add_argument( "--_print-completion-model", action="store_true", help=argparse.SUPPRESS ) cmd_parser = self._opts_parser.add_subparsers( dest="_cmd", help="Subcommand to run, if missing the interactive mode is started" " instead.", parser_class=SubParser, metavar="[command]", ) builtin_cmds = [ builtin.Connect, builtin.Exit, builtin.Verbose, help.HelpCommand, ] listeners = self._plugin.get_listeners() self._registry = CommandsRegistry(cmd_parser, listeners) self._ctx.set_registry(self._registry) self._registry.register_priority_listener(self._ctx) # register built-in commands for cmd in builtin_cmds: self._registry.register_command(cmd()) # load commands from plugin for cmd in self._plugin.get_commands(): self._registry.register_command(cmd, override=True) # load commands from command packages if not isinstance(self._command_pkgs, list): self._command_pkgs = [self._command_pkgs] for pkg in self._command_pkgs: for cmd in cmdloader.load_commands(pkg): self._registry.register_command(AutoCommand(cmd), override=True) # By default, if we didn't receive any command we will use the connect # command which drops us to an interactive mode. self._opts_parser.set_default_subparser("connect")