NextERP-scripts/cli/module.py
2025-04-12 15:55:53 +07:00

69 lines
2.7 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","update_list"], 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)
pbar = tqdm.tqdm(total=len(args.modules), desc="Processing modules", unit="module")
for module_name in args.modules:
try:
match args.action:
case "update_list":
pbar.set_description(f"Installing {module_name}")
module_manager.update_list(args.instance)
case "install":
pbar.set_description(f"Installing {module_name}")
module_manager.install(args.instance, [module_name])
case "uninstall":
pbar.set_description(f"Uninstalling {module_name}")
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):
pbar.set_description(f"Installing {module_name}")
module_manager.install(args.instance, [module_name])
pbar.set_description(f"Upgrading {module_name}")
module_manager.upgrade(args.instance, [module_name])
case _:
color_log.Show(
"FAILED",
f"Invalid action '{args.action}' for module management.",
)
return
pbar.update(1)
except Exception as e:
color_log.Show(
"FAILED",
f"Error processing module {module_name}: {str(e)}",
)
continue
pbar.close()