diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt index 921ac1b..488f48f 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt @@ -133,6 +133,8 @@ class Gradle2Nix : CliktCommand( metadata.delete() backup.renameTo(metadata) }) + } else { + metadata.deleteOnExit() } } diff --git a/build.gradle.kts b/build.gradle.kts index 23cfb74..1193cf2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -2,10 +2,8 @@ plugins { base alias(libs.plugins.kotlin.jvm) apply false alias(libs.plugins.kotlin.serialization) apply false - alias(libs.plugins.ksp) apply false alias(libs.plugins.pluginPublish) apply false alias(libs.plugins.shadow) apply false - alias(libs.plugins.stutter) apply false } group = "org.nixos.gradle2nix" diff --git a/gradle/dependency-locks/settings-classpath.lockfile b/gradle/dependency-locks/settings-classpath.lockfile deleted file mode 100644 index 70eac8e..0000000 --- a/gradle/dependency-locks/settings-classpath.lockfile +++ /dev/null @@ -1,52 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -com.fasterxml.jackson.core:jackson-annotations:2.12.1 -com.fasterxml.jackson.core:jackson-core:2.12.1 -com.fasterxml.jackson.core:jackson-databind:2.12.1 -com.fasterxml.jackson:jackson-bom:2.12.1 -com.github.gundy:semver4j:0.16.4 -com.github.jengelman.gradle.plugins:shadow:6.1.0 -com.github.johnrengelman.shadow:com.github.johnrengelman.shadow.gradle.plugin:6.1.0 -com.google.code.gson:gson:2.8.6 -commons-io:commons-io:2.6 -de.undercouch:gradle-download-task:4.0.2 -org.ajoberstar.stutter:org.ajoberstar.stutter.gradle.plugin:0.6.0 -org.ajoberstar:gradle-stutter:0.6.0 -org.antlr:antlr4-runtime:4.5.2-1 -org.apache.ant:ant-launcher:1.9.7 -org.apache.ant:ant:1.9.7 -org.apache.logging.log4j:log4j-api:2.13.3 -org.apache.logging.log4j:log4j-core:2.13.3 -org.codehaus.plexus:plexus-utils:3.0.24 -org.jdom:jdom2:2.0.6 -org.jetbrains.intellij.deps:trove4j:1.0.20181211 -org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:1.4.20 -org.jetbrains.kotlin.kapt:org.jetbrains.kotlin.kapt.gradle.plugin:1.4.20 -org.jetbrains.kotlin:kotlin-android-extensions:1.4.20 -org.jetbrains.kotlin:kotlin-annotation-processing-gradle:1.4.20 -org.jetbrains.kotlin:kotlin-build-common:1.4.20 -org.jetbrains.kotlin:kotlin-compiler-embeddable:1.4.20 -org.jetbrains.kotlin:kotlin-compiler-runner:1.4.20 -org.jetbrains.kotlin:kotlin-daemon-client:1.4.20 -org.jetbrains.kotlin:kotlin-daemon-embeddable:1.4.20 -org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.4.20 -org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.4.20 -org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.20 -org.jetbrains.kotlin:kotlin-reflect:1.4.20 -org.jetbrains.kotlin:kotlin-script-runtime:1.4.20 -org.jetbrains.kotlin:kotlin-scripting-common:1.4.20 -org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.4.20 -org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.4.20 -org.jetbrains.kotlin:kotlin-scripting-jvm:1.4.20 -org.jetbrains.kotlin:kotlin-stdlib-common:1.4.20 -org.jetbrains.kotlin:kotlin-stdlib:1.4.20 -org.jetbrains.kotlin:kotlin-util-io:1.4.20 -org.jetbrains.kotlin:kotlin-util-klib:1.4.20 -org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.7 -org.jetbrains:annotations:13.0 -org.ow2.asm:asm-analysis:9.0 -org.ow2.asm:asm-commons:9.0 -org.ow2.asm:asm-tree:9.0 -org.ow2.asm:asm:9.0 -org.vafer:jdependency:2.1.1 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ffd526f..e9be1d9 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,43 +1,25 @@ [versions] gradle = "8.3" kotlin = "1.9.0" # Current embedded Gradle kotlin version -ksp = "1.9.0-1.0.13" [libraries] clikt = "com.github.ajalt:clikt:+" -gradle-dependencyGraph = "org.gradle:github-dependency-graph-gradle-plugin:+" gradle-toolingApi = { module = "org.gradle:gradle-tooling-api", version.ref = "gradle" } -ivy = "org.apache.ivy:ivy:+" -javalin = "io.javalin:javalin:+" junit-jupiter-api = "org.junit.jupiter:junit-jupiter-api:+" junit-jupiter-engine = "org.junit.jupiter:junit-jupiter-engine:+" junit-jupiter-params = "org.junit.jupiter:junit-jupiter-params:+" junit-platformLauncher = "org.junit.platform:junit-platform-launcher:+" kotest-runner = "io.kotest:kotest-runner-junit5:+" kotest-assertions = "io.kotest:kotest-assertions-core:+" -maven-repositoryMetadata = "org.apache.maven:maven-repository-metadata:+" -minutest = "dev.minutest:minutest:+" -moshi = "com.squareup.moshi:moshi:+" -moshi-adapters = "com.squareup.moshi:moshi-adapters:+" -moshi-kotlin = "com.squareup.moshi:moshi-kotlin:+" -moshi-kotlinCodegen = "com.squareup.moshi:moshi-kotlin-codegen:+" okio = "com.squareup.okio:okio:+" -s3 = "com.amazonaws:aws-java-sdk-s3:+" -s3mock = "com.adobe.testing:s3mock-junit5:+" -semver = "net.swiftzer.semver:semver:+" serialization-json = "org.jetbrains.kotlinx:kotlinx-serialization-json:+" slf4j-api = "org.slf4j:slf4j-api:+" slf4j-simple = "org.slf4j:slf4j-simple:+" -spek-dsl = "org.spekframework.spek2:spek-dsl-jvm:+" -spek-runner = "org.spekframework.spek2:spek-runner-junit5:+" -strikt = "io.strikt:strikt-core:+" [plugins] pluginPublish = { id = "com.gradle.plugin-publish", version = "1.2.1" } kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } -ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } shadow = { id = "com.github.johnrengelman.shadow", version = "8.1.1" } -stutter = { id = "org.ajoberstar.stutter", version = "0.7.2" } [bundles] diff --git a/model/build.gradle.kts b/model/build.gradle.kts index b12db2a..8946155 100644 --- a/model/build.gradle.kts +++ b/model/build.gradle.kts @@ -7,7 +7,6 @@ plugins { dependencies { implementation(libs.serialization.json) - implementation(libs.semver) } java { diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/NixDependencyGraphRenderer.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/NixDependencyGraphRenderer.kt index 2f23bbd..997c92f 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/NixDependencyGraphRenderer.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/NixDependencyGraphRenderer.kt @@ -7,6 +7,12 @@ import kotlinx.serialization.json.encodeToStream import org.nixos.gradle2nix.dependencygraph.DependencyGraphRenderer import org.nixos.gradle2nix.dependencygraph.model.ResolvedConfiguration +@OptIn(ExperimentalSerializationApi::class) +private val json = Json { + prettyPrint = true + prettyPrintIndent = " " +} + class NixDependencyGraphRenderer : DependencyGraphRenderer { @OptIn(ExperimentalSerializationApi::class) override fun outputDependencyGraph( @@ -15,7 +21,7 @@ class NixDependencyGraphRenderer : DependencyGraphRenderer { ) { val graphOutputFile = File(outputDirectory, "dependency-graph.json") graphOutputFile.outputStream().buffered().use { output -> - Json.encodeToStream(resolvedConfigurations, output) + json.encodeToStream(resolvedConfigurations, output) } } } diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/AbstractDependencyExtractorPlugin.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/AbstractDependencyExtractorPlugin.kt index 427b1e7..6aa4352 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/AbstractDependencyExtractorPlugin.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/AbstractDependencyExtractorPlugin.kt @@ -8,6 +8,7 @@ import org.gradle.util.GradleVersion import org.nixos.gradle2nix.dependencygraph.extractor.DependencyExtractor import org.nixos.gradle2nix.dependencygraph.extractor.DependencyExtractorBuildService import org.nixos.gradle2nix.dependencygraph.extractor.LegacyDependencyExtractor +import org.nixos.gradle2nix.dependencygraph.util.buildDirCompat import org.nixos.gradle2nix.dependencygraph.util.service abstract class AbstractDependencyExtractorPlugin : Plugin { @@ -35,7 +36,7 @@ abstract class AbstractDependencyExtractorPlugin : Plugin { gradle.rootProject { project -> dependencyExtractorProvider .get() - .rootProjectBuildDirectory = project.buildDir + .rootProjectBuildDirectory = project.buildDirCompat } // Register the service to listen for Build Events diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/util/GradleExtensions.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/util/GradleExtensions.kt index b45d034..c9d65ef 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/util/GradleExtensions.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/dependencygraph/util/GradleExtensions.kt @@ -1,10 +1,13 @@ package org.nixos.gradle2nix.dependencygraph.util +import java.io.File +import org.gradle.api.Project import org.gradle.api.internal.GradleInternal import org.gradle.api.invocation.Gradle import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.ProviderFactory import org.gradle.internal.operations.BuildOperationListenerManager +import org.gradle.util.GradleVersion internal abstract class GradleExtensions { @@ -17,3 +20,11 @@ internal abstract class GradleExtensions { internal inline fun Gradle.service(): T = (this as GradleInternal).services.get(T::class.java) + +internal val Project.buildDirCompat: File + get() = if (GradleVersion.current() < GradleVersion.version("8.3")) { + @Suppress("DEPRECATION") + buildDir + } else { + layout.buildDirectory.asFile.get() + }