from .errors import PuppetToolsError, ModuleInitError
from .xlate import XLATOR
-__version__ = '0.1.1'
+__version__ = '0.2.0'
LOG = logging.getLogger(__name__)
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__(
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:
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)
# -------------------------------------------------------------------------
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
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
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)
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
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)