Command-line interface¶
Module aiotraversal.cmd
makes if easy to write command-line interfaces for you application.
Parser¶
After config.include('aiotraversal.cmd')
, you can use these objects:
config['cmd']['parser']
: ArgumentParser instance;config['cmd']['subparsers']
: subparsers for create commands, the main tool for extend console application;
After configure process finished:
app['cmd']['args']
:Namespace
instance fromconfig['cmd']['parser'].parse_args()
;app['cmd']['run_func']
: function for Function run;
Add commands¶
Something like this:
import asyncio
from aiotraversal import Application
from aiotraversal.cmd import run
def cmd_func(app, loop):
print('cmd_func is called!')
def main():
loop = asyncio.get_event_loop()
app = Application()
with app.configure(loop=loop) as config:
config.include('aiotraversal.cmd') # include
subparsers = config['cmd']['subparsers']
parser_test = subparsers.add_parser('test_command', help="Test") # create subparser
parser_test.set_defaults(func=cmd_func) # add function for start
# ... extend subpaser with `parser_test.add_argument`
run(app, loop) # in this place cmd_func is called
Now, if run your application with argument test_command
(e.g. my_cmd test_command
),
“cmd_func is called!” printed.
Default key func
of subparser, is magic for bind functions to commands.
It is called from the Function run with two arguments: app
and loop
.
ArgumentParser¶
ArgumentParser
is modified for grouping subcommand arguments.
StackOverflow with this solution.
Function run
¶
After configure process, you must run aiotraversal.cmd.run
.
It run app['cmd']['run_func']
, finish application and close loop.