Skip to content

Commit ee5c5cf

Browse files
authored
Add publishFileByFile(File, File) helper function (#207)
1 parent 4b157e6 commit ee5c5cf

3 files changed

Lines changed: 28 additions & 2 deletions

File tree

nmcp/api/nmcp.api

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ public abstract interface class nmcp/transport/Content {
9494
}
9595

9696
public final class nmcp/transport/PublishFileByFileKt {
97+
public static final fun publishFileByFile (Ljava/io/File;Ljava/io/File;)V
9798
public static final fun publishFileByFile (Lnmcp/transport/Transport;Ljava/util/List;)V
9899
public static final fun publishFileByFile (Lnmcp/transport/Transport;Ljava/util/List;I)V
99100
}

nmcp/build.gradle.kts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ dependencies {
2727
implementation(libs.okio)
2828
implementation(libs.coroutines)
2929
implementation(libs.gratatouille.wiring.runtime)
30-
implementation(libs.gratatouille.tasks.runtime)
30+
api(libs.gratatouille.tasks.runtime) {
31+
because("publishFileByFile requires GInputFiles")
32+
}
3133
api(libs.okhttp)
3234
implementation(libs.xmlutil)
3335

nmcp/src/main/kotlin/nmcp/transport/publishFileByFile.kt

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package nmcp.transport
22

33
import gratatouille.tasks.FileWithPath
44
import gratatouille.tasks.GInputFiles
5+
import java.io.File
56
import java.security.MessageDigest
67
import java.time.Instant
78
import java.time.ZoneOffset
@@ -28,6 +29,27 @@ fun publishFileByFile(
2829
return publishFileByFile(transport, inputFiles, defaultParallelism)
2930
}
3031

32+
/**
33+
* Publishes to a local repository.
34+
*
35+
* [publishFileByFile] computes the group and version maven-metadata.xml files.
36+
*
37+
* @param from a directory containing the files to publish as a m2 layout without maven-metadata.xml.
38+
* @param into the destination directory.
39+
*/
40+
fun publishFileByFile(
41+
from: File,
42+
into: File,
43+
) {
44+
return publishFileByFile(
45+
FilesystemTransport(into.absolutePath),
46+
from.walk().filter { it.isFile }.map {
47+
FileWithPath(it, it.relativeTo(from).path)
48+
}.toList(),
49+
defaultParallelism,
50+
)
51+
}
52+
3153
fun publishFileByFile(
3254
transport: Transport,
3355
inputFiles: GInputFiles,
@@ -93,7 +115,8 @@ private fun publishGav(
93115
return@forEach
94116
}
95117
val artifact = Artifact.from(it.file.name, gav.artifactId, gav.baseVersion)
96-
val newVersion = "${gav.baseVersion.removeSuffix("-SNAPSHOT")}-${lastUpdated.asTimestamp(true)}-$buildNumber"
118+
val newVersion =
119+
"${gav.baseVersion.removeSuffix("-SNAPSHOT")}-${lastUpdated.asTimestamp(true)}-$buildNumber"
97120
val newArtifact = artifact.copy(version = newVersion)
98121
val newName = newArtifact.fileName()
99122
renamedFiles.add(FileWithPath(it.file, "$gavPath/${newName}"))

0 commit comments

Comments
 (0)