NextERP-scripts/cli/module.py
2025-04-05 12:25:58 +07:00

56 lines
2.1 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":
# Check if module is installed first
if not module_manager.is_module_installed(args.instance, module_name):
color_log.Show(
"INFO",
f"Module {module_name} not installed. Installing first...",
)
module_manager.install(args.instance, [module_name])
# Now upgrade the module
module_manager.upgrade(args.instance, [module_name])
case _:
color_log.Show(
"FAILED",
f"Invalid action '{args.action}' for module management.",
)