48 lines
1.6 KiB
Python
48 lines
1.6 KiB
Python
# cli/module.py
|
|
import tqdm
|
|
from services.odoo.module import OdooModuleManager
|
|
import lib.color_log as color_log
|
|
|
|
|
|
def setup_cli(subparsers):
|
|
module_parser = subparsers.add_parser("module", help="Manage instance module")
|
|
module_parser.add_argument(
|
|
"action", choices=["install", "uninstall", "upgrade"], help="Module action"
|
|
)
|
|
module_parser.add_argument("instance", type=str, help="Instance Name")
|
|
module_parser.add_argument(
|
|
"--modules", "-m", nargs="+", help="List of modules to process"
|
|
)
|
|
module_parser.set_defaults(func=module)
|
|
return module_parser
|
|
|
|
|
|
def module(args):
|
|
module_manager = OdooModuleManager(config_path="utility/config/settings.yaml")
|
|
if args.modules:
|
|
color_log.Show(
|
|
"INFO",
|
|
f"Processing modules: {', '.join(args.modules)} for {args.instance}",
|
|
)
|
|
else:
|
|
color_log.Show(
|
|
"INFO",
|
|
f"No modules specified. Using default modules for {args.instance}",
|
|
)
|
|
args.modules = module_manager.get_modules(args.instance)
|
|
for module_name in tqdm.tqdm(
|
|
args.modules, desc="Processing modules", unit="module"
|
|
):
|
|
match args.action:
|
|
case "install":
|
|
module_manager.install(args.instance, [module_name])
|
|
case "uninstall":
|
|
module_manager.uninstall(args.instance, [module_name])
|
|
case "upgrade":
|
|
module_manager.upgrade(args.instance, [module_name])
|
|
case _:
|
|
color_log.Show(
|
|
"FAILED",
|
|
f"Invalid action '{args.action}' for module management.",
|
|
)
|