From 0e73c1d6df94dcd124d884865eb6ccf0f268a7e9 Mon Sep 17 00:00:00 2001 From: Sindre Stephansen Date: Mon, 31 Jul 2023 16:15:06 +0200 Subject: [PATCH] Allow configurations to have multiple kotlin and gradle versions --- package-list.yaml | 4 +-- sync/src/config/parse.py | 56 +++++++++++++++++++++++++++------------- 2 files changed, 40 insertions(+), 20 deletions(-) diff --git a/package-list.yaml b/package-list.yaml index c97a8cf..f95c5c2 100644 --- a/package-list.yaml +++ b/package-list.yaml @@ -9,8 +9,8 @@ maven: configurations: # Specify configurations where the packages/plugins depend on a specific kotlin and/or gradle version. - - kotlin-version: "1.8.20" - gradle-version: "7.6.2" + - kotlin-version: ["1.8.20", "1.7.0"] + gradle-version: ["8.2.1", "7.6.2"] plugins: "`kotlin-dsl`": null diff --git a/sync/src/config/parse.py b/sync/src/config/parse.py index a985fc0..065596b 100644 --- a/sync/src/config/parse.py +++ b/sync/src/config/parse.py @@ -34,30 +34,27 @@ def parse_config(path: Path) -> Optional[Config]: configurations: list[Configuration] = [] for i, section in enumerate(data.get('configurations')): - if (kotlin_version := section.get('kotlin-version')) is None: + if (kotlin_versions := section.get('kotlin-version')) is None: error.append(f"Configuration {i} is missing 'kotlin-version'") - gradle_version = section.get('gradle-version') + if not isinstance(kotlin_versions, list): + kotlin_versions = [kotlin_versions] + + gradle_versions = section.get('gradle-version') + if not isinstance(gradle_versions, list): + gradle_versions = [gradle_versions] plugins = handle_plugins(section.get('plugins', {})) packages = handle_packages(section.get('packages', {})) - configurations.append(Configuration( - name=f'{kotlin_version}-packages', - kotlin_version=kotlin_version, - gradle_version=gradle_version, - plugins=[], - packages=packages - )) - - for j, plugin in enumerate(plugins): - configurations.append(Configuration( - name=f'{kotlin_version}-plugins-{j}', - kotlin_version=kotlin_version, - gradle_version=gradle_version, - plugins=[plugin], - packages=[] - )) + configurations.extend( + [ + c + for kotlin in kotlin_versions + for gradle in gradle_versions + for c in generate_configurations(kotlin, gradle, plugins, packages) + ] + ) if error: for msg in error: @@ -69,3 +66,26 @@ def parse_config(path: Path) -> Optional[Config]: configurations, data.get('maven', {}).get('mirrors', []), ) + + +def generate_configurations(kotlin: str, gradle: str, plugins: list[Plugin], packages: list[Package]) -> list[Configuration]: + configurations = [] + + configurations.append(Configuration( + name=f'{kotlin}-packages', + kotlin_version=kotlin, + gradle_version=gradle, + plugins=[], + packages=packages + )) + + for j, plugin in enumerate(plugins): + configurations.append(Configuration( + name=f'{kotlin}-plugins-{j}', + kotlin_version=kotlin, + gradle_version=gradle, + plugins=[plugin], + packages=[] + )) + + return configurations