diff --git a/package-list.yaml b/package-list.yaml index f95c5c2..21c14d7 100644 --- a/package-list.yaml +++ b/package-list.yaml @@ -1,10 +1,12 @@ maven: - mirrors: + package-mirrors: - "https://repo.maven.apache.org/maven2" - "https://repo1.maven.org/maven2" - "https://oss.sonatype.org/content/repositories/snapshots" - "https://packages.confluent.io/maven" - "https://registry.quarkus.io/maven" + + plugin-mirrors: - "https://plugins.gradle.org/m2" configurations: diff --git a/sync/src/config/__init__.py b/sync/src/config/__init__.py index a4d47ba..f24bdab 100644 --- a/sync/src/config/__init__.py +++ b/sync/src/config/__init__.py @@ -1,3 +1,3 @@ from .packages import Package from .plugins import Plugin -from .parse import Configuration, Config, parse_config +from .parse import Configuration, Config, MavenMirrors, parse_config diff --git a/sync/src/config/parse.py b/sync/src/config/parse.py index 5174f0d..7c06f13 100644 --- a/sync/src/config/parse.py +++ b/sync/src/config/parse.py @@ -19,10 +19,16 @@ class Configuration: packages: list[Package] +@dataclass +class MavenMirrors: + package_mirrors: list[str] + plugin_mirrors: list[str] + + @dataclass class Config: configurations: list[Configuration] - mirrors: list[str] + mirrors: MavenMirrors def parse_config(path: Path) -> Optional[Config]: @@ -69,5 +75,8 @@ def parse_config(path: Path) -> Optional[Config]: Configuration(kotlin, gradle, plugins, packages) for (kotlin, gradle), (plugins, packages) in configurations.items() ], - data.get('maven', {}).get('mirrors', []), + MavenMirrors( + data.get('maven', {}).get('package-mirrors', []), + data.get('maven', {}).get('plugin-mirrors', []), + ), ) diff --git a/sync/src/main.py b/sync/src/main.py index f75394b..f240e1f 100644 --- a/sync/src/main.py +++ b/sync/src/main.py @@ -4,7 +4,7 @@ import dataclasses import logging from pathlib import Path -from config import parse_config, Configuration +from config import parse_config, Configuration, MavenMirrors from gradle import create_gradle from maven import get_effective_packages from maven.plugins import get_effective_plugins @@ -12,7 +12,7 @@ from maven.plugins import get_effective_plugins logger = logging.getLogger(__name__) -async def resolve_kotlin(configuration: Configuration, mirrors: list[str]): +async def resolve_kotlin(configuration: Configuration, mirrors: MavenMirrors): packages = [ resolved for package in configuration.packages @@ -35,8 +35,10 @@ async def main(package_list: Path, output_dir: Path, gradle_repo: str) -> None: print('Error in configuration') elif not config.configurations: print('No configurations defined, nothing to do.') - elif not config.mirrors: - print('No mirrors defined. Add maven.mirrors in the config file.') + elif not config.mirrors.package_mirrors and [p for c in config.configurations for p in c.packages]: + print('No package mirrors defined. Add maven.package-mirrors in the config file.') + elif not config.mirrors.plugin_mirrors and [p for c in config.configurations for p in c.plugins]: + print('No plugin mirrors defined. Add maven.plugin-mirrors in the config file.') else: for i, configuration in enumerate(config.configurations): logger.info(f'Resolving configuration kotlin={configuration.kotlin_version}, gradle={configuration.gradle_version}') diff --git a/sync/src/maven/packages.py b/sync/src/maven/packages.py index 46f13db..c19eec9 100644 --- a/sync/src/maven/packages.py +++ b/sync/src/maven/packages.py @@ -2,7 +2,7 @@ import dataclasses import logging from typing import Optional, Iterable -from config import Package +from config import Package, MavenMirrors from maven.fetch import fetch_pom from maven.version import resolve_version from pom import PropertyMissing, Properties @@ -10,7 +10,7 @@ from pom import PropertyMissing, Properties logger = logging.getLogger(__name__) -async def get_effective_packages(package: Package, mirrors: Iterable[str]) -> list[Package]: +async def get_effective_packages(package: Package, mirrors: MavenMirrors) -> list[Package]: """ Get a list of packages that is required for Gradle to fetch this package. @@ -25,13 +25,13 @@ async def get_effective_packages(package: Package, mirrors: Iterable[str]) -> li """ versions = [ dataclasses.replace(package, version=version) - for version in await resolve_version(package, mirrors) + for version in await resolve_version(package, mirrors.package_mirrors) ] deps = [ dep for v in versions - for dep in await get_dependencies(v, mirrors) + for dep in await get_dependencies(v, mirrors.package_mirrors) ] return versions + deps diff --git a/sync/src/maven/plugins.py b/sync/src/maven/plugins.py index af0fb4a..41069b1 100644 --- a/sync/src/maven/plugins.py +++ b/sync/src/maven/plugins.py @@ -1,15 +1,14 @@ import dataclasses -from typing import Iterable -from config import Plugin +from config import Plugin, MavenMirrors from maven.version import resolve_version -async def get_effective_plugins(plugin: Plugin, mirrors: Iterable[str]) -> list[Plugin]: +async def get_effective_plugins(plugin: Plugin, mirrors: MavenMirrors) -> list[Plugin]: if plugin.version: return [ dataclasses.replace(plugin, version=version) - for version in await resolve_version(plugin.package, mirrors) + for version in await resolve_version(plugin.package, mirrors.plugin_mirrors) ] else: return [plugin]