From 3da57500c279cd19fa6d561eef149d708383138d Mon Sep 17 00:00:00 2001 From: Vo Minh Thu Date: Fri, 11 Jan 2013 14:46:57 +0100 Subject: [ADD] oe: provides sane (unfucked) command-line interface. The implementation is far from perfect. Some improvements are waiting in its previous location: lp:~openerp/openerp-command. Some docs are provided, see doc/openerp-command.rst and doc/adding-command.rst. bzr revid: vmt@openerp.com-20130111134657-im2f3uqjluyo4pm6 --- doc/adding-command.rst | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 doc/adding-command.rst (limited to 'doc/adding-command.rst') diff --git a/doc/adding-command.rst b/doc/adding-command.rst new file mode 100644 index 00000000000..5a177b06817 --- /dev/null +++ b/doc/adding-command.rst @@ -0,0 +1,34 @@ +.. _adding-command: + +Adding a new command +==================== + +``oe`` uses the argparse_ library to implement commands. Each +command lives in its own ``openerpcommand/.py`` file. + +.. _argparse: http://docs.python.org/2.7/library/argparse.html + +To create a new command, probably the most simple way to get started is to +copy/paste an existing command, say ``openerpcommand/initialize.py`` to +``openerpcommand/foo.py``. In the newly created file, the important bits +are the ``run(args)`` and ``add_parser(subparsers)`` functions. + +``add_parser``'s responsability is to create a (sub-)parser for the command, +i.e. describe the different options and flags. The last thing it does is to set +``run`` as the function to call when the command is invoked. + +.. code-block:: python + + > def add_parser(subparsers): + > parser = subparsers.add_parser('', + > description='...') + > parser.add_argument(...) + > ... + > parser.set_defaults(run=run) + +``run(args)`` actually implements the command. It should be kept as simple as +possible and delegate most of its work to small functions (probably placed at +the top of the new file). In other words, its responsability is mainly to +deal with the presence/absence/pre-processing of ``argparse``'s arguments. + +Finally, the module must be added to ``openerpcommand/__init__.py``. -- cgit v1.2.3