From a5dcd8fdcc0a57ba42f366fd40eb5a71feb4bfea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20Taymans?= Date: Tue, 10 Jan 2023 19:52:51 +0100 Subject: [PATCH] [IMP] module repository_name detection Some repository may have multiples remotes. This tries to find the main remote when possible. --- .../tools/tools_odoo_module.py | 33 +++++++++++++++---- 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/odoo_openupgrade_wizard/tools/tools_odoo_module.py b/odoo_openupgrade_wizard/tools/tools_odoo_module.py index d982a7f..15bd050 100644 --- a/odoo_openupgrade_wizard/tools/tools_odoo_module.py +++ b/odoo_openupgrade_wizard/tools/tools_odoo_module.py @@ -403,15 +403,36 @@ class OdooModule(object): except InvalidGitRepositoryError as err: logger.critical(f"{path} is not a Git Repository.") raise err - repository_name = repo.remotes[0].url.replace( - "https://github.com/", "" + github_url_prefixes = ( + "https://github.com/", + "git@github.com:", ) - # Standardize all repository_name to lower case - repository_name = repository_name.lower() - if repository_name == "oca/openupgrade": + repository_names = [] + for remote in repo.remotes: + # Standardize all repository_name to lower case + repository_name = remote.url.lower() + for github_url_prefix in github_url_prefixes: + repository_name = repository_name.replace( + github_url_prefix, "" + ) + if repository_name.endswith(".git"): + repository_name = repository_name[: -len(".git")] + repository_names.append(repository_name) + # find main repository_name + main_repository_name = next( + ( + repo_name + for repo_name in repository_names + if repo_name.startswith("oca") + ), + None, + ) + if not main_repository_name: + main_repository_name = repository_names[0] + if main_repository_name == "oca/openupgrade": return "odoo/odoo" else: - return repository_name + return main_repository_name def __eq__(self, other): if isinstance(other, str):