diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt index f97e0b0..134c180 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt @@ -5,27 +5,16 @@ import okio.buffer import okio.source import org.gradle.api.Plugin import org.gradle.api.Project -import org.gradle.api.file.RegularFile -import org.gradle.api.file.RegularFileProperty -import org.gradle.api.internal.DocumentationRegistry -import org.gradle.api.internal.artifacts.ivyservice.ivyresolve.strategy.VersionSelectorScheme -import org.gradle.api.internal.plugins.PluginRegistry import org.gradle.api.invocation.Gradle -import org.gradle.api.provider.Provider import org.gradle.api.tasks.TaskProvider import org.gradle.api.tasks.wrapper.Wrapper import org.gradle.kotlin.dsl.create import org.gradle.kotlin.dsl.named -import org.gradle.kotlin.dsl.property import org.gradle.kotlin.dsl.register -import org.gradle.kotlin.dsl.withType import org.gradle.plugin.management.PluginRequest -import org.gradle.plugin.use.internal.PluginDependencyResolutionServices -import org.gradle.plugin.use.internal.PluginResolverFactory import java.io.File import java.net.URL -import java.util.Locale -import javax.inject.Inject +import java.util.* open class Gradle2NixPlugin : Plugin { override fun apply(gradle: Gradle) { diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/GradleCompat.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/GradleCompat.kt index 70117a2..f9556a9 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/GradleCompat.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/GradleCompat.kt @@ -5,6 +5,7 @@ import org.gradle.api.file.Directory import org.gradle.api.file.DirectoryProperty import org.gradle.api.file.RegularFile import org.gradle.api.file.RegularFileProperty +import org.gradle.api.provider.ListProperty import org.gradle.api.provider.Property import org.gradle.api.provider.Provider import org.gradle.util.GradleVersion @@ -48,6 +49,26 @@ internal fun DirectoryProperty.conventionCompat( } } +internal fun ListProperty.conventionCompat( + elements: Iterable +): ListProperty { + return if (versionAtLeast("5.1")) { + convention(elements) + } else { + apply { set(elements) } + } +} + +internal fun ListProperty.conventionCompat( + provider: Provider> +): ListProperty { + return if (versionAtLeast("5.1")) { + convention(provider) + } else { + apply { set(provider) } + } +} + internal fun RegularFileProperty.conventionCompat( value: RegularFile diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/NixBuildSrcEnv.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/NixBuildSrcEnv.kt index 8408aa1..daa06ed 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/NixBuildSrcEnv.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/NixBuildSrcEnv.kt @@ -1,9 +1,6 @@ package org.nixos.gradle2nix import org.gradle.api.tasks.GradleBuild -import org.gradle.api.tasks.InputDirectory -import org.gradle.api.tasks.InputFile -import org.gradle.api.tasks.Optional import org.gradle.kotlin.dsl.configure import java.io.File diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/NixBuildscriptEnv.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/NixBuildscriptEnv.kt index 467cf46..f225a08 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/NixBuildscriptEnv.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/NixBuildscriptEnv.kt @@ -2,19 +2,12 @@ package org.nixos.gradle2nix import okio.buffer import okio.source -import org.gradle.api.file.ProjectLayout -import org.gradle.api.model.ObjectFactory import org.gradle.api.tasks.InputFile -import java.lang.IllegalStateException import java.net.URI -import javax.inject.Inject -open class NixBuildscriptEnv @Inject constructor( - layout: ProjectLayout, - objects: ObjectFactory -): NixEnv(layout, objects) { +open class NixBuildscriptEnv : NixEnv() { @InputFile - val pluginEnvFile = objects.fileProperty() + val pluginEnvFile = project.filePropertyCompat() private val pluginEnv: BuildEnv by lazy { pluginEnvFile.get().asFile.source().buffer().use { src -> diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/NixEnv.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/NixEnv.kt index b28910c..bb4c187 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/NixEnv.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/NixEnv.kt @@ -1,3 +1,5 @@ +@file:Suppress("UnstableApiUsage") + package org.nixos.gradle2nix import com.squareup.moshi.JsonClass @@ -6,26 +8,23 @@ import okio.sink import org.gradle.api.DefaultTask import org.gradle.api.artifacts.repositories.ArtifactRepository import org.gradle.api.artifacts.repositories.MavenArtifactRepository -import org.gradle.api.file.ProjectLayout -import org.gradle.api.model.ObjectFactory import org.gradle.api.tasks.Internal import org.gradle.api.tasks.OutputFile import org.gradle.api.tasks.TaskAction import java.net.URI -import javax.inject.Inject -abstract class NixEnv(layout: ProjectLayout, objects: ObjectFactory): DefaultTask() { +abstract class NixEnv: DefaultTask() { abstract fun environment(): String abstract fun repositories(): List abstract fun artifacts(): List abstract fun filename(): String @Internal - val outputDir = objects.directoryProperty() - .conventionCompat(layout.buildDirectory.dir("nix")) + val outputDir = project.directoryPropertyCompat() + .conventionCompat(project.layout.buildDirectory.dir("nix")) @OutputFile - val outputFile = objects.fileProperty() + val outputFile = project.filePropertyCompat() .conventionCompat(outputDir.map { it.file(filename()) }) @TaskAction diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/NixGradleDist.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/NixGradleDist.kt index 84bf2ce..b8c3c2b 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/NixGradleDist.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/NixGradleDist.kt @@ -4,26 +4,22 @@ import com.squareup.moshi.JsonClass import okio.buffer import okio.sink import org.gradle.api.DefaultTask -import org.gradle.api.model.ObjectFactory import org.gradle.api.tasks.Input import org.gradle.api.tasks.OutputDirectory import org.gradle.api.tasks.OutputFile import org.gradle.api.tasks.TaskAction import org.gradle.kotlin.dsl.property import java.io.Serializable -import javax.inject.Inject -open class NixGradleDist @Inject constructor( - objects: ObjectFactory -) : DefaultTask() { +open class NixGradleDist : DefaultTask() { @Input - internal val gradleDist = objects.property() + internal val gradleDist = project.objects.property() @OutputDirectory - val outputDir = objects.directoryProperty() + val outputDir = project.directoryPropertyCompat() @OutputFile - val outputFile = objects.fileProperty() + val outputFile = project.filePropertyCompat() .conventionCompat(outputDir.file("gradle-dist.json")) @TaskAction diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/NixGradleEnv.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/NixGradleEnv.kt index da77487..3e274ed 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/NixGradleEnv.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/NixGradleEnv.kt @@ -5,15 +5,11 @@ import okio.buffer import okio.sink import okio.source import org.gradle.api.DefaultTask -import org.gradle.api.file.RegularFile import org.gradle.api.model.ObjectFactory -import org.gradle.api.tasks.Input import org.gradle.api.tasks.InputFiles import org.gradle.api.tasks.Internal -import org.gradle.api.tasks.OutputDirectory import org.gradle.api.tasks.OutputFile import org.gradle.api.tasks.TaskAction -import org.gradle.kotlin.dsl.listProperty import javax.inject.Inject open class NixGradleEnv @Inject constructor( diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/NixPluginEnv.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/NixPluginEnv.kt index 215febc..0cbb2dd 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/NixPluginEnv.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/NixPluginEnv.kt @@ -1,10 +1,8 @@ package org.nixos.gradle2nix import org.gradle.api.artifacts.ExternalModuleDependency -import org.gradle.api.file.ProjectLayout import org.gradle.api.internal.artifacts.ivyservice.ivyresolve.strategy.VersionSelectorScheme import org.gradle.api.internal.plugins.PluginImplementation -import org.gradle.api.model.ObjectFactory import org.gradle.plugin.management.PluginRequest import org.gradle.plugin.management.internal.PluginRequestInternal import org.gradle.plugin.use.PluginId @@ -17,12 +15,10 @@ import java.net.URI import javax.inject.Inject open class NixPluginEnv @Inject constructor( - layout: ProjectLayout, - objects: ObjectFactory, private val pluginDependencyResolutionServices: PluginDependencyResolutionServices, versionSelectorScheme: VersionSelectorScheme, private val pluginRequests: Collection -) : NixEnv(layout, objects) { +) : NixEnv() { private val repositories by lazy { pluginDependencyResolutionServices.resolveRepositoryHandler } diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/NixProjectEnv.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/NixProjectEnv.kt index a40a418..93d1910 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/NixProjectEnv.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/NixProjectEnv.kt @@ -1,20 +1,13 @@ package org.nixos.gradle2nix -import org.gradle.api.file.ProjectLayout -import org.gradle.api.model.ObjectFactory import org.gradle.api.tasks.Input import org.gradle.api.tasks.Optional -import org.gradle.kotlin.dsl.setProperty +import org.gradle.kotlin.dsl.listProperty import java.net.URI -import javax.inject.Inject -open class NixProjectEnv @Inject constructor( - layout: ProjectLayout, - objects: ObjectFactory -) : NixEnv(layout, objects) { +open class NixProjectEnv : NixEnv() { @Input @Optional - val configurations = objects.setProperty().empty() - + val configurations = project.objects.listProperty().conventionCompat(emptyList()) private val resolveConfigurations by lazy { val configs = configurations.get() diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/Resolver.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/Resolver.kt index 23af5a5..bd58295 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/Resolver.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/Resolver.kt @@ -1,10 +1,6 @@ package org.nixos.gradle2nix -import okio.ByteString -import okio.HashingSource -import okio.blackholeSink -import okio.buffer -import okio.source +import okio.* import org.apache.maven.model.Parent import org.apache.maven.model.Repository import org.apache.maven.model.building.DefaultModelBuilderFactory