Support downloading additional artifacts (sources, javadoc, etc.)

This commit is contained in:
Tad Fisher
2025-01-17 11:44:31 -08:00
committed by Tad Fisher
parent f8c0afcd29
commit 96a444c22b
30 changed files with 1985 additions and 366 deletions

View File

@@ -165,11 +165,14 @@ Gradle installation:
--gradle-wrapper=<value> Gradle wrapper version --gradle-wrapper=<value> Gradle wrapper version
Options: Options:
-t, --task=<task> Gradle tasks to run -t, --task=<task> Gradle tasks to run (default: [resolveAllArtifacts])
-a, --artifacts=<artifacts> Comma-separated list of artifacts to download (artifacts:
doxygen,javadoc,samples,sources,usermanual) (default: [])
-p, --project=<path> Path to the project root (default: Current directory) -p, --project=<path> Path to the project root (default: Current directory)
-o, --out-dir=<dir> Path to write generated files (default: <project>) -o, --out-dir=<dir> Path to write generated files (default: <project>)
-l, --lock-file=<filename> Name of the generated lock file (default: gradle.lock) -l, --lock-file=<filename> Name of the generated lock file (default: gradle.lock)
-j, --gradle-jdk=<dir> JDK home to use for launching Gradle (e.g. `nix eval --raw nixpkgs#openjdk.home`) -j, --gradle-jdk=<dir> JDK home to use for launching Gradle (e.g. `nix eval --raw
nixpkgs#openjdk.home`)
--log=(debug|info|warn|error) Print messages with this priority or higher (default: info) --log=(debug|info|warn|error) Print messages with this priority or higher (default: info)
--dump-events Dump Gradle event logs to the output directory --dump-events Dump Gradle event logs to the output directory
--stacktrace Print a stack trace on error --stacktrace Print a stack trace on error

View File

@@ -81,6 +81,7 @@ tasks {
// TODO Find out why this fails the configuration cache // TODO Find out why this fails the configuration cache
test { test {
notCompatibleWithConfigurationCache("contains a Task reference") notCompatibleWithConfigurationCache("contains a Task reference")
dependsOn(installDist)
val shareDir = layout.dir(installDist.map { it.destinationDir.resolve("share") }) val shareDir = layout.dir(installDist.map { it.destinationDir.resolve("share") })
doFirst { doFirst {
if (updateGolden.isPresent) { if (updateGolden.isPresent) {

View File

@@ -6,6 +6,8 @@ initscript {
classpath files("plugin-gradle81.jar") classpath files("plugin-gradle81.jar")
} else if (GradleVersion.current() >= GradleVersion.version("8.0")) { } else if (GradleVersion.current() >= GradleVersion.version("8.0")) {
classpath files("plugin-gradle80.jar") classpath files("plugin-gradle80.jar")
} else if (GradleVersion.current() >= GradleVersion.version("7.5")) {
classpath files("plugin-gradle75.jar")
} else { } else {
classpath files("plugin-base.jar") classpath files("plugin-base.jar")
} }

View File

@@ -6,6 +6,7 @@ import org.gradle.tooling.GradleConnector
import org.gradle.tooling.ProjectConnection import org.gradle.tooling.ProjectConnection
import org.gradle.tooling.ResultHandler import org.gradle.tooling.ResultHandler
import org.gradle.tooling.model.gradle.GradleBuild import org.gradle.tooling.model.gradle.GradleBuild
import org.nixos.gradle2nix.model.ARTIFACTS_PROPERTY
import org.nixos.gradle2nix.model.DependencySet import org.nixos.gradle2nix.model.DependencySet
import java.io.File import java.io.File
import kotlin.coroutines.resume import kotlin.coroutines.resume
@@ -50,14 +51,34 @@ suspend fun ProjectConnection.buildModel(): GradleBuild =
} }
suspend fun ProjectConnection.build( suspend fun ProjectConnection.build(
name: String,
config: Config, config: Config,
tasks: List<String>, tasks: List<String> = config.tasks,
): DependencySet = ): DependencySet =
suspendCancellableCoroutine { continuation -> suspendCancellableCoroutine { continuation ->
val cancellationTokenSource = GradleConnector.newCancellationTokenSource() val cancellationTokenSource = GradleConnector.newCancellationTokenSource()
continuation.invokeOnCancellation { cancellationTokenSource.cancel() } continuation.invokeOnCancellation { cancellationTokenSource.cancel() }
val systemProperties =
buildMap {
if (config.dumpEvents) {
put(
"org.gradle.internal.operations.trace",
config.outDir
.toPath()
.resolve(name)
.absolutePathString(),
)
}
if (config.artifacts.isNotEmpty()) {
put(
ARTIFACTS_PROPERTY,
config.artifacts.joinToString(",") { it.name.lowercase() },
)
}
}
action { controller -> controller.getModel(DependencySet::class.java) } action { controller -> controller.getModel(DependencySet::class.java) }
.withCancellationToken(cancellationTokenSource.token()) .withCancellationToken(cancellationTokenSource.token())
.forTasks(*tasks.toTypedArray()) .forTasks(*tasks.toTypedArray())
@@ -75,16 +96,8 @@ suspend fun ProjectConnection.build(
setStandardOutput(System.err) setStandardOutput(System.err)
setStandardError(System.err) setStandardError(System.err)
} }
if (config.dumpEvents) { if (systemProperties.isNotEmpty()) {
withSystemProperties( withSystemProperties(systemProperties)
mapOf(
"org.gradle.internal.operations.trace" to
config.outDir
.toPath()
.resolve("debug")
.absolutePathString(),
),
)
} }
}.run( }.run(
object : ResultHandler<DependencySet> { object : ResultHandler<DependencySet> {

View File

@@ -12,8 +12,8 @@ import com.github.ajalt.clikt.parameters.options.convert
import com.github.ajalt.clikt.parameters.options.default import com.github.ajalt.clikt.parameters.options.default
import com.github.ajalt.clikt.parameters.options.defaultLazy import com.github.ajalt.clikt.parameters.options.defaultLazy
import com.github.ajalt.clikt.parameters.options.flag import com.github.ajalt.clikt.parameters.options.flag
import com.github.ajalt.clikt.parameters.options.multiple
import com.github.ajalt.clikt.parameters.options.option import com.github.ajalt.clikt.parameters.options.option
import com.github.ajalt.clikt.parameters.options.split
import com.github.ajalt.clikt.parameters.types.enum import com.github.ajalt.clikt.parameters.types.enum
import com.github.ajalt.clikt.parameters.types.file import com.github.ajalt.clikt.parameters.types.file
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
@@ -21,6 +21,7 @@ import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.json.Json import kotlinx.serialization.json.Json
import kotlinx.serialization.json.encodeToStream import kotlinx.serialization.json.encodeToStream
import org.gradle.tooling.model.gradle.GradleBuild import org.gradle.tooling.model.gradle.GradleBuild
import org.nixos.gradle2nix.model.ArtifactType
import org.nixos.gradle2nix.model.DependencySet import org.nixos.gradle2nix.model.DependencySet
import org.nixos.gradle2nix.model.RESOLVE_ALL_TASK import org.nixos.gradle2nix.model.RESOLVE_ALL_TASK
import java.io.File import java.io.File
@@ -35,6 +36,7 @@ data class Config(
val outDir: File, val outDir: File,
val projectDir: File, val projectDir: File,
val tasks: List<String>, val tasks: List<String>,
val artifacts: List<ArtifactType>,
val logger: Logger, val logger: Logger,
val dumpEvents: Boolean, val dumpEvents: Boolean,
) )
@@ -79,7 +81,15 @@ class Gradle2Nix :
"-t", "-t",
metavar = "TASK", metavar = "TASK",
help = "Gradle tasks to run", help = "Gradle tasks to run",
).multiple(default = listOf(RESOLVE_ALL_TASK)) ).split(",").default(listOf(RESOLVE_ALL_TASK))
private val artifacts: List<ArtifactType> by option(
"--artifacts",
"-a",
metavar = "ARTIFACTS",
help = "Comma-separated list of artifacts to download",
helpTags = mapOf("artifacts" to "doxygen,javadoc,samples,sources,usermanual"),
).enum<ArtifactType>(key = { it.name.lowercase() }).split(",").default(emptyList())
private val projectDir: File by option( private val projectDir: File by option(
"--project", "--project",
@@ -184,6 +194,7 @@ class Gradle2Nix :
outDir ?: projectDir, outDir ?: projectDir,
projectDir, projectDir,
tasks, tasks,
artifacts,
logger, logger,
dumpEvents, dumpEvents,
) )
@@ -206,12 +217,20 @@ class Gradle2Nix :
val dependencySets = mutableListOf<DependencySet>() val dependencySets = mutableListOf<DependencySet>()
connect(config).use { connection -> connect(config).use { connection ->
dependencySets.add(runBlocking { connection.build(config, config.tasks) }) dependencySets.add(runBlocking { connection.build("project", config) })
} }
for (buildSrc in buildSrcs) { for (buildSrc in buildSrcs) {
connect(config, buildSrc).use { connection -> connect(config, buildSrc).use { connection ->
dependencySets.add(runBlocking { connection.build(config, listOf(RESOLVE_ALL_TASK)) }) dependencySets.add(
runBlocking {
connection.build(
buildSrc.toRelativeString(projectDir.absoluteFile).replace('/', '_'),
config,
listOf(RESOLVE_ALL_TASK),
)
},
)
} }
} }

View File

@@ -7,6 +7,9 @@ class GoldenTest :
FunSpec({ FunSpec({
install(MavenRepo) install(MavenRepo)
context("artifacts") {
golden("artifacts/sources-javadoc", "-a", "sources,javadoc")
}
context("basic") { context("basic") {
golden("basic/basic-java-project") golden("basic/basic-java-project")
golden("basic/basic-kotlin-project") golden("basic/basic-kotlin-project")

View File

@@ -11,9 +11,8 @@ import io.kotest.core.spec.Spec
import io.kotest.core.test.NestedTest import io.kotest.core.test.NestedTest
import io.kotest.core.test.TestScope import io.kotest.core.test.TestScope
import io.kotest.core.test.TestType import io.kotest.core.test.TestType
import io.kotest.matchers.equals.beEqual
import io.kotest.matchers.file.shouldBeAFile import io.kotest.matchers.file.shouldBeAFile
import io.kotest.matchers.should import io.kotest.matchers.shouldBe
import io.ktor.http.ContentType import io.ktor.http.ContentType
import io.ktor.http.Url import io.ktor.http.Url
import io.ktor.server.engine.embeddedServer import io.ktor.server.engine.embeddedServer
@@ -88,6 +87,7 @@ suspend fun TestScope.fixture(
Files.createFile(tempDir.resolve("settings.gradle").toPath()) Files.createFile(tempDir.resolve("settings.gradle").toPath())
} }
app.main( app.main(
args.toList() +
listOf( listOf(
"-p", "-p",
tempDir.toString(), tempDir.toString(),
@@ -98,7 +98,7 @@ suspend fun TestScope.fixture(
"--", "--",
"-Dorg.nixos.gradle2nix.m2=$m2", "-Dorg.nixos.gradle2nix.m2=$m2",
"--info", "--info",
) + args, ),
) )
val file = tempDir.resolve(app.lockFile) val file = tempDir.resolve(app.lockFile)
file.shouldBeAFile() file.shouldBeAFile()
@@ -137,7 +137,7 @@ suspend fun TestScope.golden(
} catch (e: SerializationException) { } catch (e: SerializationException) {
fail("Failed to load golden data from '$filename'. Run with --update-golden to regenerate.") fail("Failed to load golden data from '$filename'. Run with --update-golden to regenerate.")
} }
json.encodeToString(env) should beEqual(goldenData) json.encodeToString(env) shouldBe goldenData
} }
} }
} }
@@ -197,7 +197,7 @@ object MavenRepo : MountableExtension<MavenRepo.Config, NettyApplicationEngine>,
} }
} }
coroutineScope.launch { s.start(wait = true) } coroutineScope.launch { s.start(wait = true) }
s s.engine
} catch (e: Throwable) { } catch (e: Throwable) {
if (config.port == null && attempts > 0) tryStart(attempts - 1) else throw e if (config.port == null && attempts > 0) tryStart(attempts - 1) else throw e
} }

View File

@@ -37,12 +37,14 @@ tasks {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE duplicatesStrategy = DuplicatesStrategy.EXCLUDE
isPreserveFileTimestamps = false isPreserveFileTimestamps = false
isReproducibleFileOrder = true isReproducibleFileOrder = true
val mode644 = 0b110100100 filePermissions { unix("644") }
val mode755 = 0b111101101 dirPermissions { unix("755") }
fileMode = mode644 filesMatching("**/bin/*") {
dirMode = mode755 filePermissions { unix("755") }
filesMatching("**/bin/*") { mode = mode755 } }
filesMatching("**/bin/*.bat") { mode = mode644 } filesMatching("**/bin/*.bat") {
filePermissions { unix("644") }
}
relocate("kotlinx", "${project.group}.shadow.kotlinx") relocate("kotlinx", "${project.group}.shadow.kotlinx")
relocate("org.intellij", "${project.group}.shadow.intellij") relocate("org.intellij", "${project.group}.shadow.intellij")

View File

@@ -0,0 +1,20 @@
{
"org.jetbrains:dummy:0.1.2": {
"dummy-0.1.2-javadoc.jar": {
"url": "http://0.0.0.0:8989/m2/org/jetbrains/dummy/0.1.2/dummy-0.1.2-javadoc.jar",
"hash": "sha256-VKSq9XAfCAL64HOpAw9Cz3u1KxCJG/plFoXlYGpsT38="
},
"dummy-0.1.2-sources.jar": {
"url": "http://0.0.0.0:8989/m2/org/jetbrains/dummy/0.1.2/dummy-0.1.2-sources.jar",
"hash": "sha256-P6wF/AUXB4XcW/Yd+E2MsEYQuaLrlAjU9ZCFwl5LpV4="
},
"dummy-0.1.2.jar": {
"url": "http://0.0.0.0:8989/m2/org/jetbrains/dummy/0.1.2/dummy-0.1.2.jar",
"hash": "sha256-cNf6E8g94h1RzuCgeERYjfMYK/FtuxULAmgZ2NbrZHE="
},
"dummy-0.1.2.pom": {
"url": "http://0.0.0.0:8989/m2/org/jetbrains/dummy/0.1.2/dummy-0.1.2.pom",
"hash": "sha256-yAJfpJPhPhaxEwVdOL3zzK0JopTGuV3djT44MWsz1z4="
}
}
}

View File

@@ -41,24 +41,24 @@
"hash": "sha256-OFbj/NFpUC1fEv4kUmBOv2x8Al8VZWv6VY6pntKdc+o=" "hash": "sha256-OFbj/NFpUC1fEv4kUmBOv2x8Al8VZWv6VY6pntKdc+o="
} }
}, },
"org.gradle.kotlin:gradle-kotlin-dsl-plugins:4.3.0": { "org.gradle.kotlin:gradle-kotlin-dsl-plugins:4.5.0": {
"gradle-kotlin-dsl-plugins-4.3.0.jar": { "gradle-kotlin-dsl-plugins-4.5.0.jar": {
"url": "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.3.0/gradle-kotlin-dsl-plugins-4.3.0.jar", "url": "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.5.0/gradle-kotlin-dsl-plugins-4.5.0.jar",
"hash": "sha256-+IsyeBRxXRfiD4to/wCbmrGo+8GjyRLDO4TfucEVn78=" "hash": "sha256-Ga92VnnptJN0uyg6xE81O4EJrZz+ZmjO1tmmZFVA4vo="
}, },
"gradle-kotlin-dsl-plugins-4.3.0.module": { "gradle-kotlin-dsl-plugins-4.5.0.module": {
"url": "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.3.0/gradle-kotlin-dsl-plugins-4.3.0.module", "url": "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.5.0/gradle-kotlin-dsl-plugins-4.5.0.module",
"hash": "sha256-wDF/LfYjmTSfi1NHpsZme9yjHMt1meBsKG/IOPxM7c0=" "hash": "sha256-G2X3c4EI7gxE5qUNjMJUpPHFpzmAtuh7D14uxMt6qDY="
}, },
"gradle-kotlin-dsl-plugins-4.3.0.pom": { "gradle-kotlin-dsl-plugins-4.5.0.pom": {
"url": "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.3.0/gradle-kotlin-dsl-plugins-4.3.0.pom", "url": "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/4.5.0/gradle-kotlin-dsl-plugins-4.5.0.pom",
"hash": "sha256-d1G9LyTDRdGbRhGy5+1NZfT1YIA2iuNqpyT5X63VbDw=" "hash": "sha256-D4Du3/O101e+rs5h8enK1Le/b4EVrWRIfYp2x/GwDBw="
} }
}, },
"org.gradle.kotlin.kotlin-dsl:org.gradle.kotlin.kotlin-dsl.gradle.plugin:4.3.0": { "org.gradle.kotlin.kotlin-dsl:org.gradle.kotlin.kotlin-dsl.gradle.plugin:4.5.0": {
"org.gradle.kotlin.kotlin-dsl.gradle.plugin-4.3.0.pom": { "org.gradle.kotlin.kotlin-dsl.gradle.plugin-4.5.0.pom": {
"url": "https://plugins.gradle.org/m2/org/gradle/kotlin/kotlin-dsl/org.gradle.kotlin.kotlin-dsl.gradle.plugin/4.3.0/org.gradle.kotlin.kotlin-dsl.gradle.plugin-4.3.0.pom", "url": "https://plugins.gradle.org/m2/org/gradle/kotlin/kotlin-dsl/org.gradle.kotlin.kotlin-dsl.gradle.plugin/4.5.0/org.gradle.kotlin.kotlin-dsl.gradle.plugin-4.5.0.pom",
"hash": "sha256-hgR9KoSpaXsVkXDj1rLL9Cpv5UCQTYdZzJ8JUsmUnXw=" "hash": "sha256-WPAIDJzwTgVq1U0Ok91KI0KGXnihMR6TVAVk90wgDjc="
} }
}, },
"org.jetbrains:annotations:13.0": { "org.jetbrains:annotations:13.0": {
@@ -81,248 +81,248 @@
"hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k=" "hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k="
} }
}, },
"org.jetbrains.kotlin:kotlin-android-extensions:1.9.22": { "org.jetbrains.kotlin:kotlin-android-extensions:1.9.24": {
"kotlin-android-extensions-1.9.22.jar": { "kotlin-android-extensions-1.9.24.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.22/kotlin-android-extensions-1.9.22.jar", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.24/kotlin-android-extensions-1.9.24.jar",
"hash": "sha256-Hl6IFkKpnduPbRPmmVoIwZK8OEGHOWZj2ER8CB2H4k8=" "hash": "sha256-4z5UUlSR0ZgdRODKmnxTIWh91QRDPsVJZhqb5UYKEW4="
}, },
"kotlin-android-extensions-1.9.22.pom": { "kotlin-android-extensions-1.9.24.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.22/kotlin-android-extensions-1.9.22.pom", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.9.24/kotlin-android-extensions-1.9.24.pom",
"hash": "sha256-lEt8+zPgpvtoRVkEjwKMuWMmyTKiRdXLAhQ7zSwDEVk=" "hash": "sha256-6QmjYHLn/lbQULgKdXEDwdP4dz+2wb0GcrxKr7hRCEs="
} }
}, },
"org.jetbrains.kotlin:kotlin-assignment:1.9.22": { "org.jetbrains.kotlin:kotlin-assignment:1.9.24": {
"kotlin-assignment-1.9.22-gradle82.jar": { "kotlin-assignment-1.9.24-gradle82.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/1.9.22/kotlin-assignment-1.9.22-gradle82.jar", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/1.9.24/kotlin-assignment-1.9.24-gradle82.jar",
"hash": "sha256-SbgHX6DiGLoRuhim9yUE38XwOZQovs8Ta9yHHceBgMU=" "hash": "sha256-897/fRYVZp9m+jeTnLZJBOex+LBgNReZDH8IEs40oNs="
}, },
"kotlin-assignment-1.9.22.module": { "kotlin-assignment-1.9.24.module": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/1.9.22/kotlin-assignment-1.9.22.module", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/1.9.24/kotlin-assignment-1.9.24.module",
"hash": "sha256-bxIe+E4ozzMG/eTDHVXC2D14RPJLDnslZfh7Apn7sx0=" "hash": "sha256-qa+tevGbZXAv892pBdPJt/mem9rqadY1+s2f3mi7VQU="
}, },
"kotlin-assignment-1.9.22.pom": { "kotlin-assignment-1.9.24.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/1.9.22/kotlin-assignment-1.9.22.pom", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/1.9.24/kotlin-assignment-1.9.24.pom",
"hash": "sha256-9kQYoM3bm9hQ96/CasjyPon7ptlgSNqnNZVWJ5AgbwA=" "hash": "sha256-U5l+9NCcNhmm32TaPftTdngenYSMck+DLIDPCoCjLA8="
} }
}, },
"org.jetbrains.kotlin:kotlin-assignment-compiler-plugin-embeddable:1.9.22": { "org.jetbrains.kotlin:kotlin-assignment-compiler-plugin-embeddable:1.9.24": {
"kotlin-assignment-compiler-plugin-embeddable-1.9.22.jar": { "kotlin-assignment-compiler-plugin-embeddable-1.9.24.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment-compiler-plugin-embeddable/1.9.22/kotlin-assignment-compiler-plugin-embeddable-1.9.22.jar", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment-compiler-plugin-embeddable/1.9.24/kotlin-assignment-compiler-plugin-embeddable-1.9.24.jar",
"hash": "sha256-KmHdIZ/tvlMYo7HiPA9zm0XtG1sksLZzdRm3hF6Alfg=" "hash": "sha256-AoVjJSRkxIYBkX8rbFTRuOQhzcfya/L5zzCIlcgSSgY="
}, },
"kotlin-assignment-compiler-plugin-embeddable-1.9.22.pom": { "kotlin-assignment-compiler-plugin-embeddable-1.9.24.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment-compiler-plugin-embeddable/1.9.22/kotlin-assignment-compiler-plugin-embeddable-1.9.22.pom", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment-compiler-plugin-embeddable/1.9.24/kotlin-assignment-compiler-plugin-embeddable-1.9.24.pom",
"hash": "sha256-nbJr6D8/Y8Uf972pHjpqQNTDTaAj5ilsAQW7SqZvzJI=" "hash": "sha256-Hzfc9EhcI3qtLk70O40RQJleMTKduiTJ9qa3uEBrg9Q="
} }
}, },
"org.jetbrains.kotlin:kotlin-build-common:1.9.22": { "org.jetbrains.kotlin:kotlin-build-common:1.9.24": {
"kotlin-build-common-1.9.22.jar": { "kotlin-build-common-1.9.24.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.9.22/kotlin-build-common-1.9.22.jar", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.9.24/kotlin-build-common-1.9.24.jar",
"hash": "sha256-U8PcxTA/WQPmJgrqc+zMaTD5o276KhHNO9On5V32OWY=" "hash": "sha256-+RqOaTfik7FEv6F0DHB3xa12EdtI9CnKMcCm2yduaUo="
}, },
"kotlin-build-common-1.9.22.pom": { "kotlin-build-common-1.9.24.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.9.22/kotlin-build-common-1.9.22.pom", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.9.24/kotlin-build-common-1.9.24.pom",
"hash": "sha256-KXxfSYoHdIPvic06cQzSt/LlrjgPOjrt+5xBvGI7E0A=" "hash": "sha256-iNt6ER1bfbV+4gKFEX2mNz3NJQQxqd58h8ZCJRYL0RI="
} }
}, },
"org.jetbrains.kotlin:kotlin-build-tools-api:1.9.22": { "org.jetbrains.kotlin:kotlin-build-tools-api:1.9.24": {
"kotlin-build-tools-api-1.9.22.jar": { "kotlin-build-tools-api-1.9.24.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.22/kotlin-build-tools-api-1.9.22.jar", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.24/kotlin-build-tools-api-1.9.24.jar",
"hash": "sha256-3UnLfij08zgvUlDPsFyGT9XwqW0yZbspPHezCtzJP/Y=" "hash": "sha256-ZUX99qL/t4jN3O3KymMiOdx+XmHD90SCNzXjse2cG1Q="
}, },
"kotlin-build-tools-api-1.9.22.pom": { "kotlin-build-tools-api-1.9.24.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.22/kotlin-build-tools-api-1.9.22.pom", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/1.9.24/kotlin-build-tools-api-1.9.24.pom",
"hash": "sha256-DFZLu4fcXs32Q005buob886Xar8IgYCN0Wb6SbBGSfs=" "hash": "sha256-efIYZmDsHYeQhu4jEEeY2M1PthcsJ5xeVuAsqeVbxHU="
} }
}, },
"org.jetbrains.kotlin:kotlin-build-tools-impl:1.9.22": { "org.jetbrains.kotlin:kotlin-build-tools-impl:1.9.24": {
"kotlin-build-tools-impl-1.9.22.jar": { "kotlin-build-tools-impl-1.9.24.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-impl/1.9.22/kotlin-build-tools-impl-1.9.22.jar", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-impl/1.9.24/kotlin-build-tools-impl-1.9.24.jar",
"hash": "sha256-G0jW3gQqUl9jtVdROuEmbWmTSCJbAT+UDjLGPeJolCg=" "hash": "sha256-VPyCvEOOGGoMEGH55uYZEQuozUnFH6GOcFb726IpFhc="
}, },
"kotlin-build-tools-impl-1.9.22.pom": { "kotlin-build-tools-impl-1.9.24.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-impl/1.9.22/kotlin-build-tools-impl-1.9.22.pom", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-impl/1.9.24/kotlin-build-tools-impl-1.9.24.pom",
"hash": "sha256-tWM/E0m+lcdHRuHimiqm51LoneGrmmUjSS85j6aVWN0=" "hash": "sha256-WI+dA6B9qcDw3JZu6OWqjBEhsUf+1MdxsdwSTMnLONc="
} }
}, },
"org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.22": { "org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.24": {
"kotlin-compiler-embeddable-1.9.22.jar": { "kotlin-compiler-embeddable-1.9.24.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.22/kotlin-compiler-embeddable-1.9.22.jar", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.24/kotlin-compiler-embeddable-1.9.24.jar",
"hash": "sha256-K/6t7lmrGYjDNtvW5l2ZH3Zq4d2Gg/Km3tX6oCefDKA=" "hash": "sha256-5x/xnmsUGrhakyj9AQlBUxowJUMCa9QkTJWtwgjVAfY="
}, },
"kotlin-compiler-embeddable-1.9.22.pom": { "kotlin-compiler-embeddable-1.9.24.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.22/kotlin-compiler-embeddable-1.9.22.pom", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.24/kotlin-compiler-embeddable-1.9.24.pom",
"hash": "sha256-s9o0u29ClqzzoPRDRm8FBsbJnaXNliTW4LdFsiKHhOs=" "hash": "sha256-1w0fiFkkQ/R1eVFUVqTWwxBRztoK0RRGkjrK/kwMldE="
} }
}, },
"org.jetbrains.kotlin:kotlin-compiler-runner:1.9.22": { "org.jetbrains.kotlin:kotlin-compiler-runner:1.9.24": {
"kotlin-compiler-runner-1.9.22.jar": { "kotlin-compiler-runner-1.9.24.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.22/kotlin-compiler-runner-1.9.22.jar", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.24/kotlin-compiler-runner-1.9.24.jar",
"hash": "sha256-c+x1u5nr/6iySiSjuFPz9mCWvEapNRrw2sk967acFes=" "hash": "sha256-g4Q5dMH/0NNmbTxkk0Hb/TB32eFAZlVKakR7laMB3S0="
}, },
"kotlin-compiler-runner-1.9.22.pom": { "kotlin-compiler-runner-1.9.24.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.22/kotlin-compiler-runner-1.9.22.pom", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.9.24/kotlin-compiler-runner-1.9.24.pom",
"hash": "sha256-pO6KZ8HW8lODjAAnKAvLgFCsDc3MrZdIlhOKaaAX6wE=" "hash": "sha256-wb508udfB+SamqaJA+DctogA0iRkBBi0hHfuQsvDWQQ="
} }
}, },
"org.jetbrains.kotlin:kotlin-daemon-client:1.9.22": { "org.jetbrains.kotlin:kotlin-daemon-client:1.9.24": {
"kotlin-daemon-client-1.9.22.jar": { "kotlin-daemon-client-1.9.24.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.22/kotlin-daemon-client-1.9.22.jar", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.24/kotlin-daemon-client-1.9.24.jar",
"hash": "sha256-XXPhgVsRZ+Sv4gjwCyp1wIC8WoEHhsqtuOFHh1k6k7k=" "hash": "sha256-WIqveo7Y55uL8+qLknj/Enii1ZKFpF4Jjxz8v7Dc080="
}, },
"kotlin-daemon-client-1.9.22.pom": { "kotlin-daemon-client-1.9.24.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.22/kotlin-daemon-client-1.9.22.pom", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.9.24/kotlin-daemon-client-1.9.24.pom",
"hash": "sha256-YsRKZZ2lXbb7El4pKbmNUEow4fSvgU4I5JIUJqpST4o=" "hash": "sha256-tv4ne9GuP/zAzriOxmZZmHpc0TeaiXaDEvXe3x8uH+U="
} }
}, },
"org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.22": { "org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.24": {
"kotlin-daemon-embeddable-1.9.22.jar": { "kotlin-daemon-embeddable-1.9.24.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.22/kotlin-daemon-embeddable-1.9.22.jar", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.24/kotlin-daemon-embeddable-1.9.24.jar",
"hash": "sha256-kqV4ExcUR9U0Rh+hP+N9yM07f4bYPpsfe7GwvjBUH4s=" "hash": "sha256-F3vIsqQHbcznh4rQ2P0HFjrzF44/qQ7mPU9zO7R7/ck="
}, },
"kotlin-daemon-embeddable-1.9.22.pom": { "kotlin-daemon-embeddable-1.9.24.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.22/kotlin-daemon-embeddable-1.9.22.pom", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.9.24/kotlin-daemon-embeddable-1.9.24.pom",
"hash": "sha256-9uo9z2v7Og0GmER8SKa88I2Oqs+D/JX+nUGBpeXjwrE=" "hash": "sha256-T7V/xqxyCVGzIkd0s7sqVFSelj0vTf3GhB6Ex77WKrE="
} }
}, },
"org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.22": { "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.24": {
"kotlin-gradle-plugin-1.9.22-gradle82.jar": { "kotlin-gradle-plugin-1.9.24-gradle82.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.22/kotlin-gradle-plugin-1.9.22-gradle82.jar", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.24/kotlin-gradle-plugin-1.9.24-gradle82.jar",
"hash": "sha256-1OcY3V8wxrqTLZPM/FswFendPkQUOgUrh3Ao8frlQtw=" "hash": "sha256-6K7ZqBLmU2zu+z7VaPE0ZPoF8ka/0TaTONZDyDKUAks="
}, },
"kotlin-gradle-plugin-1.9.22.module": { "kotlin-gradle-plugin-1.9.24.module": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.22/kotlin-gradle-plugin-1.9.22.module", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.24/kotlin-gradle-plugin-1.9.24.module",
"hash": "sha256-pPRqwMq9jVzbaJ0tN9GdWFhPcIv59k/+TpgKL/dTS7U=" "hash": "sha256-txNZQoRrVH+xtZaGQXBGPC81+hW1qtkzX60P/YamE3s="
}, },
"kotlin-gradle-plugin-1.9.22.pom": { "kotlin-gradle-plugin-1.9.24.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.22/kotlin-gradle-plugin-1.9.22.pom", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.24/kotlin-gradle-plugin-1.9.24.pom",
"hash": "sha256-A3750tSupA9JKdglE1g+STwOBRVuDaix1/Ujurhobyc=" "hash": "sha256-ilwTAHAhV//cHyV1hDZZbsVsM3Z8GqLouOskamWs9SM="
} }
}, },
"org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:1.9.22": { "org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:1.9.24": {
"kotlin-gradle-plugin-annotations-1.9.22.jar": { "kotlin-gradle-plugin-annotations-1.9.24.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.22/kotlin-gradle-plugin-annotations-1.9.22.jar", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.24/kotlin-gradle-plugin-annotations-1.9.24.jar",
"hash": "sha256-lnaDy5jZkQFFYH+/W0VilbQ/Cq+Tsbunv2mS5zHLJOw=" "hash": "sha256-syBxajMCclSau65oGoD14P5YBLo5TQ8kW1s3f6JWNVk="
}, },
"kotlin-gradle-plugin-annotations-1.9.22.pom": { "kotlin-gradle-plugin-annotations-1.9.24.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.22/kotlin-gradle-plugin-annotations-1.9.22.pom", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/1.9.24/kotlin-gradle-plugin-annotations-1.9.24.pom",
"hash": "sha256-Y7por+B4/3D3CPnpecaTxFv+iQQfeWQbC4H2tKEm7rs=" "hash": "sha256-fHb3hHzJ5bWOGoJbbqAZV7QoHpHmzXBcFmy+afvDtYs="
} }
}, },
"org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.9.22": { "org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.9.24": {
"kotlin-gradle-plugin-api-1.9.22-gradle82.jar": { "kotlin-gradle-plugin-api-1.9.24-gradle82.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22-gradle82.jar", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.24/kotlin-gradle-plugin-api-1.9.24-gradle82.jar",
"hash": "sha256-7P9nVGBlxg4JX7k7P4i5uS7R7cN+P+u8b57TVCL6QSs=" "hash": "sha256-LV53JHoKf1klIL64gx6OPrl0m/OIhfgv+9Y8f/BRPhI="
}, },
"kotlin-gradle-plugin-api-1.9.22.jar": { "kotlin-gradle-plugin-api-1.9.24.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22.jar", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.24/kotlin-gradle-plugin-api-1.9.24.jar",
"hash": "sha256-7P9nVGBlxg4JX7k7P4i5uS7R7cN+P+u8b57TVCL6QSs=" "hash": "sha256-LV53JHoKf1klIL64gx6OPrl0m/OIhfgv+9Y8f/BRPhI="
}, },
"kotlin-gradle-plugin-api-1.9.22.module": { "kotlin-gradle-plugin-api-1.9.24.module": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22.module", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.24/kotlin-gradle-plugin-api-1.9.24.module",
"hash": "sha256-H0SJxTBPmlEqVof/zAqvCTCvydcgUdOpBfrAcANi+3s=" "hash": "sha256-kB+s0LsPLdJ9XzvJDkQvJ3OrEuHOcgnT78HlhWNsfWQ="
}, },
"kotlin-gradle-plugin-api-1.9.22.pom": { "kotlin-gradle-plugin-api-1.9.24.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.22/kotlin-gradle-plugin-api-1.9.22.pom", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.9.24/kotlin-gradle-plugin-api-1.9.24.pom",
"hash": "sha256-ZAFewaGutVCqGCjCQuIoODDFD2g2TkCDH+FYj9wEEfU=" "hash": "sha256-r9FlfZ0Vx2BxZ1InnZEdG73PjfTPXZYEUGHjCunBMX4="
} }
}, },
"org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.9.22": { "org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.9.24": {
"kotlin-gradle-plugin-idea-1.9.22.jar": { "kotlin-gradle-plugin-idea-1.9.24.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.22/kotlin-gradle-plugin-idea-1.9.22.jar", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.24/kotlin-gradle-plugin-idea-1.9.24.jar",
"hash": "sha256-jRr4djLZUUjxIqn6CuKQPBnub6t9AeAX924NLJoCLCA=" "hash": "sha256-jRr4djLZUUjxIqn6CuKQPBnub6t9AeAX924NLJoCLCA="
}, },
"kotlin-gradle-plugin-idea-1.9.22.module": { "kotlin-gradle-plugin-idea-1.9.24.module": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.22/kotlin-gradle-plugin-idea-1.9.22.module", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.24/kotlin-gradle-plugin-idea-1.9.24.module",
"hash": "sha256-z+LCbjMPaAMsAD+lJMAx5aYPzo2Jn/8uQjFBKL60QCs=" "hash": "sha256-4Jx9wdImjqtl5EGtLjgWDzGHsNjAv5zxrUyF+nUjm6Q="
}, },
"kotlin-gradle-plugin-idea-1.9.22.pom": { "kotlin-gradle-plugin-idea-1.9.24.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.22/kotlin-gradle-plugin-idea-1.9.22.pom", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.9.24/kotlin-gradle-plugin-idea-1.9.24.pom",
"hash": "sha256-3BSjKHVDun5QRs1OCVAtJ4hMqYfshwb1+xid54luOsw=" "hash": "sha256-aTnfzQ6JgI3AA25alaOPcb+EKF53bpEFIdVWJnp8sMc="
} }
}, },
"org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.9.22": { "org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.9.24": {
"kotlin-gradle-plugin-idea-proto-1.9.22.jar": { "kotlin-gradle-plugin-idea-proto-1.9.24.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.22/kotlin-gradle-plugin-idea-proto-1.9.22.jar", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.24/kotlin-gradle-plugin-idea-proto-1.9.24.jar",
"hash": "sha256-9dgu5hlmotmK364Z8k1hcwIsFUBIls3yNjQANe5owPU=" "hash": "sha256-hR4BJ+5ixRDpf4UB6Q/V6yTQ15bHCcv5SvM5R0Fre/4="
}, },
"kotlin-gradle-plugin-idea-proto-1.9.22.pom": { "kotlin-gradle-plugin-idea-proto-1.9.24.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.22/kotlin-gradle-plugin-idea-proto-1.9.22.pom", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.9.24/kotlin-gradle-plugin-idea-proto-1.9.24.pom",
"hash": "sha256-huMsqCkn2ogKHPNDpA7MIJgHXm/XInOzTVDfpUTzRjs=" "hash": "sha256-3gafD+sze0Nbc/GdKaISONBW5oegumvivczlmvqSa7Y="
} }
}, },
"org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.9.22": { "org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.9.24": {
"kotlin-gradle-plugin-model-1.9.22.jar": { "kotlin-gradle-plugin-model-1.9.24.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.22/kotlin-gradle-plugin-model-1.9.22.jar", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.24/kotlin-gradle-plugin-model-1.9.24.jar",
"hash": "sha256-UQj61b4UmCXs46ABA8PCHPGv6VS7ZLhweJVyk511OMs=" "hash": "sha256-VbEQENUcmcMXybbvXpVJrUhXEhjN5hvYRIGMti0aPxk="
}, },
"kotlin-gradle-plugin-model-1.9.22.module": { "kotlin-gradle-plugin-model-1.9.24.module": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.22/kotlin-gradle-plugin-model-1.9.22.module", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.24/kotlin-gradle-plugin-model-1.9.24.module",
"hash": "sha256-L/MBPfK6epteiwBOhIF1DI0PqVOtAHoZbYXSY2cdvq4=" "hash": "sha256-cQXlShB2dqp9KAzFqUl0QX4qO1cD1w3WH8yr6wccSug="
}, },
"kotlin-gradle-plugin-model-1.9.22.pom": { "kotlin-gradle-plugin-model-1.9.24.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.22/kotlin-gradle-plugin-model-1.9.22.pom", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.9.24/kotlin-gradle-plugin-model-1.9.24.pom",
"hash": "sha256-gfUmlHml2X7oeSpITIMr495DgggSZxlhUAHKyI5C9qg=" "hash": "sha256-rquP4uqM+lwumZi1/nU4MaeYfCx4Q6U1MjYqB/pvABg="
} }
}, },
"org.jetbrains.kotlin:kotlin-gradle-plugins-bom:1.9.22": { "org.jetbrains.kotlin:kotlin-gradle-plugins-bom:1.9.24": {
"kotlin-gradle-plugins-bom-1.9.22.module": { "kotlin-gradle-plugins-bom-1.9.24.module": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.22/kotlin-gradle-plugins-bom-1.9.22.module", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.24/kotlin-gradle-plugins-bom-1.9.24.module",
"hash": "sha256-Qj401h0iCxoN3BgUCGqM6rTa2ed5ArDOjLRyG789xu0=" "hash": "sha256-BEh8cNHIzCkBwDdNgarX+k/Rp5NeJa200LH69WkKzNs="
}, },
"kotlin-gradle-plugins-bom-1.9.22.pom": { "kotlin-gradle-plugins-bom-1.9.24.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.22/kotlin-gradle-plugins-bom-1.9.22.pom", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/1.9.24/kotlin-gradle-plugins-bom-1.9.24.pom",
"hash": "sha256-da2/XHjOJHwiuvNijQs/8c9+19N9YB66cwTXerdb3Z8=" "hash": "sha256-wqVTvkQFNLjTMOV69hNjc1WLXgIPppzPsDsuWDx1nAA="
} }
}, },
"org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.9.22": { "org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.9.24": {
"kotlin-klib-commonizer-api-1.9.22.jar": { "kotlin-klib-commonizer-api-1.9.24.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.22/kotlin-klib-commonizer-api-1.9.22.jar", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.24/kotlin-klib-commonizer-api-1.9.24.jar",
"hash": "sha256-jC9lQpwYLi5KLgnLkQ5iuW227tKFWUuPga+CO35ZROI=" "hash": "sha256-U791bL22Uj3LTA16syrLZBR5bBz0nOQxvkC3DMV9tUk="
}, },
"kotlin-klib-commonizer-api-1.9.22.pom": { "kotlin-klib-commonizer-api-1.9.24.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.22/kotlin-klib-commonizer-api-1.9.22.pom", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.9.24/kotlin-klib-commonizer-api-1.9.24.pom",
"hash": "sha256-EMrJcNMAo0icM/CzBBVv8DLZWVm+WqrDuIAoKtWGIv4=" "hash": "sha256-6pO4z4DdKXdKf7GEeclxH7uWPqhqwjq2FOepQAUsZ34="
} }
}, },
"org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.9.22": { "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.9.24": {
"kotlin-klib-commonizer-embeddable-1.9.22.jar": { "kotlin-klib-commonizer-embeddable-1.9.24.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.9.22/kotlin-klib-commonizer-embeddable-1.9.22.jar", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.9.24/kotlin-klib-commonizer-embeddable-1.9.24.jar",
"hash": "sha256-c/50PnTSEoPTg9C6voX9CMRCr8GnvYgIL42gUQ0FPUs=" "hash": "sha256-AUyBXNeOK4yub4JeHOpPMd6v4HEBOh0G/jZXVzTDA6E="
}, },
"kotlin-klib-commonizer-embeddable-1.9.22.pom": { "kotlin-klib-commonizer-embeddable-1.9.24.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.9.22/kotlin-klib-commonizer-embeddable-1.9.22.pom", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.9.24/kotlin-klib-commonizer-embeddable-1.9.24.pom",
"hash": "sha256-dxghItppe2YqSRPX3Z/mu68ATOhH/YZ9oj6v8MTIJEs=" "hash": "sha256-yshuQs6nFQwXJJW69k1hWar/vCjFm1+433K+p1iL9Rw="
} }
}, },
"org.jetbrains.kotlin:kotlin-native-utils:1.9.22": { "org.jetbrains.kotlin:kotlin-native-utils:1.9.24": {
"kotlin-native-utils-1.9.22.jar": { "kotlin-native-utils-1.9.24.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.22/kotlin-native-utils-1.9.22.jar", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.24/kotlin-native-utils-1.9.24.jar",
"hash": "sha256-eGwSfdVTXbLDmuWXzQsMrZ6RS4PiNvHbAlEjXMnGUqw=" "hash": "sha256-I1WvMJo7FgeymmF02Fe05umxs2EH1sHvu8PMSbpDRQw="
}, },
"kotlin-native-utils-1.9.22.pom": { "kotlin-native-utils-1.9.24.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.22/kotlin-native-utils-1.9.22.pom", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.9.24/kotlin-native-utils-1.9.24.pom",
"hash": "sha256-EcUUwF7qOuno4Wq0l5bxEd9DxzSCMeNfr0xCjMT3Q+o=" "hash": "sha256-uvA25RxRge8Q8wVRXRnfawKWsLcIS0g9I4oImN630i0="
} }
}, },
"org.jetbrains.kotlin:kotlin-project-model:1.9.22": { "org.jetbrains.kotlin:kotlin-project-model:1.9.24": {
"kotlin-project-model-1.9.22.jar": { "kotlin-project-model-1.9.24.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.22/kotlin-project-model-1.9.22.jar", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.24/kotlin-project-model-1.9.24.jar",
"hash": "sha256-zBHVwLGQnFsKCP0l7w51T/0r9Wyu9mX7eFEiI15UKhg=" "hash": "sha256-Nri/x5EqvuVIWSxcI5keVRQODS17OhqTTdPOj6Q0+N0="
}, },
"kotlin-project-model-1.9.22.pom": { "kotlin-project-model-1.9.24.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.22/kotlin-project-model-1.9.22.pom", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.9.24/kotlin-project-model-1.9.24.pom",
"hash": "sha256-659KFngb/ADM7IAw++XuIo5vKydxxQwmezIY/rAGW0A=" "hash": "sha256-sF4O4QAsGO3t626JrwfjvheFB9sT2hutbs52vmDz7es="
} }
}, },
"org.jetbrains.kotlin:kotlin-reflect:1.9.22": { "org.jetbrains.kotlin:kotlin-reflect:1.9.24": {
"kotlin-reflect-1.9.22.jar": { "kotlin-reflect-1.9.24.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.9.22/kotlin-reflect-1.9.22.jar", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.9.24/kotlin-reflect-1.9.24.jar",
"hash": "sha256-d/MRyhOEgR1Rn9o4n8sSaL2qBY1gUEbg7edsA7DfPpc=" "hash": "sha256-plFmRFu4XvgWzeEnJ5/gAX0rfMQ5s7lyOQ4bc21k6Uw="
}, },
"kotlin-reflect-1.9.22.pom": { "kotlin-reflect-1.9.24.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.9.22/kotlin-reflect-1.9.22.pom", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.9.24/kotlin-reflect-1.9.24.pom",
"hash": "sha256-xxLjWN97kxi2j1RjlxsIhnODf8DKQoXRw4LIEC7da18=" "hash": "sha256-CghcMAUb1tSrdlrVoMUXnEE7NfdBjyiDFy+9m6GrzMk="
} }
}, },
"org.jetbrains.kotlin:kotlin-reflect:1.6.10": { "org.jetbrains.kotlin:kotlin-reflect:1.6.10": {
@@ -335,126 +335,126 @@
"hash": "sha256-V5BVJCdKAK4CiqzMJyg/a8WSWpNKBGwcxdBsjuTW1ak=" "hash": "sha256-V5BVJCdKAK4CiqzMJyg/a8WSWpNKBGwcxdBsjuTW1ak="
} }
}, },
"org.jetbrains.kotlin:kotlin-sam-with-receiver:1.9.22": { "org.jetbrains.kotlin:kotlin-sam-with-receiver:1.9.24": {
"kotlin-sam-with-receiver-1.9.22-gradle82.jar": { "kotlin-sam-with-receiver-1.9.24-gradle82.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.9.22/kotlin-sam-with-receiver-1.9.22-gradle82.jar", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.9.24/kotlin-sam-with-receiver-1.9.24-gradle82.jar",
"hash": "sha256-cvvN3L25ZaQ9uWfLKjGaXXp3NttQrCA8lrmatVc5wkE=" "hash": "sha256-RYZmqqT/D73L7l77+enlM2cf6/4UKaxsqNEypmuo8wo="
}, },
"kotlin-sam-with-receiver-1.9.22.module": { "kotlin-sam-with-receiver-1.9.24.module": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.9.22/kotlin-sam-with-receiver-1.9.22.module", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.9.24/kotlin-sam-with-receiver-1.9.24.module",
"hash": "sha256-7rpm+YBjiXkSCkm5/aW4YeEHLWCQIzi1NyYH8kljDC0=" "hash": "sha256-8qBhnZRfeYWlBM1xxwH9/Kwu97M8otTDxGyuJl5CTzQ="
}, },
"kotlin-sam-with-receiver-1.9.22.pom": { "kotlin-sam-with-receiver-1.9.24.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.9.22/kotlin-sam-with-receiver-1.9.22.pom", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.9.24/kotlin-sam-with-receiver-1.9.24.pom",
"hash": "sha256-AD+clOG/rX8ZDm70F+kTOhCjH3hRMBPlkHS2DzZZLCY=" "hash": "sha256-fqbN1ffpu5RtdIKwn+vDBmLNmXDG0CbYhA3Nqwy+PY8="
} }
}, },
"org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin-embeddable:1.9.22": { "org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin-embeddable:1.9.24": {
"kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.22.jar": { "kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.24.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver-compiler-plugin-embeddable/1.9.22/kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.22.jar", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver-compiler-plugin-embeddable/1.9.24/kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.24.jar",
"hash": "sha256-jqUUoRQABsxXoHMVsVoTaI7W/qFwfzrJjpzoCVu2z38=" "hash": "sha256-mbinMB9ylR2d5sJW1cBSMowL/zndEm7/tQ/nhkq3CWM="
}, },
"kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.22.pom": { "kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.24.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver-compiler-plugin-embeddable/1.9.22/kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.22.pom", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver-compiler-plugin-embeddable/1.9.24/kotlin-sam-with-receiver-compiler-plugin-embeddable-1.9.24.pom",
"hash": "sha256-MM9L0JPCbn/Ryt/F1Qop5q60WXUSeia84rEJUfJPgqo=" "hash": "sha256-XBTVgzip+Vu/dZ2qibp0lC3PoawzFI68tPALrA9kHjg="
} }
}, },
"org.jetbrains.kotlin:kotlin-script-runtime:1.9.22": { "org.jetbrains.kotlin:kotlin-script-runtime:1.9.24": {
"kotlin-script-runtime-1.9.22.jar": { "kotlin-script-runtime-1.9.24.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.22/kotlin-script-runtime-1.9.22.jar", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.24/kotlin-script-runtime-1.9.24.jar",
"hash": "sha256-uAZwV59/ktRz2NWDTwsST3dVxFmP6UskQYOwKDSDRXQ=" "hash": "sha256-MUx9MI/nUGVDZbrGFEeAYTyRac89nh2vurkc+AvcNXw="
}, },
"kotlin-script-runtime-1.9.22.pom": { "kotlin-script-runtime-1.9.24.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.22/kotlin-script-runtime-1.9.22.pom", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-script-runtime/1.9.24/kotlin-script-runtime-1.9.24.pom",
"hash": "sha256-/ra0ns9pEG1MEoXnH5ob2noSfO9oMC4+n9yCmKTjR5U=" "hash": "sha256-mGDF58qg5AlxmVCQEtoD01GX/teewKkKUOKPjeh1QE0="
} }
}, },
"org.jetbrains.kotlin:kotlin-scripting-common:1.9.22": { "org.jetbrains.kotlin:kotlin-scripting-common:1.9.24": {
"kotlin-scripting-common-1.9.22.jar": { "kotlin-scripting-common-1.9.24.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.22/kotlin-scripting-common-1.9.22.jar", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.24/kotlin-scripting-common-1.9.24.jar",
"hash": "sha256-+lAMvwNJQ++BJvPT3GWvCf+Z3//kTFCZtPwu1b8vXcc=" "hash": "sha256-KqeY6XgokBDYByTdGdn+GQtSQkFIEQT89RjAO8OdTks="
}, },
"kotlin-scripting-common-1.9.22.pom": { "kotlin-scripting-common-1.9.24.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.22/kotlin-scripting-common-1.9.22.pom", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.24/kotlin-scripting-common-1.9.24.pom",
"hash": "sha256-ROURI7DCfm/ZM/wma00Nrw8GhKYq7Z/mhC6Noz8qKz8=" "hash": "sha256-S9rpUqslCWFRsfqERCooGupzwW0dTNVdigLDccqJusQ="
} }
}, },
"org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.22": { "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.24": {
"kotlin-scripting-compiler-embeddable-1.9.22.jar": { "kotlin-scripting-compiler-embeddable-1.9.24.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.22/kotlin-scripting-compiler-embeddable-1.9.22.jar", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.24/kotlin-scripting-compiler-embeddable-1.9.24.jar",
"hash": "sha256-Ij/shIMCNEmc1MeiPqHJLroSfEGzXZux1LYdJBVa6zU=" "hash": "sha256-02gR+1yZeXaEH/PQqxnGt96RkomeQIK6Hz/7oH6UBfQ="
}, },
"kotlin-scripting-compiler-embeddable-1.9.22.pom": { "kotlin-scripting-compiler-embeddable-1.9.24.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.22/kotlin-scripting-compiler-embeddable-1.9.22.pom", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.9.24/kotlin-scripting-compiler-embeddable-1.9.24.pom",
"hash": "sha256-wWCPP7yyqfdSPq0zWZwurc5MgSFhqeBmufSwBa97Qxw=" "hash": "sha256-FUgOkd8v/sfFfOHgpfFBBltFIrbbyJsv2yk9xsVwwMU="
} }
}, },
"org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.22": { "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.24": {
"kotlin-scripting-compiler-impl-embeddable-1.9.22.jar": { "kotlin-scripting-compiler-impl-embeddable-1.9.24.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.22/kotlin-scripting-compiler-impl-embeddable-1.9.22.jar", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.24/kotlin-scripting-compiler-impl-embeddable-1.9.24.jar",
"hash": "sha256-OJkYFqKH/3YkHxp35/ERZIHU6To9tjJZplfd4g5tD2U=" "hash": "sha256-i/2A2RNqKjJhALC3O/saG7NX7d+uDYEiDkYSa4im7no="
}, },
"kotlin-scripting-compiler-impl-embeddable-1.9.22.pom": { "kotlin-scripting-compiler-impl-embeddable-1.9.24.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.22/kotlin-scripting-compiler-impl-embeddable-1.9.22.pom", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.9.24/kotlin-scripting-compiler-impl-embeddable-1.9.24.pom",
"hash": "sha256-gmccM6lXsuKoINZqaSwvzmPjvwR/HLJeb7A5HF3c8uc=" "hash": "sha256-Sg6yUXF8Sih6ZBfp/QRBZ4xJatxnAdhasPFi8W0s+4c="
} }
}, },
"org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.22": { "org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.24": {
"kotlin-scripting-jvm-1.9.22.jar": { "kotlin-scripting-jvm-1.9.24.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.22/kotlin-scripting-jvm-1.9.22.jar", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.24/kotlin-scripting-jvm-1.9.24.jar",
"hash": "sha256-jRJ9dvz6BRfDbB6g4ijs4D1aRoJkKgH2R5prvccxKik=" "hash": "sha256-G9aQBgqUhDl3N0pFds2J10nk7srx+3pYA2/rOuVRxKw="
}, },
"kotlin-scripting-jvm-1.9.22.pom": { "kotlin-scripting-jvm-1.9.24.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.22/kotlin-scripting-jvm-1.9.22.pom", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.9.24/kotlin-scripting-jvm-1.9.24.pom",
"hash": "sha256-cBJS6huo/4f8M0dqYePVxtnS3aQbqpiZTdaYDuE/vG0=" "hash": "sha256-kkM+M+MLpFvMS/hKxUsX0p8Dlkp2BwYW1sZS3WxhySU="
} }
}, },
"org.jetbrains.kotlin:kotlin-stdlib:1.9.22": { "org.jetbrains.kotlin:kotlin-stdlib:1.9.24": {
"kotlin-stdlib-1.9.22-all.jar": { "kotlin-stdlib-1.9.24-all.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22-all.jar", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.24/kotlin-stdlib-1.9.24-all.jar",
"hash": "sha256-zsOLwzAucqiq+c3kNrWpBx7gMx4q0F6E2LuJczTX6dQ=" "hash": "sha256-zsOLwzAucqiq+c3kNrWpBx7gMx4q0F6E2LuJczTX6dQ="
}, },
"kotlin-stdlib-1.9.22.jar": { "kotlin-stdlib-1.9.24.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.jar", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.24/kotlin-stdlib-1.9.24.jar",
"hash": "sha256-ar4UbCeGQTi4dMzM/l9TTj65I8maG3tdRUlO5WlPPgo=" "hash": "sha256-hYuQJpbanPWFq52Y/8HCcSJpgoNU3+kQfjcRsISjZGg="
}, },
"kotlin-stdlib-1.9.22.module": { "kotlin-stdlib-1.9.24.module": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.module", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.24/kotlin-stdlib-1.9.24.module",
"hash": "sha256-9IIxS1B5wUVfb7DUJXp0XRAcYSTOlhUiuob53JCQHkc=" "hash": "sha256-8uKmVztbUmXEEtXFgfv46gDGKxC5yS1WdMnpfy8zNbM="
}, },
"kotlin-stdlib-1.9.22.pom": { "kotlin-stdlib-1.9.24.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.pom", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.9.24/kotlin-stdlib-1.9.24.pom",
"hash": "sha256-zOLxUoXsgHijd0a1cwigVAQt1cwlQgxD9zt4V8JGjwM=" "hash": "sha256-uc6tTCIt7pDHT28BPTFqnlD4EaApMxPDNRrssvfM7V8="
} }
}, },
"org.jetbrains.kotlin:kotlin-tooling-core:1.9.22": { "org.jetbrains.kotlin:kotlin-tooling-core:1.9.24": {
"kotlin-tooling-core-1.9.22.jar": { "kotlin-tooling-core-1.9.24.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.22/kotlin-tooling-core-1.9.22.jar", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.24/kotlin-tooling-core-1.9.24.jar",
"hash": "sha256-iTjrl+NjINqj5vsqYP0qBbIy/0pVcXPFAZ8EW4gy2fQ=" "hash": "sha256-iTjrl+NjINqj5vsqYP0qBbIy/0pVcXPFAZ8EW4gy2fQ="
}, },
"kotlin-tooling-core-1.9.22.pom": { "kotlin-tooling-core-1.9.24.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.22/kotlin-tooling-core-1.9.22.pom", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.24/kotlin-tooling-core-1.9.24.pom",
"hash": "sha256-FPx/NcY15fzRvqU3q0+kQxLoQyUtUzNRnjaxJeoImyE=" "hash": "sha256-dbytE+kWgPzwEsjuGqGqxxn1m2IbOUyj/DLGJf+YclY="
} }
}, },
"org.jetbrains.kotlin:kotlin-util-io:1.9.22": { "org.jetbrains.kotlin:kotlin-util-io:1.9.24": {
"kotlin-util-io-1.9.22.jar": { "kotlin-util-io-1.9.24.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.22/kotlin-util-io-1.9.22.jar", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.24/kotlin-util-io-1.9.24.jar",
"hash": "sha256-9telhJGjeLCDrRvq1IikheEdFgsx52wYwa1SDx0o9Gs=" "hash": "sha256-u0z0H/UG5Q+bLDQiBkmIFupO3f6ImYqQtotDlLT6xfo="
}, },
"kotlin-util-io-1.9.22.pom": { "kotlin-util-io-1.9.24.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.22/kotlin-util-io-1.9.22.pom", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.9.24/kotlin-util-io-1.9.24.pom",
"hash": "sha256-ZP1qINbsBAE7ttdWJ/ZYC7c2QdlIkJ1cFmTi53MQbe4=" "hash": "sha256-82VnN3kyTzMtOTkMeAd1h4BNEeznKv5K7uMlOtZTPFE="
} }
}, },
"org.jetbrains.kotlin:kotlin-util-klib:1.9.22": { "org.jetbrains.kotlin:kotlin-util-klib:1.9.24": {
"kotlin-util-klib-1.9.22.jar": { "kotlin-util-klib-1.9.24.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.22/kotlin-util-klib-1.9.22.jar", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.24/kotlin-util-klib-1.9.24.jar",
"hash": "sha256-pnnuL1EPOrkmkYGN5etbCQLobYjJdnTn20TcTyJSxfk=" "hash": "sha256-4NqKfwZIV8BIOmVyfRYtPtV84m1+R3ix8ADg0MDck3E="
}, },
"kotlin-util-klib-1.9.22.pom": { "kotlin-util-klib-1.9.24.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.22/kotlin-util-klib-1.9.22.pom", "url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.9.24/kotlin-util-klib-1.9.24.pom",
"hash": "sha256-Dep9//Cit0CIrJlwQ8vCQINdK/9Zs5/MiwysbqPrNpc=" "hash": "sha256-krQjr9XnKbsRT3G1ip4DhF3+K9pWJFTrvbg8nYOyMHE="
} }
}, },
"org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0": { "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0": {

View File

@@ -0,0 +1,14 @@
plugins {
java
}
repositories {
maven {
url = uri(System.getProperty("org.nixos.gradle2nix.m2"))
isAllowInsecureProtocol = true
}
}
dependencies {
implementation("org.jetbrains:dummy:0.1.2")
}

View File

@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>org.jetbrains</groupId>
<artifactId>dummy</artifactId>
<version>0.1.2</version>
<name>Dummy Project</name>
<description>
This is dummy project created to test bazel rules for sonatype publishing.
</description>
<url>https://www.jetbrains.com/</url>
<dependencies>
</dependencies>
<developers>
<developer>
<id>andrefmrocha</id>
<name>Andre Rocha</name>
<url>https://andrefmrocha.me</url>
</developer>
</developers>
<licenses>
<license>
<name>Apache 2</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
</license>
</licenses>
<scm>
<connection>scm:git:github.com/andrefmrocha/Dummy-Project.git</connection>
<developerConnection>scm:git:git@github.com:andrefmrocha/Dummy-Project.git</developerConnection>
<url>https://github.com/andrefmrocha/Dummy-Project</url>
</scm>
</project>

File diff suppressed because it is too large Load Diff

View File

@@ -5,12 +5,13 @@ junit = "5.8.2"
# See https://docs.gradle.org/current/userguide/compatibility.html#kotlin # See https://docs.gradle.org/current/userguide/compatibility.html#kotlin
kotlin = { strictly = "1.9.24" } kotlin = { strictly = "1.9.24" }
ktor = "3.0.2" ktor = "3.0.2"
kotest = "5.9.0" kotest = "6.0.0.M1"
shadow = "8.1.8" shadow = "8.1.8"
[libraries] [libraries]
clikt = "com.github.ajalt.clikt:clikt:4.4.0" clikt = "com.github.ajalt.clikt:clikt:4.4.0"
gradle-api-69 = "dev.gradleplugins:gradle-api:6.9" gradle-api-69 = "dev.gradleplugins:gradle-api:6.9"
gradle-api-75 = "dev.gradleplugins:gradle-api:7.5"
gradle-api-80 = "dev.gradleplugins:gradle-api:8.0" gradle-api-80 = "dev.gradleplugins:gradle-api:8.0"
gradle-api-81 = "dev.gradleplugins:gradle-api:8.1" gradle-api-81 = "dev.gradleplugins:gradle-api:8.1"
gradle-kotlin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } gradle-kotlin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }

View File

@@ -0,0 +1,9 @@
package org.nixos.gradle2nix.model
enum class ArtifactType {
DOXYGEN,
JAVADOC,
SAMPLES,
SOURCES,
USERMANUAL,
}

View File

@@ -2,3 +2,4 @@ package org.nixos.gradle2nix.model
const val RESOLVE_PROJECT_TASK = "resolveProjectArtifacts" const val RESOLVE_PROJECT_TASK = "resolveProjectArtifacts"
const val RESOLVE_ALL_TASK = "resolveAllArtifacts" const val RESOLVE_ALL_TASK = "resolveAllArtifacts"
const val ARTIFACTS_PROPERTY = "org.nixos.gradle2nix.artifacts"

View File

@@ -1,20 +1,61 @@
package org.nixos.gradle2nix package org.nixos.gradle2nix
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.api.tasks.TaskAction import org.gradle.api.artifacts.Configuration
import org.gradle.api.tasks.TaskProvider import org.gradle.api.artifacts.component.ModuleComponentIdentifier
import org.nixos.gradle2nix.model.RESOLVE_PROJECT_TASK import org.gradle.api.attributes.Bundling
import org.gradle.api.attributes.Category
import org.gradle.api.attributes.DocsType
import org.gradle.api.attributes.Usage
import org.gradle.api.file.FileCollection
import org.nixos.gradle2nix.model.ArtifactType
private fun Configuration.artifactConfigurationName(artifactType: ArtifactType): String =
"$name-${artifactType.name.toLowerCase()}-artifacts"
object ResolveAllArtifactsApplierBase : AbstractResolveAllArtifactsApplier() { object ResolveAllArtifactsApplierBase : AbstractResolveAllArtifactsApplier() {
override fun Project.registerProjectTask(): TaskProvider<*> = @Suppress("UnstableApiUsage")
tasks.register(RESOLVE_PROJECT_TASK, ResolveProjectDependenciesTaskBase::class.java) override fun Project.addConfigurationArtifactResolver(
} configuration: Configuration,
artifactType: ArtifactType,
): FileCollection {
val artifactConfiguration =
configurations.register(configuration.artifactConfigurationName(artifactType)) { artifactConfig ->
val usage = configuration.attributes.getAttribute(Usage.USAGE_ATTRIBUTE)
artifactConfig.extendsFrom(configuration)
artifactConfig.isCanBeConsumed = false
artifactConfig.attributes { attrs ->
with(attrs) {
if (usage != null) {
attribute(Usage.USAGE_ATTRIBUTE, usage)
}
attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category::class.java, Category.DOCUMENTATION))
attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling::class.java, Bundling.EXTERNAL))
attribute(
DocsType.DOCS_TYPE_ATTRIBUTE,
objects.named(
DocsType::class.java,
when (artifactType) {
ArtifactType.DOXYGEN -> DocsType.DOXYGEN
ArtifactType.JAVADOC -> DocsType.JAVADOC
ArtifactType.SAMPLES -> DocsType.SAMPLES
ArtifactType.SOURCES -> DocsType.SOURCES
ArtifactType.USERMANUAL -> DocsType.USER_MANUAL
},
),
)
}
}
}
abstract class ResolveProjectDependenciesTaskBase : ResolveProjectDependenciesTask() { return objects.fileCollection().from(
@TaskAction artifactConfiguration.map { config ->
fun action() { config.incoming
for (configuration in getReportableConfigurations()) { .artifactView { view ->
configuration.artifactFiles().count() view.isLenient = true
} view.componentFilter { it is ModuleComponentIdentifier }
}.files
},
)
} }
} }

View File

@@ -3,27 +3,56 @@ package org.nixos.gradle2nix
import org.gradle.api.DefaultTask import org.gradle.api.DefaultTask
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.Configuration
import org.gradle.api.artifacts.component.ModuleComponentIdentifier
import org.gradle.api.file.FileCollection import org.gradle.api.file.FileCollection
import org.gradle.api.invocation.Gradle import org.gradle.api.invocation.Gradle
import org.gradle.api.logging.Logging
import org.gradle.api.model.ObjectFactory
import org.gradle.api.tasks.InputFiles
import org.gradle.api.tasks.Internal import org.gradle.api.tasks.Internal
import org.gradle.api.tasks.TaskProvider import org.gradle.api.tasks.TaskAction
import org.gradle.internal.deprecation.DeprecatableConfiguration import org.gradle.internal.deprecation.DeprecatableConfiguration
import org.nixos.gradle2nix.model.ARTIFACTS_PROPERTY
import org.nixos.gradle2nix.model.ArtifactType
import org.nixos.gradle2nix.model.RESOLVE_ALL_TASK import org.nixos.gradle2nix.model.RESOLVE_ALL_TASK
import org.nixos.gradle2nix.model.RESOLVE_PROJECT_TASK
import javax.inject.Inject
fun interface ResolveAllArtifactsApplier { fun interface ResolveAllArtifactsApplier {
fun apply(gradle: Gradle) fun apply(gradle: Gradle)
} }
val Project.reportableConfigurations: List<Configuration>
get() = configurations.filter { (it as? DeprecatableConfiguration)?.canSafelyBeResolved() ?: it.isCanBeResolved }
abstract class AbstractResolveAllArtifactsApplier : ResolveAllArtifactsApplier { abstract class AbstractResolveAllArtifactsApplier : ResolveAllArtifactsApplier {
abstract fun Project.registerProjectTask(): TaskProvider<*> abstract fun Project.addConfigurationArtifactResolver(
configuration: Configuration,
artifactType: ArtifactType,
): FileCollection
final override fun apply(gradle: Gradle) { final override fun apply(gradle: Gradle) {
val resolveAll = gradle.rootProject.tasks.register(RESOLVE_ALL_TASK) val resolveAll = gradle.rootProject.tasks.register(RESOLVE_ALL_TASK)
val artifacts =
System
.getProperty(ARTIFACTS_PROPERTY, "")
.split(",")
.filter { it.isNotBlank() }
.mapTo(mutableSetOf()) { ArtifactType.valueOf(it.toUpperCase()) }
// Depend on "dependencies" task in all projects // Depend on "dependencies" task in all projects
gradle.allprojects { project -> gradle.allprojects { project ->
val resolveProject = project.registerProjectTask() val resolveProject =
project.tasks.register(RESOLVE_PROJECT_TASK, ResolveProjectDependenciesTask::class.java) { task ->
task.projectName.set(project.path)
for (configuration in project.reportableConfigurations) {
task.configurations.from(configuration)
for (artifactType in artifacts) {
task.configurations.from(project.addConfigurationArtifactResolver(configuration, artifactType))
}
}
}
resolveAll.configure { it.dependsOn(resolveProject) } resolveAll.configure { it.dependsOn(resolveProject) }
} }
@@ -36,17 +65,25 @@ abstract class AbstractResolveAllArtifactsApplier : ResolveAllArtifactsApplier {
} }
} }
abstract class ResolveProjectDependenciesTask : DefaultTask() { @Suppress("UnstableApiUsage")
@Internal abstract class ResolveProjectDependenciesTask
protected fun getReportableConfigurations(): List<Configuration> = @Inject
project.configurations.filter { constructor(
(it as? DeprecatableConfiguration)?.canSafelyBeResolved() ?: true objects: ObjectFactory,
) : DefaultTask() {
@get:Internal
val projectName = objects.property(String::class.java)
@get:InputFiles
val configurations = objects.fileCollection()
@TaskAction
fun resolve() {
val count = configurations.count()
LOGGER.info("${projectName.get()}: resolved $count artifacts")
} }
protected fun Configuration.artifactFiles(): FileCollection = companion object {
incoming private val LOGGER = Logging.getLogger(ResolveProjectDependenciesTask::class.java)
.artifactView { viewConfiguration -> }
viewConfiguration.isLenient = true }
viewConfiguration.componentFilter { it is ModuleComponentIdentifier }
}.files
}

View File

@@ -0,0 +1,12 @@
plugins {
`plugin-conventions`
}
dependencies {
compileOnly(libs.gradle.api.get75())
implementation(project(":plugin:common"))
}
tasks.shadowJar {
archiveFileName = "plugin-gradle75.jar"
}

View File

@@ -0,0 +1,61 @@
package org.nixos.gradle2nix
import org.gradle.api.invocation.Gradle
import org.gradle.api.services.BuildService
import org.gradle.api.services.BuildServiceParameters
import org.gradle.internal.build.event.BuildEventListenerRegistryInternal
import org.gradle.internal.operations.BuildOperationDescriptor
import org.gradle.internal.operations.BuildOperationListener
import org.gradle.internal.operations.OperationFinishEvent
import org.gradle.internal.operations.OperationIdentifier
import org.gradle.internal.operations.OperationProgressEvent
import org.gradle.internal.operations.OperationStartEvent
object DependencyExtractorApplierG75 : DependencyExtractorApplier {
@Suppress("UnstableApiUsage")
override fun apply(
gradle: Gradle,
extractor: DependencyExtractor,
) {
val serviceProvider =
gradle.sharedServices
.registerIfAbsent(
"nixDependencyExtractor",
DependencyExtractorService::class.java,
) {}
.map { service ->
service.apply { this.extractor = extractor }
}
gradle.service<BuildEventListenerRegistryInternal>().onOperationCompletion(serviceProvider)
}
}
@Suppress("UnstableApiUsage")
internal abstract class DependencyExtractorService :
BuildService<BuildServiceParameters.None>,
BuildOperationListener,
AutoCloseable {
var extractor: DependencyExtractor? = null
override fun started(
buildOperation: BuildOperationDescriptor,
startEvent: OperationStartEvent,
) {}
override fun progress(
operationIdentifier: OperationIdentifier,
progressEvent: OperationProgressEvent,
) {}
override fun finished(
buildOperation: BuildOperationDescriptor,
finishEvent: OperationFinishEvent,
) {
extractor?.finished(buildOperation, finishEvent)
}
override fun close() {
extractor = null
}
}

View File

@@ -0,0 +1,8 @@
package org.nixos.gradle2nix
abstract class Gradle2NixPlugin :
AbstractGradle2NixPlugin(
GradleCacheAccessFactoryG75,
DependencyExtractorApplierG75,
ResolveAllArtifactsApplierG75,
)

View File

@@ -0,0 +1,18 @@
package org.nixos.gradle2nix
import org.gradle.api.internal.artifacts.ivyservice.ArtifactCachesProvider
import org.gradle.api.invocation.Gradle
object GradleCacheAccessFactoryG75 : GradleCacheAccessFactory {
override fun create(gradle: Gradle): GradleCacheAccess = GradleCacheAccessG75(gradle)
}
class GradleCacheAccessG75(
gradle: Gradle,
) : GradleCacheAccess {
private val artifactCachesProvider = gradle.service<ArtifactCachesProvider>()
override fun useCache(block: () -> Unit) {
artifactCachesProvider.writableCacheLockingManager.useCache(block)
}
}

View File

@@ -0,0 +1,47 @@
package org.nixos.gradle2nix
import org.gradle.api.Project
import org.gradle.api.artifacts.Configuration
import org.gradle.api.artifacts.component.ModuleComponentIdentifier
import org.gradle.api.attributes.Bundling
import org.gradle.api.attributes.DocsType
import org.gradle.api.file.FileCollection
import org.nixos.gradle2nix.model.ArtifactType
object ResolveAllArtifactsApplierG75 : AbstractResolveAllArtifactsApplier() {
@Suppress("UnstableApiUsage")
override fun Project.addConfigurationArtifactResolver(
configuration: Configuration,
artifactType: ArtifactType,
): FileCollection {
val result =
configuration.incoming
.artifactView { view ->
view.isLenient = true
view.withVariantReselection()
view.componentFilter { it is ModuleComponentIdentifier }
view.attributes { attrs ->
with(attrs) {
attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling::class.java, Bundling.EXTERNAL))
attribute(
DocsType.DOCS_TYPE_ATTRIBUTE,
objects.named(
DocsType::class.java,
when (artifactType) {
ArtifactType.DOXYGEN -> DocsType.DOXYGEN
ArtifactType.JAVADOC -> DocsType.JAVADOC
ArtifactType.SAMPLES -> DocsType.SAMPLES
ArtifactType.SOURCES -> DocsType.SOURCES
ArtifactType.USERMANUAL -> DocsType.USER_MANUAL
},
),
)
}
}
}.files
configuration.incoming.afterResolve { result.files.count() }
return result
}
}

View File

@@ -1,37 +1,49 @@
package org.nixos.gradle2nix package org.nixos.gradle2nix
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.api.artifacts.Configuration
import org.gradle.api.artifacts.component.ModuleComponentIdentifier
import org.gradle.api.attributes.Bundling
import org.gradle.api.attributes.DocsType
import org.gradle.api.file.FileCollection import org.gradle.api.file.FileCollection
import org.gradle.api.model.ObjectFactory import org.nixos.gradle2nix.model.ArtifactType
import org.gradle.api.tasks.TaskAction
import org.gradle.api.tasks.TaskProvider
import org.gradle.internal.serialization.Cached
import org.gradle.work.DisableCachingByDefault
import org.nixos.gradle2nix.model.RESOLVE_PROJECT_TASK
import javax.inject.Inject
object ResolveAllArtifactsApplierG8 : AbstractResolveAllArtifactsApplier() { object ResolveAllArtifactsApplierG8 : AbstractResolveAllArtifactsApplier() {
override fun Project.registerProjectTask(): TaskProvider<*> = @Suppress("UnstableApiUsage")
tasks.register(RESOLVE_PROJECT_TASK, ResolveProjectDependenciesTaskG8::class.java) override fun Project.addConfigurationArtifactResolver(
} configuration: Configuration,
artifactType: ArtifactType,
@DisableCachingByDefault(because = "Not worth caching") ): FileCollection {
abstract class ResolveProjectDependenciesTaskG8 val result =
@Inject configuration.incoming
constructor( .artifactView { view ->
private val objects: ObjectFactory, view.isLenient = true
) : ResolveProjectDependenciesTask() { view.withVariantReselection()
private val artifactFiles = Cached.of { artifactFiles() } view.componentFilter { it is ModuleComponentIdentifier }
view.attributes { attrs ->
private fun artifactFiles(): FileCollection = with(attrs) {
objects.fileCollection().from( attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling::class.java, Bundling.EXTERNAL))
getReportableConfigurations().map { configuration -> attribute(
configuration.artifactFiles() DocsType.DOCS_TYPE_ATTRIBUTE,
objects.named(
DocsType::class.java,
when (artifactType) {
ArtifactType.DOXYGEN -> DocsType.DOXYGEN
ArtifactType.JAVADOC -> DocsType.JAVADOC
ArtifactType.SAMPLES -> DocsType.SAMPLES
ArtifactType.SOURCES -> DocsType.SOURCES
ArtifactType.USERMANUAL -> DocsType.USER_MANUAL
}, },
),
) )
}
}
}.files
@TaskAction configuration.incoming.afterResolve {
fun action() { result.files.count()
artifactFiles.get().count()
} }
return result
} }
}

View File

@@ -3,8 +3,8 @@ plugins {
} }
dependencies { dependencies {
implementation(project(":plugin:gradle8"))
compileOnly(libs.gradle.api.get80()) compileOnly(libs.gradle.api.get80())
implementation(project(":plugin:gradle8"))
} }
tasks.shadowJar { tasks.shadowJar {

View File

@@ -3,8 +3,8 @@ plugins {
} }
dependencies { dependencies {
implementation(project(":plugin:gradle8"))
compileOnly(libs.gradle.api.get81()) compileOnly(libs.gradle.api.get81())
implementation(project(":plugin:gradle8"))
} }
tasks.shadowJar { tasks.shadowJar {

View File

@@ -13,6 +13,7 @@ include(
":model", ":model",
":plugin:base", ":plugin:base",
":plugin:common", ":plugin:common",
":plugin:gradle75",
":plugin:gradle8", ":plugin:gradle8",
":plugin:gradle80", ":plugin:gradle80",
":plugin:gradle81", ":plugin:gradle81",