Pārlūkot izejas kodu

WIP: resolve nested properties

wip/gradle-reposilite
Sindre Stephansen pirms 2 gadiem
vecāks
revīzija
d54cbc539b
1 mainītis faili ar 33 papildinājumiem un 17 dzēšanām
  1. +33
    -17
      update-poms.py

+ 33
- 17
update-poms.py Parādīt failu

@@ -37,6 +37,8 @@ class TooManyRequestsException(Exception):

class PackagePOM:
def __init__(self, package: 'Package', pom: str):
self._package = package

logger.debug(f'{package}: Parsing POM')
self.raw_root = ET.fromstring(pom)

@@ -125,27 +127,41 @@ class PackagePOM:
else:
return None

def _package_from_xml_dep(self, dep: ET.Element):
def prop_replace(match):
def _package_from_xml_dep(self, dep: ET.Element) -> 'Package':
def lookup_prop(match) -> str:
prop = match.group(1)
value = self.get_property(match.group(1))
logger.debug(f'Replacing property {prop} with {value}')

if prop == 'project.groupId':
value = str(self._package.groupId)
elif prop == 'project.artifactId':
value = str(self._package.artifactId)
elif prop == 'project.version':
value = str(self._package.version)
else:
value = self.get_property(prop)
logger.debug(f'{self._package}: Trying to recurse prop {value}')
value = prop_replace(value)

logger.debug(f'{self._package}: Replacing property {prop} with {value}')
return value

return Package(
*[
re.sub(
r'\$\{([^\}]*)\}',
prop_replace,
elem.text or '' if (elem := dep.find(tag, ns)) is not None else '',
)
def prop_replace(text) -> str:
logger.debug(f'{self._package}: Getting prop {text}')
return re.sub(
r'\$\{([^\}]*)\}',
lookup_prop,
text,
)

for tag in [
'groupId',
'artifactId',
'version',
]
]
def prop_replace_tag(tag) -> str:
return prop_replace(
elem.text or '' if (elem := dep.find(tag, ns)) is not None else '',
)

return Package(
groupId=prop_replace_tag('groupId'),
artifactId=prop_replace_tag('artifactId'),
version=prop_replace_tag('version'),
)

@property


Notiek ielāde…
Atcelt
Saglabāt