90 lines
2.6 KiB
Python
90 lines
2.6 KiB
Python
import click
|
|
from loguru import logger
|
|
|
|
from odoo_openupgrade_wizard.cli.cli_options import (
|
|
database_option_required,
|
|
demo_option,
|
|
get_migration_step_from_options,
|
|
step_option,
|
|
)
|
|
from odoo_openupgrade_wizard.tools.tools_odoo import kill_odoo, run_odoo
|
|
from odoo_openupgrade_wizard.tools.tools_postgres import ensure_database
|
|
|
|
|
|
@click.command()
|
|
@step_option
|
|
@database_option_required
|
|
@demo_option
|
|
@click.option(
|
|
"--stop-after-init",
|
|
is_flag=True,
|
|
default=False,
|
|
help="Stop after init. Mainly used"
|
|
" for test purpose, for commands that are using input()"
|
|
" function to stop.",
|
|
)
|
|
@click.option(
|
|
"-i",
|
|
"--init-modules",
|
|
type=str,
|
|
help="List of modules to install. Equivalent to -i Odoo options.",
|
|
)
|
|
@click.option(
|
|
"-u",
|
|
"--update-modules",
|
|
type=str,
|
|
help="List of modules to update. Equivalent to -u Odoo options.",
|
|
)
|
|
@click.option(
|
|
"-e",
|
|
"--execution-context",
|
|
type=click.Choice(["regular", "openupgrade"]),
|
|
help="Force to use an openupgrade (OCA/openupgrade)"
|
|
" or a regular (odoo/odoo or OCA/OCB) base code when running odoo."
|
|
" Leave empty to use the default execution of the migration step.",
|
|
)
|
|
@click.pass_context
|
|
def run(
|
|
ctx,
|
|
step,
|
|
database,
|
|
with_demo,
|
|
stop_after_init,
|
|
init_modules,
|
|
update_modules,
|
|
execution_context,
|
|
):
|
|
"""Run Odoo for a specific migration step.
|
|
|
|
The database will be created if it doesn't already exist. Unless the
|
|
`stop-after-init` flag is used, the Odoo instance will be available
|
|
on your host at the following URL: http://localhost:9069
|
|
(port depends on the `host_odoo_xmlrpc_port` setting in your
|
|
`config.yml` file).
|
|
"""
|
|
migration_step = get_migration_step_from_options(ctx, step)
|
|
ensure_database(ctx, database, state="present")
|
|
try:
|
|
run_odoo(
|
|
ctx,
|
|
migration_step,
|
|
database=database,
|
|
detached_container=not stop_after_init,
|
|
init=init_modules,
|
|
update=update_modules,
|
|
stop_after_init=stop_after_init,
|
|
demo=with_demo,
|
|
execution_context=execution_context,
|
|
publish_ports=True,
|
|
)
|
|
if not stop_after_init:
|
|
logger.info(
|
|
"Odoo is available on your host at http://localhost:"
|
|
f"{ctx.obj['config']['odoo_host_xmlrpc_port']}"
|
|
)
|
|
input("Press 'Enter' to kill the odoo container and exit...")
|
|
except (KeyboardInterrupt, SystemExit):
|
|
logger.info("Received Keyboard Interrupt or System Exiting...")
|
|
finally:
|
|
kill_odoo(ctx, database, migration_step)
|