From 7a60becd91dc6d4b9efc1a049f04cb3f5d84ca20 Mon Sep 17 00:00:00 2001 From: Sindre Stephansen Date: Mon, 31 Jul 2023 15:48:28 +0200 Subject: [PATCH] Add support for core gradle plugins --- package-list.yaml | 1 + sync/src/config.py | 36 ++++++++++++++++++++++-------------- sync/src/gradle.py | 2 +- sync/src/maven/plugins.py | 11 +++++++---- 4 files changed, 31 insertions(+), 19 deletions(-) diff --git a/package-list.yaml b/package-list.yaml index 8065cdf..c97a8cf 100644 --- a/package-list.yaml +++ b/package-list.yaml @@ -13,6 +13,7 @@ configurations: gradle-version: "7.6.2" plugins: + "`kotlin-dsl`": null com.expediagroup.graphql: ["stable"] - kotlin-version: "1.8.0" diff --git a/sync/src/config.py b/sync/src/config.py index 645265d..0b5b6c1 100644 --- a/sync/src/config.py +++ b/sync/src/config.py @@ -24,12 +24,19 @@ class Package: @dataclass class Plugin: id: str - version: str + version: Optional[str] + + @property + def gradle_spec(self): + return f'id("{self.id}") version "{self.version}"' if self.version else self.id @property def package(self): return Package(self.id, self.id + '.gradle.plugin', self.version) + def __str__(self): + return f'{self.id}:{self.version}' if self.version else self.id + def __hash__(self): return hash((self.id, self.version)) @@ -94,16 +101,18 @@ def handle_packages(section) -> list[Package]: return result -def handle_plugins(section) -> dict[str, list[str]]: - result = {} +def handle_plugins(section: dict[str, str | list[str] | None]) -> list[Plugin]: + result = [] for entry in section: versions = section[entry] if isinstance(versions, str): - result[entry] = [versions] + result.append(Plugin(entry, versions)) elif isinstance(versions, list): - result[entry] = versions + result.extend([Plugin(entry, v) for v in versions]) + elif versions is None: + result.append(Plugin(entry, None)) else: logger.warning(f'Invalid plugin version "{versions}" for {entry}') @@ -134,15 +143,14 @@ def parse_config(path: Path) -> Optional[Config]: packages=packages )) - for plugin_id, plugin_versions in plugins.items(): - for plugin_version in plugin_versions: - configurations.append(Configuration( - name=f'version-plugins-{plugin_id}', - kotlin_version=kotlin_version, - gradle_version=gradle_version, - plugins=[Plugin(plugin_id, plugin_version)], - 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=[] + )) if error: for msg in error: diff --git a/sync/src/gradle.py b/sync/src/gradle.py index f4c110f..7a5bf9c 100644 --- a/sync/src/gradle.py +++ b/sync/src/gradle.py @@ -23,7 +23,7 @@ def create_gradle_build(kotlin_version: str, plugins: Iterable[Plugin], packages plugins { """ + f'kotlin("jvm") version "{kotlin_version}"' + """ - """ + '\n '.join(f'id("{p.id}") version "{p.version}"' for p in plugins) + """ + """ + '\n '.join(p.gradle_spec for p in plugins) + """ } """ + (""" repositories { diff --git a/sync/src/maven/plugins.py b/sync/src/maven/plugins.py index 7f1b7fc..af0fb4a 100644 --- a/sync/src/maven/plugins.py +++ b/sync/src/maven/plugins.py @@ -6,7 +6,10 @@ from maven.version import resolve_version async def get_effective_plugins(plugin: Plugin, mirrors: Iterable[str]) -> list[Plugin]: - return [ - dataclasses.replace(plugin, version=version) - for version in await resolve_version(plugin.package, mirrors) - ] + if plugin.version: + return [ + dataclasses.replace(plugin, version=version) + for version in await resolve_version(plugin.package, mirrors) + ] + else: + return [plugin]