From 65a852e82de898bad584d284fa3d37df06dec633 Mon Sep 17 00:00:00 2001 From: Frank Brehm Date: Wed, 8 Feb 2023 15:50:19 +0100 Subject: [PATCH] Allowing undefined vendor in module BaseModuleInfo --- lib/dpx_puppettools/base_moduleinfo.py | 65 ++++++++++++++++++-------- 1 file changed, 45 insertions(+), 20 deletions(-) diff --git a/lib/dpx_puppettools/base_moduleinfo.py b/lib/dpx_puppettools/base_moduleinfo.py index 88f9180..18d8dd6 100644 --- a/lib/dpx_puppettools/base_moduleinfo.py +++ b/lib/dpx_puppettools/base_moduleinfo.py @@ -20,7 +20,7 @@ from fb_tools.obj import FbBaseObjectError, FbBaseObject from .errors import PuppetToolsError, ModuleInitError from .xlate import XLATOR -__version__ = '0.1.1' +__version__ = '0.2.0' LOG = logging.getLogger(__name__) @@ -32,7 +32,7 @@ ngettext = XLATOR.ngettext class BaseModuleInfo(FbBaseObject): """Base class for encapsulating information about a Puppet module.""" - re_split_name = re.compile(r'^\s*([a-z0-9]+)[-/_](\S+)\s*$', re.IGNORECASE) + re_split_name = re.compile(r'^\s*([a-z0-9]+)(?:[-/_](\S+))?\s*$', re.IGNORECASE) # ------------------------------------------------------------------------- def __init__( @@ -70,15 +70,24 @@ class BaseModuleInfo(FbBaseObject): self._full_name_orig = _full_name - if _name: - self._name = _name - else: - self._name = match.group(2).lower() + if match.group(2): + if _name: + self._name = _name + else: + self._name = match.group(2).lower() - if _vendor: - self._vendor = _name + if _vendor: + self._vendor = _name + else: + self._vendor = match.group(1).lower() else: - self._vendor = match.group(1).lower() + if _name: + self._name = _name + else: + self._name = match.group(1).lower() + + if _vendor: + self._vendor = _name else: @@ -111,7 +120,7 @@ class BaseModuleInfo(FbBaseObject): if self.name is None: return None if self.vendor is None: - return None + return self.name return "{v}-{n}".format(v=self.vendor, n=self.name) # ------------------------------------------------------------------------- @@ -163,13 +172,19 @@ class BaseModuleInfo(FbBaseObject): if not isinstance(other, BaseModuleInfo): return False - if self.name is None or self.vendor is None or other.name is None or other.vendor is None: + if self.name is None or other.name is None: msg = _("Cannot compare an empty puppet module info with another module info.") raise BaseModuleInfoError(msg) if self.name.lower() != other.name.lower(): return False + if self.vendor is None and other.vendor is not None: + return False + + if self.vendor is not None and other.vendor is None: + return False + if self.vendor.lower() != other.vendor.lower(): return False @@ -183,14 +198,19 @@ class BaseModuleInfo(FbBaseObject): LOG.debug("Comparing {what!r} {cls}-objects ...".format( what='<', cls=self.__class__.__name__)) - if self.name is None or self.vendor is None or other.name is None or other.vendor is None: + if self.name is None or other.name is None: msg = _("Cannot compare an empty puppet module info with another module info.") raise BaseModuleInfoError(msg) - if self.vendor.lower() < other.vendor.lower(): + if self.vendor is None and other.vendor is not None: return True - if self.vendor.lower() > other.vendor.lower(): + if self.vendor is not None and other.vendor is None: return False + if self.vendor is not None and other.vendor is not None: + if self.vendor.lower() < other.vendor.lower(): + return True + if self.vendor.lower() > other.vendor.lower(): + return False if self.name.lower() < other.name.lower(): return True return False @@ -203,7 +223,7 @@ class BaseModuleInfo(FbBaseObject): LOG.debug("Comparing {what!r} {cls}-objects ...".format( what='<=', cls=self.__class__.__name__)) - if self.name is None or self.vendor is None or other.name is None or other.vendor is None: + if self.name is None or other.name is None: msg = _("Cannot compare an empty puppet module info with another module info.") raise BaseModuleInfoError(msg) @@ -220,14 +240,19 @@ class BaseModuleInfo(FbBaseObject): LOG.debug("Comparing {what!r} {cls}-objects ...".format( what='>', cls=self.__class__.__name__)) - if self.name is None or self.vendor is None or other.name is None or other.vendor is None: + if self.name is None or other.name is None: msg = _("Cannot compare an empty puppet module info with another module info.") raise BaseModuleInfoError(msg) - if self.vendor.lower() > other.vendor.lower(): - return True - if self.vendor.lower() < other.vendor.lower(): + if self.vendor is None and other.vendor is not None: return False + if self.vendor is not None and other.vendor is None: + return True + if self.vendor is not None and other.vendor is not None: + if self.vendor.lower() > other.vendor.lower(): + return True + if self.vendor.lower() < other.vendor.lower(): + return False if self.name.lower() > other.name.lower(): return True return False @@ -240,7 +265,7 @@ class BaseModuleInfo(FbBaseObject): LOG.debug("Comparing {what!r} {cls}-objects ...".format( what='>=', cls=self.__class__.__name__)) - if self.name is None or self.vendor is None or other.name is None or other.vendor is None: + if self.name is None or other.name is None: msg = _("Cannot compare an empty puppet module info with another module info.") raise BaseModuleInfoError(msg) -- 2.39.5