import logging
import re
+from fba.helpers import software as software_helper
+
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
# non-sematic, e.g. 1.2.3.4
re.compile(r"^(?P<version>v|V{0,1})(\.{0,1})(?P<major>0|[1-9]\d*)\.(?P<minor>0+|[1-9]\d*)(\.(?P<patch>0+|[1-9]\d*)(\.(?P<subpatch>0|[1-9]\d*))?)$"),
# non-sematic, e.g. 2023-05[-dev]
- re.compile(r"^(?P<year>[1-9]{1}[0-9]{3})\.(?P<month>[0-9]{2})(-dev){0,1}$"),
+ re.compile(r"^(?P<year>[1-9]{1}[0-9]{3})\.(?P<month>[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
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 '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 '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 'str'")
- elif software == "":
- raise ValueError("Parameter 'software' is empty")
- elif not isinstance(until, str):
- raise ValueError(f"Parameter until[]='{type(until)}' is not '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