diff --git a/README.md b/README.md index 067be44..104ed87 100644 --- a/README.md +++ b/README.md @@ -29,8 +29,9 @@ and provides helpers to run (and replay) migrations until it works. **Prerequites:** +* The tools run on debian system * You should have docker installed on your system -* the tools run on debian system +* Some features require extra packages. To have all the features available run: **Installation:** diff --git a/odoo_openupgrade_wizard/cli/cli.py b/odoo_openupgrade_wizard/cli/cli.py index 92d58ef..9ada813 100644 --- a/odoo_openupgrade_wizard/cli/cli.py +++ b/odoo_openupgrade_wizard/cli/cli.py @@ -9,6 +9,7 @@ from click_loglevel import LogLevel from loguru import logger import odoo_openupgrade_wizard +from odoo_openupgrade_wizard.cli.cli_copydb import copydb from odoo_openupgrade_wizard.cli.cli_docker_build import docker_build from odoo_openupgrade_wizard.cli.cli_estimate_workload import estimate_workload from odoo_openupgrade_wizard.cli.cli_execute_script_python import ( @@ -103,6 +104,7 @@ def main(ctx, env_folder, filestore_folder, log_level): raise +main.add_command(copydb) main.add_command(docker_build) main.add_command(estimate_workload) main.add_command(execute_script_python) diff --git a/odoo_openupgrade_wizard/cli/cli_copydb.py b/odoo_openupgrade_wizard/cli/cli_copydb.py new file mode 100644 index 0000000..a73b7bc --- /dev/null +++ b/odoo_openupgrade_wizard/cli/cli_copydb.py @@ -0,0 +1,26 @@ +import click + +from odoo_openupgrade_wizard.tools import ( + tools_click_odoo_contrib as click_odoo_contrib, +) + + +@click.command() +@click.option( + "-s", + "--source", + type=str, + help="Name of the database to copy", +) +@click.option( + "-d", + "--dest", + type=str, + help="Name of the new database", +) +@click.pass_context +def copydb(ctx, source, dest): + """Create an Odoo database by copying an existing one. + it will copy the postgres database and the filestore. + """ + click_odoo_contrib.copydb(ctx, source, dest) diff --git a/odoo_openupgrade_wizard/tools/tools_click_odoo_contrib.py b/odoo_openupgrade_wizard/tools/tools_click_odoo_contrib.py new file mode 100644 index 0000000..b118a3a --- /dev/null +++ b/odoo_openupgrade_wizard/tools/tools_click_odoo_contrib.py @@ -0,0 +1,13 @@ +from odoo_openupgrade_wizard.tools.tools_postgres import ( + ensure_database, + execute_sql_request, +) + + +def copydb(ctx, source, dest): + # drop database if exist + ensure_database(ctx, dest, state="absent") + + # Copy database + request = f"CREATE DATABASE {dest} WITH TEMPLATE {source};" + execute_sql_request(ctx, request)