Source code for SCAutolib.isDistro

"""
This module provides a function (isDistro) that helps us identify the os
of the system and configure the system accordingly.
"""

import distro
from typing import Union


[docs]def isDistro(OSes: Union[str, list], version: str = None) -> bool: cur_id = distro.id().lower() cur_name = distro.name().lower() if isinstance(OSes, str): results = (OSes in cur_id) or (OSes in cur_name) else: results = False for item in OSes: if not isinstance(item, str): continue item = item.lower() results = results or (item in cur_id) or (item in cur_name) if results is False: return False if version: cur_major = int(distro.major_version()) cur_minor = int(distro.minor_version()) if distro.minor_version() else 0 if version[0] in ('<', '=', '>'): if version[1] == '=': op = version[:2] version = version[2:] else: op = version[0] if version[0] != '=' else '==' version = version[1:] else: op = '==' parts = version.split('.') major = int(parts[0]) minor = int(parts[1]) if len(parts) > 1 else None if major == cur_major and minor: return eval("{0} {1} {2}".format(cur_minor, op, minor)) else: return eval("{0} {1} {2}".format(cur_major, op, major)) return True