command.multiplexer¶
Defines command class used to nest multiple commands under one.
- class lmi.scripts.common.command.multiplexer.LmiCommandMultiplexer(app, cmd_name, parent=None)[source]¶
Base class for node commands. It consumes just part of command line arguments and passes the remainder to one of its subcommands.
Example usage:
class MyCommand(LmiCommandMultiplexer): ''' My command description. Usage: %(cmd)s mycommand (subcmd1 | subcmd2) ''' COMMANDS = {'subcmd1' : Subcmd1, 'subcmd2' : Subcmd2}
Where Subcmd1 and Subcmd2 are some other LmiBaseCommand subclasses. Documentation string must be parseable with docopt.
Recognized properties:
- COMMANDS : dictionary
- property will be translated to LmiCommandMultiplexer.child_commands() class method by MultiplexerMetaClass.
Using metaclass: meta.MultiplexerMetaClass.
- classmethod child_commands()[source]¶
Abstract class method, that needs to be implemented in subclass. This is done by associated meta-class, when defining a command with assigned COMMANDS property.
Returns: Dictionary of subcommand names with assigned command factories. Return type: dictionary
- classmethod fallback_command()[source]¶
This is overriden by MultiplexerMetaClass when the FALLBACK_COMMAND gets processed.
Returns: Command factory invoked for missing command on command line. Return type: LmiEndPointCommand
- run(args)[source]¶
Handle optional parameters, retrieve desired subcommand name and pass the remainder of arguments to it.
Parameters: args (list) – List of arguments with at least subcommand name.
- run_subcommand(cmd_name, args)[source]¶
Pass control to a subcommand identified by given name.
Parameters: - cmd_name (string) – Name of direct subcommand, whose run() method shall be invoked.
- args (list) – List of arguments for particular subcommand.
Returns: Application exit code.
Return type: integer