X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=fba%2Fhelpers%2Fversion.py;h=b6f7c6468463a1103ef120e6cda291ddf9ebd03f;hb=21c7c13dcdf897008a7f340e606c947092ba51bd;hp=19ad5207461860ae9b06fbb3bc26d18a25b6195a;hpb=aa6a95081bb9fd510eb1b838c7c929fbae92c300;p=fba.git diff --git a/fba/helpers/version.py b/fba/helpers/version.py index 19ad520..b6f7c64 100644 --- a/fba/helpers/version.py +++ b/fba/helpers/version.py @@ -16,6 +16,8 @@ import logging import re +from fba.helpers import software as software_helper + logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) @@ -26,13 +28,14 @@ patterns = [ # non-sematic, e.g. 1.2.3.4 re.compile(r"^(?Pv|V{0,1})(\.{0,1})(?P0|[1-9]\d*)\.(?P0+|[1-9]\d*)(\.(?P0+|[1-9]\d*)(\.(?P0|[1-9]\d*))?)$"), # non-sematic, e.g. 2023-05[-dev] - re.compile(r"^(?P[1-9]{1}[0-9]{3})\.(?P[0-9]{2})(-dev){0,1}$"), + re.compile(r"^(?P[1-9]{1}[0-9]{3})\.(?P[0-9]{2})(-[a-z]+){0,1}$"), # non-semantic, e.g. abcdef0 re.compile("^[a-f0-9]{7}$"), ] def remove(software: str) -> str: logger.debug("software='%s' - CALLED!", software) + if "." not in software and " " not in software: logger.warning("software='%s' does not contain a version number.", software) return software @@ -80,73 +83,7 @@ def remove(software: str) -> str: software = temp[0:end].strip() if " version" in software: logger.debug("software='%s' contains word ' version'", software) - software = strip_until(software, " version") - - logger.debug("software='%s' - EXIT!", software) - return software - -def strip_powered_by(software: str) -> str: - logger.debug("software='%s' - CALLED!", software) - if not isinstance(software, str): - raise ValueError(f"Parameter software[]='{type(software)}' is not of type 'str'") - elif software == "": - raise ValueError("Parameter 'software' is empty") - elif "powered by" not in software: - logger.warning("Cannot find 'powered by' in software='%s'!", software) - return software - - start = software.find("powered by ") - logger.debug("start[%s]=%d", type(start), start) - - software = software[start + 11:].strip() - logger.debug("software='%s'", software) - - software = strip_until(software, " - ") - - logger.debug("software='%s' - EXIT!", software) - return software - -def strip_hosted_on(software: str) -> str: - logger.debug("software='%s' - CALLED!", software) - if not isinstance(software, str): - raise ValueError(f"Parameter software[]='{type(software)}' is not of type 'str'") - elif software == "": - raise ValueError("Parameter 'software' is empty") - elif "hosted on" not in software: - logger.warning("Cannot find 'hosted on' in sofware='%s'!", software) - return software - - end = software.find("hosted on ") - logger.debug("end[%s]=%d", type(end), end) - - software = software[0:end].strip() - logger.debug("software[%s]='%s'", type(software), software) - - software = strip_until(software, " - ") - - logger.debug("software='%s' - EXIT!", software) - return software - -def strip_until(software: str, until: str) -> str: - logger.debug("software='%s',until='%s' - CALLED!", software, until) - if not isinstance(software, str): - raise ValueError(f"Parameter software[]='{type(software)}' is not of type 'str'") - elif software == "": - raise ValueError("Parameter 'software' is empty") - elif not isinstance(until, str): - raise ValueError(f"Parameter until[]='{type(until)}' is not of type 'str'") - elif until == "": - raise ValueError("Parameter 'until' is empty") - elif not until in software: - logger.warning("Cannot find until='%s' in software='%s'!", until, software) - return software - - # Next, strip until part - end = software.find(until) - - logger.debug("end[%s]=%d", type(end), end) - if end > 0: - software = software[0:end].strip() + software = software_helper.strip_until(software, " version") logger.debug("software='%s' - EXIT!", software) return software