# 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.", )