Skip to content

Commit 2f23b4e

Browse files
authored
Add NmcpAggregationExtension.localRepository() (#234)
1 parent 77709f6 commit 2f23b4e

File tree

4 files changed

+42
-3
lines changed

4 files changed

+42
-3
lines changed

nmcp/api/nmcp.api

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,16 @@ public abstract class nmcp/CentralPortalOptions {
1010
public abstract fun getValidationTimeout ()Lorg/gradle/api/provider/Property;
1111
}
1212

13+
public abstract class nmcp/LocalRepositoryOptions {
14+
public fun <init> ()V
15+
public abstract fun getName ()Lorg/gradle/api/provider/Property;
16+
public abstract fun getPath ()Lorg/gradle/api/provider/Property;
17+
}
18+
1319
public abstract interface class nmcp/NmcpAggregationExtension {
1420
public abstract fun centralPortal (Lorg/gradle/api/Action;)V
1521
public abstract fun getAllFiles ()Lorg/gradle/api/file/FileCollection;
22+
public abstract fun localRepository (Lorg/gradle/api/Action;)V
1623
public abstract fun publishAllProjectsProbablyBreakingProjectIsolation ()V
1724
}
1825

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package nmcp
2+
3+
import org.gradle.api.provider.Property
4+
5+
abstract class LocalRepositoryOptions {
6+
/**
7+
* The name of the repository
8+
*/
9+
abstract val name: Property<String>
10+
11+
/**
12+
* The path. Relative paths are interpreted relative to the project directory.
13+
*/
14+
abstract val path: Property<String>
15+
}

nmcp/src/main/kotlin/nmcp/NmcpAggregationExtension.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@ interface NmcpAggregationExtension {
99
*/
1010
fun centralPortal(action: Action<CentralPortalOptions>)
1111

12+
/**
13+
* Registers an extra task to publish the aggregation to.
14+
*/
15+
fun localRepository(action: Action<LocalRepositoryOptions>)
16+
1217
/**
1318
* Applies the `com.gradleup.nmcp` plugin to every project that also applies `maven-publish`.
1419
*

nmcp/src/main/kotlin/nmcp/internal/DefaultNmcpAggregationExtension.kt

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
package nmcp.internal
22

33
import gratatouille.GExtension
4-
import gratatouille.GPlugin
4+
import gratatouille.capitalizeFirstLetter
5+
import java.io.File
56
import nmcp.CentralPortalOptions
67
import nmcp.NmcpAggregationExtension
8+
import nmcp.LocalRepositoryOptions
9+
import nmcp.internal.task.registerNmcpPublishFileByFileToFileSystemTask
710
import nmcp.nmcpAggregationExtensionName
811
import org.gradle.api.Action
912
import org.gradle.api.Project
1013
import org.gradle.api.artifacts.result.ArtifactResult
1114
import org.gradle.api.artifacts.result.ResolvedArtifactResult
1215
import org.gradle.api.attributes.Usage
1316
import org.gradle.api.file.ConfigurableFileCollection
14-
import org.gradle.api.file.FileCollection
15-
import org.gradle.api.file.RegularFileProperty
1617

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

57+
override fun localRepository(action: Action<LocalRepositoryOptions>) {
58+
val options = project.objects.newInstance(LocalRepositoryOptions::class.java)
59+
action.execute(options)
60+
project.registerNmcpPublishFileByFileToFileSystemTask(
61+
taskName = "nmcpPublishAggregationTo${options.name.get().capitalizeFirstLetter()}Repository",
62+
inputFiles = allFiles,
63+
m2AbsolutePath = project.provider { File(options.path.get()).absolutePath },
64+
parallelism = project.provider { 1 },
65+
)
66+
}
67+
5668
@Deprecated("Use the settings plugin or a convention plugin instead")
5769
override fun publishAllProjectsProbablyBreakingProjectIsolation() {
5870
check(project === project.rootProject) {

0 commit comments

Comments
 (0)