mirror of
https://github.com/bringout/oca-ocb-core.git
synced 2026-04-19 06:12:05 +02:00
Initial commit: Core packages
This commit is contained in:
commit
12c29a983b
9512 changed files with 8379910 additions and 0 deletions
68
odoo-bringout-oca-ocb-base/odoo/cli/command.py
Normal file
68
odoo-bringout-oca-ocb-base/odoo/cli/command.py
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
import logging
|
||||
import os
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
import odoo
|
||||
from odoo.modules import get_modules, get_module_path, initialize_sys_path
|
||||
|
||||
commands = {}
|
||||
class Command:
|
||||
name = None
|
||||
def __init_subclass__(cls):
|
||||
cls.name = cls.name or cls.__name__.lower()
|
||||
commands[cls.name] = cls
|
||||
|
||||
|
||||
ODOO_HELP = """\
|
||||
Odoo CLI, use '{odoo_bin} --help' for regular server options.
|
||||
|
||||
Available commands:
|
||||
{command_list}
|
||||
|
||||
Use '{odoo_bin} <command> --help' for individual command help."""
|
||||
|
||||
class Help(Command):
|
||||
""" Display the list of available commands """
|
||||
def run(self, args):
|
||||
padding = max([len(cmd) for cmd in commands]) + 2
|
||||
command_list = "\n ".join([
|
||||
" {}{}".format(name.ljust(padding), (command.__doc__ or "").strip())
|
||||
for name, command in sorted(commands.items())
|
||||
])
|
||||
print(ODOO_HELP.format( # pylint: disable=bad-builtin
|
||||
odoo_bin=Path(sys.argv[0]).name,
|
||||
command_list=command_list
|
||||
))
|
||||
|
||||
def main():
|
||||
args = sys.argv[1:]
|
||||
|
||||
# The only shared option is '--addons-path=' needed to discover additional
|
||||
# commands from modules
|
||||
if len(args) > 1 and args[0].startswith('--addons-path=') and not args[1].startswith("-"):
|
||||
# parse only the addons-path, do not setup the logger...
|
||||
odoo.tools.config._parse_config([args[0]])
|
||||
args = args[1:]
|
||||
|
||||
# Default legacy command
|
||||
command = "server"
|
||||
|
||||
# TODO: find a way to properly discover addons subcommands without importing the world
|
||||
# Subcommand discovery
|
||||
if len(args) and not args[0].startswith("-"):
|
||||
logging.disable(logging.CRITICAL)
|
||||
initialize_sys_path()
|
||||
for module in get_modules():
|
||||
if (Path(get_module_path(module)) / 'cli').is_dir():
|
||||
__import__('odoo.addons.' + module)
|
||||
logging.disable(logging.NOTSET)
|
||||
command = args[0]
|
||||
args = args[1:]
|
||||
|
||||
if command in commands:
|
||||
o = commands[command]()
|
||||
o.run(args)
|
||||
else:
|
||||
sys.exit('Unknown command %r' % (command,))
|
||||
Loading…
Add table
Add a link
Reference in a new issue