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
7 changes: 7 additions & 0 deletions nmcp/api/nmcp.api
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,16 @@ public abstract class nmcp/CentralPortalOptions {
public abstract fun getValidationTimeout ()Lorg/gradle/api/provider/Property;
}

public abstract class nmcp/LocalRepositoryOptions {
public fun <init> ()V
public abstract fun getName ()Lorg/gradle/api/provider/Property;
public abstract fun getPath ()Lorg/gradle/api/provider/Property;
}

public abstract interface class nmcp/NmcpAggregationExtension {
public abstract fun centralPortal (Lorg/gradle/api/Action;)V
public abstract fun getAllFiles ()Lorg/gradle/api/file/FileCollection;
public abstract fun localRepository (Lorg/gradle/api/Action;)V
public abstract fun publishAllProjectsProbablyBreakingProjectIsolation ()V
}

Expand Down
15 changes: 15 additions & 0 deletions nmcp/src/main/kotlin/nmcp/LocalRepositoryOptions.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package nmcp

import org.gradle.api.provider.Property

abstract class LocalRepositoryOptions {
/**
* The name of the repository
*/
abstract val name: Property<String>

/**
* The path. Relative paths are interpreted relative to the project directory.
*/
abstract val path: Property<String>
}
5 changes: 5 additions & 0 deletions nmcp/src/main/kotlin/nmcp/NmcpAggregationExtension.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@ interface NmcpAggregationExtension {
*/
fun centralPortal(action: Action<CentralPortalOptions>)

/**
* Registers an extra task to publish the aggregation to.
*/
fun localRepository(action: Action<LocalRepositoryOptions>)

/**
* Applies the `com.gradleup.nmcp` plugin to every project that also applies `maven-publish`.
*
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
package nmcp.internal

import gratatouille.GExtension
import gratatouille.GPlugin
import gratatouille.capitalizeFirstLetter
import java.io.File
import nmcp.CentralPortalOptions
import nmcp.NmcpAggregationExtension
import nmcp.LocalRepositoryOptions
import nmcp.internal.task.registerNmcpPublishFileByFileToFileSystemTask
import nmcp.nmcpAggregationExtensionName
import org.gradle.api.Action
import org.gradle.api.Project
import org.gradle.api.artifacts.result.ArtifactResult
import org.gradle.api.artifacts.result.ResolvedArtifactResult
import org.gradle.api.attributes.Usage
import org.gradle.api.file.ConfigurableFileCollection
import org.gradle.api.file.FileCollection
import org.gradle.api.file.RegularFileProperty

@GExtension(
pluginId = "com.gradleup.nmcp.aggregation",
Expand Down Expand Up @@ -53,6 +54,17 @@ internal abstract class DefaultNmcpAggregationExtension(private val project: Pro
action.execute(spec)
}

override fun localRepository(action: Action<LocalRepositoryOptions>) {
val options = project.objects.newInstance(LocalRepositoryOptions::class.java)
action.execute(options)
project.registerNmcpPublishFileByFileToFileSystemTask(
taskName = "nmcpPublishAggregationTo${options.name.get().capitalizeFirstLetter()}Repository",
inputFiles = allFiles,
m2AbsolutePath = project.provider { File(options.path.get()).absolutePath },
parallelism = project.provider { 1 },
)
}

@Deprecated("Use the settings plugin or a convention plugin instead")
override fun publishAllProjectsProbablyBreakingProjectIsolation() {
check(project === project.rootProject) {
Expand Down