| @@ -1,10 +1,12 @@ | |||||
| maven: | maven: | ||||
| mirrors: | |||||
| package-mirrors: | |||||
| - "https://repo.maven.apache.org/maven2" | - "https://repo.maven.apache.org/maven2" | ||||
| - "https://repo1.maven.org/maven2" | - "https://repo1.maven.org/maven2" | ||||
| - "https://oss.sonatype.org/content/repositories/snapshots" | - "https://oss.sonatype.org/content/repositories/snapshots" | ||||
| - "https://packages.confluent.io/maven" | - "https://packages.confluent.io/maven" | ||||
| - "https://registry.quarkus.io/maven" | - "https://registry.quarkus.io/maven" | ||||
| plugin-mirrors: | |||||
| - "https://plugins.gradle.org/m2" | - "https://plugins.gradle.org/m2" | ||||
| configurations: | configurations: | ||||
| @@ -1,3 +1,3 @@ | |||||
| from .packages import Package | from .packages import Package | ||||
| from .plugins import Plugin | from .plugins import Plugin | ||||
| from .parse import Configuration, Config, parse_config | |||||
| from .parse import Configuration, Config, MavenMirrors, parse_config | |||||
| @@ -19,10 +19,16 @@ class Configuration: | |||||
| packages: list[Package] | packages: list[Package] | ||||
| @dataclass | |||||
| class MavenMirrors: | |||||
| package_mirrors: list[str] | |||||
| plugin_mirrors: list[str] | |||||
| @dataclass | @dataclass | ||||
| class Config: | class Config: | ||||
| configurations: list[Configuration] | configurations: list[Configuration] | ||||
| mirrors: list[str] | |||||
| mirrors: MavenMirrors | |||||
| def parse_config(path: Path) -> Optional[Config]: | def parse_config(path: Path) -> Optional[Config]: | ||||
| @@ -69,5 +75,8 @@ def parse_config(path: Path) -> Optional[Config]: | |||||
| Configuration(kotlin, gradle, plugins, packages) | Configuration(kotlin, gradle, plugins, packages) | ||||
| for (kotlin, gradle), (plugins, packages) in configurations.items() | 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', []), | |||||
| ), | |||||
| ) | ) | ||||
| @@ -4,7 +4,7 @@ import dataclasses | |||||
| import logging | import logging | ||||
| from pathlib import Path | from pathlib import Path | ||||
| from config import parse_config, Configuration | |||||
| from config import parse_config, Configuration, MavenMirrors | |||||
| from gradle import create_gradle | from gradle import create_gradle | ||||
| from maven import get_effective_packages | from maven import get_effective_packages | ||||
| from maven.plugins import get_effective_plugins | from maven.plugins import get_effective_plugins | ||||
| @@ -12,7 +12,7 @@ from maven.plugins import get_effective_plugins | |||||
| logger = logging.getLogger(__name__) | logger = logging.getLogger(__name__) | ||||
| async def resolve_kotlin(configuration: Configuration, mirrors: list[str]): | |||||
| async def resolve_kotlin(configuration: Configuration, mirrors: MavenMirrors): | |||||
| packages = [ | packages = [ | ||||
| resolved | resolved | ||||
| for package in configuration.packages | 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') | print('Error in configuration') | ||||
| elif not config.configurations: | elif not config.configurations: | ||||
| print('No configurations defined, nothing to do.') | 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: | else: | ||||
| for i, configuration in enumerate(config.configurations): | for i, configuration in enumerate(config.configurations): | ||||
| logger.info(f'Resolving configuration kotlin={configuration.kotlin_version}, gradle={configuration.gradle_version}') | logger.info(f'Resolving configuration kotlin={configuration.kotlin_version}, gradle={configuration.gradle_version}') | ||||
| @@ -2,7 +2,7 @@ import dataclasses | |||||
| import logging | import logging | ||||
| from typing import Optional, Iterable | from typing import Optional, Iterable | ||||
| from config import Package | |||||
| from config import Package, MavenMirrors | |||||
| from maven.fetch import fetch_pom | from maven.fetch import fetch_pom | ||||
| from maven.version import resolve_version | from maven.version import resolve_version | ||||
| from pom import PropertyMissing, Properties | from pom import PropertyMissing, Properties | ||||
| @@ -10,7 +10,7 @@ from pom import PropertyMissing, Properties | |||||
| logger = logging.getLogger(__name__) | 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. | 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 = [ | versions = [ | ||||
| dataclasses.replace(package, version=version) | dataclasses.replace(package, version=version) | ||||
| for version in await resolve_version(package, mirrors) | |||||
| for version in await resolve_version(package, mirrors.package_mirrors) | |||||
| ] | ] | ||||
| deps = [ | deps = [ | ||||
| dep | dep | ||||
| for v in versions | 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 | return versions + deps | ||||
| @@ -1,15 +1,14 @@ | |||||
| import dataclasses | import dataclasses | ||||
| from typing import Iterable | |||||
| from config import Plugin | |||||
| from config import Plugin, MavenMirrors | |||||
| from maven.version import resolve_version | 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: | if plugin.version: | ||||
| return [ | return [ | ||||
| dataclasses.replace(plugin, version=version) | 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: | else: | ||||
| return [plugin] | return [plugin] | ||||