]> Frank Brehm's Git Trees - pixelpark/puppet-tools.git/commitdiff
Allowing undefined vendor in module BaseModuleInfo
authorFrank Brehm <frank.brehm@pixelpark.com>
Wed, 8 Feb 2023 14:50:19 +0000 (15:50 +0100)
committerFrank Brehm <frank.brehm@pixelpark.com>
Wed, 8 Feb 2023 14:50:19 +0000 (15:50 +0100)
lib/dpx_puppettools/base_moduleinfo.py

index 88f9180e33658dc74db0fcce363d75f6b2adfb54..18d8dd6ef11987aed80ae8b69b871281fd3e280f 100644 (file)
@@ -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)