mirror of
https://github.com/tadfisher/gradle2nix.git
synced 2026-01-11 23:40:37 -05:00
Separate plugins for different Gradle APIs
This commit is contained in:
12
plugin/base/build.gradle.kts
Normal file
12
plugin/base/build.gradle.kts
Normal file
@@ -0,0 +1,12 @@
|
||||
plugins {
|
||||
`plugin-conventions`
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation(project(":plugin:common"))
|
||||
compileOnly(libs.gradle.api.get69())
|
||||
}
|
||||
|
||||
tasks.shadowJar {
|
||||
archiveFileName = "plugin-base.jar"
|
||||
}
|
||||
18
plugin/base/src/main/kotlin/DependencyExtractor.base.kt
Normal file
18
plugin/base/src/main/kotlin/DependencyExtractor.base.kt
Normal file
@@ -0,0 +1,18 @@
|
||||
package org.nixos.gradle2nix
|
||||
|
||||
import org.gradle.api.invocation.Gradle
|
||||
import org.gradle.internal.operations.BuildOperationListenerManager
|
||||
|
||||
object DependencyExtractorApplierBase : DependencyExtractorApplier {
|
||||
override fun apply(
|
||||
gradle: Gradle,
|
||||
extractor: DependencyExtractor,
|
||||
) {
|
||||
val buildOperationListenerManager = gradle.service<BuildOperationListenerManager>()
|
||||
|
||||
buildOperationListenerManager.addListener(extractor)
|
||||
gradle.buildFinished {
|
||||
buildOperationListenerManager.removeListener(extractor)
|
||||
}
|
||||
}
|
||||
}
|
||||
7
plugin/base/src/main/kotlin/Gradle2NixPlugin.gradle69.kt
Normal file
7
plugin/base/src/main/kotlin/Gradle2NixPlugin.gradle69.kt
Normal file
@@ -0,0 +1,7 @@
|
||||
package org.nixos.gradle2nix
|
||||
|
||||
abstract class Gradle2NixPlugin : AbstractGradle2NixPlugin(
|
||||
GradleCacheAccessFactoryBase,
|
||||
DependencyExtractorApplierBase,
|
||||
ResolveAllArtifactsApplierBase,
|
||||
)
|
||||
18
plugin/base/src/main/kotlin/GradleCacheAccess.gradle69.kt
Normal file
18
plugin/base/src/main/kotlin/GradleCacheAccess.gradle69.kt
Normal file
@@ -0,0 +1,18 @@
|
||||
package org.nixos.gradle2nix
|
||||
|
||||
import org.gradle.api.internal.artifacts.ivyservice.ArtifactCachesProvider
|
||||
import org.gradle.api.invocation.Gradle
|
||||
|
||||
object GradleCacheAccessFactoryBase : GradleCacheAccessFactory {
|
||||
override fun create(gradle: Gradle): GradleCacheAccess {
|
||||
return GradleCacheAccessBase(gradle)
|
||||
}
|
||||
}
|
||||
|
||||
class GradleCacheAccessBase(gradle: Gradle) : GradleCacheAccess {
|
||||
private val artifactCachesProvider = gradle.service<ArtifactCachesProvider>()
|
||||
|
||||
override fun useCache(block: () -> Unit) {
|
||||
artifactCachesProvider.writableCacheLockingManager.useCache(block)
|
||||
}
|
||||
}
|
||||
20
plugin/base/src/main/kotlin/ResolveAllArtifacts.gradle69.kt
Normal file
20
plugin/base/src/main/kotlin/ResolveAllArtifacts.gradle69.kt
Normal file
@@ -0,0 +1,20 @@
|
||||
package org.nixos.gradle2nix
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.tasks.TaskAction
|
||||
import org.gradle.api.tasks.TaskProvider
|
||||
import org.nixos.gradle2nix.model.RESOLVE_PROJECT_TASK
|
||||
|
||||
object ResolveAllArtifactsApplierBase : AbstractResolveAllArtifactsApplier() {
|
||||
override fun Project.registerProjectTask(): TaskProvider<*> =
|
||||
tasks.register(RESOLVE_PROJECT_TASK, ResolveProjectDependenciesTaskBase::class.java)
|
||||
}
|
||||
|
||||
abstract class ResolveProjectDependenciesTaskBase : ResolveProjectDependenciesTask() {
|
||||
@TaskAction
|
||||
fun action() {
|
||||
for (configuration in getReportableConfigurations()) {
|
||||
configuration.artifactFiles().count()
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user