[MERGE] from trunk
[odoo/odoo.git] / openerpcommand / __init__.py
1 import argparse
2 import textwrap
3
4 from .call import Call
5 from .client import Open, Show, ConsumeNothing, ConsumeMemory, LeakMemory, ConsumeCPU
6 from .benchmarks import Bench, BenchRead, BenchFieldsViewGet, BenchDummy, BenchLogin
7 from .bench_sale_mrp import BenchSaleMrp
8 from . import common
9
10 from . import conf # Not really server-side (in the `for` below).
11 from . import cron
12 from . import drop
13 from . import initialize
14 from . import model
15 from . import module
16 from . import read
17 from . import run_tests
18 from . import scaffold
19 from . import uninstall
20 from . import update
21 from . import web
22 from . import grunt_tests
23
24 command_list_server = (conf, cron, drop, initialize, model, module, read, run_tests,
25                        scaffold, uninstall, update, web, grunt_tests, )
26
27 command_list_client = (Call, Open, Show, ConsumeNothing, ConsumeMemory,
28                        LeakMemory, ConsumeCPU, Bench, BenchRead,
29                        BenchFieldsViewGet, BenchDummy, BenchLogin,
30                        BenchSaleMrp, )
31
32 def main_parser():
33     parser = argparse.ArgumentParser(
34         usage=argparse.SUPPRESS,
35         description=textwrap.fill(textwrap.dedent("""\
36                     OpenERP Command provides a set of command-line tools around
37                     the OpenERP framework: openobject-server. All the tools are
38                     sub-commands of a single oe executable.""")),
39         epilog="""Use <command> --help to get information about the command.""",
40         formatter_class=argparse.RawDescriptionHelpFormatter,
41     )
42     description = []
43     for x in command_list_server:
44         description.append(x.__name__[len(__package__)+1:])
45         if x.__doc__:
46             description.extend([
47                 ":\n",
48                 textwrap.fill(str(x.__doc__).strip(),
49                               subsequent_indent='  ',
50                               initial_indent='  '),
51             ])
52         description.append("\n\n")
53     subparsers = parser.add_subparsers(
54         title="Available commands",
55         help=argparse.SUPPRESS,
56         description="".join(description[:-1]),
57     )
58     # Server-side commands.
59     for x in command_list_server:
60         x.add_parser(subparsers)
61     # Client-side commands. TODO one per .py file.
62     for x in command_list_client:
63         x(subparsers)
64     return parser