Browse Source

Allow configurations to have multiple kotlin and gradle versions

main
Sindre Stephansen 2 years ago
parent
commit
0e73c1d6df
Signed by: sindre <sindre@sindrestephansen.com> GPG Key ID: B06FC67D17A46ADE
2 changed files with 40 additions and 20 deletions
  1. +2
    -2
      package-list.yaml
  2. +38
    -18
      sync/src/config/parse.py

+ 2
- 2
package-list.yaml View File

@@ -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


+ 38
- 18
sync/src/config/parse.py View File

@@ -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

Loading…
Cancel
Save