|
|
|
@@ -18,54 +18,52 @@ class Package: |
|
|
|
|
|
|
|
|
|
|
|
def handle_packages(section) -> list[Package]: |
|
|
|
ignore = ['_versions'] |
|
|
|
result: list[Package] = [] |
|
|
|
|
|
|
|
for entry in section: |
|
|
|
if entry not in ignore: |
|
|
|
if ':' in entry: |
|
|
|
try: |
|
|
|
group_id, artifact_id = entry.split(':') |
|
|
|
except ValueError: |
|
|
|
logger.exception( |
|
|
|
f'Illegal package identifier "{entry}". Should be on the format "groupId:artifactId"') |
|
|
|
continue |
|
|
|
if ':' in entry: |
|
|
|
try: |
|
|
|
group_id, artifact_id = entry.split(':') |
|
|
|
except ValueError: |
|
|
|
logger.exception( |
|
|
|
f'Illegal package identifier "{entry}". Should be on the format "groupId:artifactId"') |
|
|
|
continue |
|
|
|
|
|
|
|
value = section[entry] |
|
|
|
if isinstance(value, str): |
|
|
|
result.append(Package(group_id, artifact_id, value)) |
|
|
|
elif isinstance(value, list): |
|
|
|
for version in value: |
|
|
|
result.append(Package(group_id, artifact_id, version)) |
|
|
|
else: |
|
|
|
logger.warning(f'Invalid version "{value}" for "{entry}". Should be a string or list.') |
|
|
|
elif isinstance(section[entry], dict): |
|
|
|
group_id = entry |
|
|
|
group_section = section[entry] |
|
|
|
default_versions = group_section.get('_versions', []) |
|
|
|
value = section[entry] |
|
|
|
if isinstance(value, str): |
|
|
|
result.append(Package(group_id, artifact_id, value)) |
|
|
|
elif isinstance(value, list): |
|
|
|
for version in value: |
|
|
|
result.append(Package(group_id, artifact_id, version)) |
|
|
|
else: |
|
|
|
logger.warning(f'Invalid version "{value}" for "{entry}". Should be a string or list.') |
|
|
|
elif isinstance(section[entry], dict): |
|
|
|
group_id = entry |
|
|
|
group_section = section[entry] |
|
|
|
default_versions = group_section.get('_default', []) |
|
|
|
|
|
|
|
for artifact_id, value in group_section.items(): |
|
|
|
if artifact_id not in ignore: |
|
|
|
if not value and default_versions: |
|
|
|
value = default_versions |
|
|
|
for artifact_id, value in group_section.items(): |
|
|
|
if not artifact_id.startswith('_'): |
|
|
|
if not value and default_versions: |
|
|
|
value = default_versions |
|
|
|
|
|
|
|
if isinstance(value, str): |
|
|
|
result.append(Package(group_id, artifact_id, value)) |
|
|
|
elif isinstance(value, list): |
|
|
|
versions: set[str] = set() |
|
|
|
if isinstance(value, str): |
|
|
|
result.append(Package(group_id, artifact_id, value)) |
|
|
|
elif isinstance(value, list): |
|
|
|
versions: set[str] = set() |
|
|
|
|
|
|
|
for version in value: |
|
|
|
if version == 'default': |
|
|
|
versions.update(default_versions) |
|
|
|
elif version.startswith('-'): |
|
|
|
versions.remove(version[1:]) |
|
|
|
else: |
|
|
|
versions.add(version) |
|
|
|
for version in value: |
|
|
|
if version == 'default': |
|
|
|
versions.update(default_versions) |
|
|
|
elif version.startswith('-'): |
|
|
|
versions.remove(version[1:]) |
|
|
|
else: |
|
|
|
versions.add(version) |
|
|
|
|
|
|
|
result.extend([Package(group_id, artifact_id, version) for version in versions]) |
|
|
|
else: |
|
|
|
logger.warning(f'Invalid versions "{value}" for "{group_id}:{artifact_id}"') |
|
|
|
else: |
|
|
|
logger.warning(f'Invalid package spec "{entry}". Should be a full spec or a group ID') |
|
|
|
result.extend([Package(group_id, artifact_id, version) for version in versions]) |
|
|
|
else: |
|
|
|
logger.warning(f'Invalid versions "{value}" for "{group_id}:{artifact_id}"') |
|
|
|
else: |
|
|
|
logger.warning(f'Invalid package spec "{entry}". Should be a full spec or a group ID') |
|
|
|
|
|
|
|
return result |