#!/usr/bin/env python3
import re
class StringUtils(object):
"""
Opens conditional brackets from
(aaa <= 3.1 or bbb) ccc (ddd or fff > 4.5.6)
into
aaa <= 3.1 ccc ddd
"""
def getStringInConditionalBrackets(self, inputstring):
inputstring = inputstring.strip()
items = re.findall(r"([(][A-Za-z0-9 %{?}_\.\-<>=]+[)])", inputstring)
for m in items:
out = m[m.find("(") + 1 : m.find(" or ")].strip() # noqa: E203
inputstring = inputstring.replace(m, out)
return inputstring
def getFileNameFromURL(self, inputstring):
index = inputstring.rfind("/")
return inputstring[index + 1 :] # noqa: E203
def getPackageNameFromURL(self, inputstring):
filename = self.getFileNameFromURL(inputstring)
m = re.search(
r"(zip|mozjs|.+-)([0-9_.]+)(\.source|\.tar|-src|\.zip|\+md|\.tgz).*", # noqa: E501
filename,
)
if m is None:
print(f"Unable to parse {filename}")
return inputstring
name = m.group(1)
if name.endswith("-"):
name = name[:-1]
return name
def getPackageVersionFromURL(self, inputstring):
filename = self.getFileNameFromURL(inputstring)
m = re.search(
r"(zip|mozjs|.*-)([0-9_.]+)(\.source|\.tar|-src|\.zip|\+md|\.tgz).*", # noqa: E501
filename,
)
if m is None:
print("Unable to parse " + filename)
return inputstring
name = m.group(2)
return name.replace("_", ".")
@staticmethod
def splitPackageNameAndVersion(pkg):
packageVersion = pkg.rsplit('-', 1)[0]
if not packageVersion:
raise Exception(f"Invalid argument: {pkg}")
packageName = packageVersion.rsplit("-", 1)[0]
packageVersion = pkg.rsplit(packageName)[1][1:]
return packageName, packageVersion