From 29622e102b52cba0711d13beb013c9c578a25df3 Mon Sep 17 00:00:00 2001 From: Sindre Stephansen Date: Tue, 1 Aug 2023 08:53:00 +0200 Subject: [PATCH] Add support for using latest or stable kotlin version --- package-list.yaml | 2 +- sync/src/main.py | 23 ++++++++++++++++++----- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/package-list.yaml b/package-list.yaml index 21c14d7..2461772 100644 --- a/package-list.yaml +++ b/package-list.yaml @@ -11,7 +11,7 @@ maven: configurations: # Specify configurations where the packages/plugins depend on a specific kotlin and/or gradle version. - - kotlin-version: ["1.8.20", "1.7.0"] + - kotlin-version: ["latest", "1.8.20", "1.7.0"] gradle-version: ["8.2.1", "7.6.2"] plugins: diff --git a/sync/src/main.py b/sync/src/main.py index f240e1f..926269e 100644 --- a/sync/src/main.py +++ b/sync/src/main.py @@ -4,15 +4,25 @@ import dataclasses import logging from pathlib import Path -from config import parse_config, Configuration, MavenMirrors +from config import parse_config, Configuration, MavenMirrors, Package from gradle import create_gradle from maven import get_effective_packages from maven.plugins import get_effective_plugins +from maven.version import resolve_version logger = logging.getLogger(__name__) -async def resolve_kotlin(configuration: Configuration, mirrors: MavenMirrors): +async def resolve_kotlin(configuration: Configuration, mirrors: MavenMirrors) -> list[Configuration]: + kotlin_versions = await resolve_version( + Package('org.jetbrains.kotlin', 'kotlin-stdlib', configuration.kotlin_version), + mirrors.package_mirrors, + ) + + if not kotlin_versions: + logger.error(f'Could not find kotlin version matching "{configuration.kotlin_version}"') + return [] + packages = [ resolved for package in configuration.packages @@ -25,7 +35,10 @@ async def resolve_kotlin(configuration: Configuration, mirrors: MavenMirrors): for resolved in await get_effective_plugins(plugin, mirrors) ] - return dataclasses.replace(configuration, packages=packages, plugins=plugins) + return [ + dataclasses.replace(configuration, kotlin_version=kotlin_version, packages=packages, plugins=plugins) + for kotlin_version in kotlin_versions + ] async def main(package_list: Path, output_dir: Path, gradle_repo: str) -> None: @@ -43,8 +56,8 @@ async def main(package_list: Path, output_dir: Path, gradle_repo: str) -> None: for i, configuration in enumerate(config.configurations): logger.info(f'Resolving configuration kotlin={configuration.kotlin_version}, gradle={configuration.gradle_version}') try: - configuration = await resolve_kotlin(configuration, config.mirrors) - create_gradle(configuration, gradle_repo, output_dir) + for c in await resolve_kotlin(configuration, config.mirrors): + create_gradle(c, gradle_repo, output_dir) except: logger.exception(f'Error resolving kotlin version {configuration.kotlin_version}')