⚠ This page is served via a proxy. Original site: https://github.com
This service does not collect credentials or authentication data.
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ ksp = "2.3.4"
gratatouille-runtime = "0.2.1"
gratatouille-plugin = "0.2.1"
gradle-api = "8.8"
nmcp = "1.4.3-SNAPSHOT-90daa7892c17ddc91e613423be6948a7b4b5be65"
nmcp = "1.4.4-SNAPSHOT-dfc48516d359dd9920a19344f1a56d8243d4ae0a"

[libraries]
json = "org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0"
Expand Down
10 changes: 5 additions & 5 deletions nmcp-tasks/api/nmcp-tasks.api
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@ public final class nmcp/internal/task/CleanupDirectoryEntryPoint$Companion {
public final fun run (Ljava/lang/String;)V
}

public final class nmcp/internal/task/NmcpFindDeploymentNameEntryPoint {
public static final field Companion Lnmcp/internal/task/NmcpFindDeploymentNameEntryPoint$Companion;
public final class nmcp/internal/task/NmcpCheckFilesEntryPoint {
public static final field Companion Lnmcp/internal/task/NmcpCheckFilesEntryPoint$Companion;
public fun <init> ()V
public static final fun run (Ljava/util/List;Ljava/io/File;)V
public static final fun run (Ljava/util/List;Ljava/io/File;Z)V
}

public final class nmcp/internal/task/NmcpFindDeploymentNameEntryPoint$Companion {
public final fun run (Ljava/util/List;Ljava/io/File;)V
public final class nmcp/internal/task/NmcpCheckFilesEntryPoint$Companion {
public final fun run (Ljava/util/List;Ljava/io/File;Z)V
}

public final class nmcp/internal/task/NmcpPublishFileByFileToFileSystemEntryPoint {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,15 @@ import kotlin.text.endsWith
import kotlin.text.substringBeforeLast


/**
* Check the validity of the input files and outputs the name of the deployment
*/
@GTask
internal fun nmcpFindDeploymentName(inputFiles: GInputFiles, outputFile: GOutputFile) {
val gavs = inputFiles.mapNotNull {
internal fun nmcpCheckFiles(inputFiles: GInputFiles, outputFile: GOutputFile, allowEmptyFiles: Boolean) {
check(allowEmptyFiles || inputFiles.isNotEmpty()) {
"Nmcp: there are no files to publish. Double check your configuration."
}
val gavs = inputFiles.mapNotNull {
if (!it.normalizedPath.endsWith(".pom")) {
return@mapNotNull null
}
Expand Down
5 changes: 3 additions & 2 deletions nmcp-tasks/src/test/kotlin/FindDeploymentNameTest.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import gratatouille.tasks.FileWithPath
import java.io.File
import kotlin.test.assertEquals
import nmcp.internal.task.nmcpFindDeploymentName
import nmcp.internal.task.nmcpCheckFiles
import org.junit.Rule
import org.junit.Test
import org.junit.rules.TemporaryFolder
Expand All @@ -13,9 +13,10 @@ class FindDeploymentNameTest {

private fun assertDeploymentName(inputFiles: List<String>, expected: String) {
val output = tmp.newFile("output.txt")
nmcpFindDeploymentName(
nmcpCheckFiles(
inputFiles = inputFiles.map { FileWithPath(File(it), normalizedPath = it) },
outputFile = output,
allowEmptyFiles = false
)
assertEquals(expected, output.readText())
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package nmcp.internal

import gratatouille.GExtension
import gratatouille.capitalizeFirstLetter
import java.io.File
import nmcp.CentralPortalOptions
import nmcp.NmcpAggregationExtension
import nmcp.LocalRepositoryOptions
Expand Down Expand Up @@ -48,6 +47,7 @@ internal abstract class DefaultNmcpAggregationExtension(private val project: Pro
kind = Kind.aggregation,
inputFiles = allFiles,
spec = spec,
allowEmptyFiles = allowEmptyAggregation
)

project.afterEvaluate {
Expand All @@ -65,12 +65,6 @@ internal abstract class DefaultNmcpAggregationExtension(private val project: Pro
allNames.add(it.name.lowercase())
}
}

if (!allowEmptyAggregation.orElse(false).get()) {
check(consumerConfiguration.dependencies.isNotEmpty()) {
"Nmcp: the aggregation is empty. This is usually a misconfiguration. If this is intentional, set `allowEmptyAggregation` to true."
}
}
}
}

Expand Down
3 changes: 2 additions & 1 deletion nmcp/src/main/kotlin/nmcp/internal/DefaultNmcpExtension.kt
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,8 @@ internal abstract class DefaultNmcpExtension(private val project: Project): Nmcp
project.registerPublishToCentralPortalTasks(
kind = Kind.allPublications,
inputFiles = m2Files,
spec = spec
spec = spec,
allowEmptyFiles = project.provider { false }
)
}
}
Expand Down
23 changes: 13 additions & 10 deletions nmcp/src/main/kotlin/nmcp/internal/utils.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,16 @@ package nmcp.internal
import gratatouille.capitalizeFirstLetter
import java.io.File
import nmcp.CentralPortalOptions
import nmcp.internal.task.registerNmcpFindDeploymentNameTask
import nmcp.internal.task.registerNmcpCheckFilesTask
import nmcp.internal.task.registerNmcpPublishFileByFileToFileSystemTask
import nmcp.internal.task.registerNmcpPublishFileByFileToSnapshotsTask
import nmcp.internal.task.registerNmcpPublishWithPublisherApiTask
import org.gradle.api.Action
import org.gradle.api.Named
import org.gradle.api.Project
import org.gradle.api.attributes.Attribute
import org.gradle.api.attributes.HasConfigurableAttributes
import org.gradle.api.attributes.Usage
import org.gradle.api.attributes.Usage.USAGE_ATTRIBUTE
import org.gradle.api.file.FileCollection
import org.gradle.api.provider.Provider
import org.gradle.api.publish.plugins.PublishingPlugin.PUBLISH_TASK_GROUP
import org.gradle.api.tasks.bundling.Zip

Expand Down Expand Up @@ -54,14 +52,15 @@ internal fun Project.registerPublishToCentralPortalTasks(
kind: Kind,
inputFiles: FileCollection,
spec: CentralPortalOptions,
allowEmptyFiles: Provider<Boolean>
) {
val name = kind.name

val releaseTaskName = "nmcpPublish${name.capitalizeFirstLetter()}ToCentralPortal"
val snapshotTaskName = "nmcpPublish${name.capitalizeFirstLetter()}ToCentralPortalSnapshots"
val localTaskName = "nmcpPublish${name.capitalizeFirstLetter()}ToMavenLocal"
val zipTaskName = "nmcpZip${name.capitalizeFirstLetter()}"
val findDeploymentNameTaskName = "nmcpFind${name.capitalizeFirstLetter()}DeploymentName"
val checkFilesTaskName = "nmcpCheck${name.capitalizeFirstLetter()}Files"

val description = when(name) {
"aggregation" -> "Publishes the aggregation"
Expand All @@ -72,6 +71,12 @@ internal fun Project.registerPublishToCentralPortalTasks(
val deprecatedLifecycleTaskName = "publish${name.capitalizeFirstLetter()}ToCentralPortalSnapshots"
val snapshotsLifecycleTaskName = "publish${name.capitalizeFirstLetter()}ToCentralSnapshots"

val checkFilesTaskProvider = registerNmcpCheckFilesTask(
allowEmptyFiles = allowEmptyFiles.orElse(false),
taskName = checkFilesTaskName,
inputFiles = inputFiles,
)

val zipName = "${name}.zip"
val zipTaskProvider = tasks.register(zipTaskName, Zip::class.java) {
it.from(inputFiles)
Expand All @@ -84,18 +89,16 @@ internal fun Project.registerPublishToCentralPortalTasks(
it.exclude()
}
}
it.dependsOn(checkFilesTaskProvider)
}

val findDeploymentNameTaskProvider = registerNmcpFindDeploymentNameTask(
taskName = findDeploymentNameTaskName,
inputFiles = inputFiles,
)

val task = registerNmcpPublishWithPublisherApiTask(
taskName = releaseTaskName,
inputFile = zipTaskProvider.flatMap { it.archiveFile },
username = spec.username,
password = spec.password,
publicationName = spec.publicationName.orElse(findDeploymentNameTaskProvider.flatMap { it.outputFile }.map { it.asFile.readText() }),
publicationName = spec.publicationName.orElse(checkFilesTaskProvider.flatMap { it.outputFile }.map { it.asFile.readText() }),
publishingType = spec.publishingType,
baseUrl = spec.baseUrl,
validationTimeoutSeconds = spec.validationTimeout.map { it.seconds },
Expand Down
4 changes: 2 additions & 2 deletions nmcp/src/test/kotlin/MainTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@ class MainTest {

val result = GradleRunner.create()
.withProjectDir(dst)
.withArguments("help")
.withArguments("nmcpZipAggregation")
.buildAndFail()

assert(result.output.contains("Nmcp: the aggregation is empty"))
assert(result.output.contains("Nmcp: there are no files to publish"))
}
}