|
|
|
import org.jetbrains.compose.internal.publishing.*
|
|
|
|
|
|
|
|
plugins {
|
|
|
|
signing
|
|
|
|
}
|
|
|
|
|
|
|
|
val mavenCentral = MavenCentralProperties(project)
|
|
|
|
if (mavenCentral.signArtifacts) {
|
|
|
|
signing.useInMemoryPgpKeys(
|
|
|
|
mavenCentral.signArtifactsKey.get(),
|
|
|
|
mavenCentral.signArtifactsPassword.get()
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
val publishingDir = project.layout.buildDirectory.dir("publishing")
|
|
|
|
val originalArtifactsRoot = publishingDir.map { it.dir("original") }
|
|
|
|
val preparedArtifactsRoot = publishingDir.map { it.dir("prepared") }
|
|
|
|
val modulesFile = publishingDir.map { it.file("modules.txt") }
|
|
|
|
|
|
|
|
val findComposeModules by tasks.registering(FindModulesInSpaceTask::class) {
|
|
|
|
requestedCoordinates.set(mavenCentral.coordinates)
|
|
|
|
spaceInstanceUrl.set("https://public.jetbrains.space")
|
|
|
|
spaceClientId.set(System.getenv("COMPOSE_REPO_USERNAME") ?: "")
|
|
|
|
spaceClientSecret.set(System.getenv("COMPOSE_REPO_KEY") ?: "")
|
|
|
|
spaceProjectId.set(System.getenv("COMPOSE_DEV_REPO_PROJECT_ID") ?: "")
|
|
|
|
spaceRepoId.set(System.getenv("COMPOSE_DEV_REPO_REPO_ID") ?: "")
|
|
|
|
modulesTxtFile.set(modulesFile)
|
|
|
|
}
|
|
|
|
|
|
|
|
val downloadArtifactsFromComposeDev by tasks.registering(DownloadFromSpaceMavenRepoTask::class) {
|
|
|
|
dependsOn(findComposeModules)
|
|
|
|
modulesToDownload.set(project.provider {
|
|
|
|
readComposeModules(
|
|
|
|
modulesFile,
|
|
|
|
originalArtifactsRoot
|
|
|
|
)
|
|
|
|
})
|
|
|
|
spaceRepoUrl.set("https://maven.pkg.jetbrains.space/public/p/compose/dev")
|
|
|
|
}
|
|
|
|
|
|
|
|
val fixModulesBeforePublishing by tasks.registering(FixModulesBeforePublishingTask::class) {
|
|
|
|
dependsOn(downloadArtifactsFromComposeDev)
|
|
|
|
inputRepoDir.set(originalArtifactsRoot)
|
|
|
|
outputRepoDir.set(preparedArtifactsRoot)
|
|
|
|
}
|
|
|
|
|
|
|
|
val reuploadArtifactsToMavenCentral by tasks.registering(UploadToSonatypeTask::class) {
|
|
|
|
dependsOn(fixModulesBeforePublishing)
|
|
|
|
|
|
|
|
modulesToUpload.set(project.provider { readComposeModules(modulesFile, preparedArtifactsRoot) })
|
|
|
|
|
|
|
|
sonatypeServer.set("https://oss.sonatype.org")
|
|
|
|
user.set(mavenCentral.user)
|
|
|
|
password.set(mavenCentral.password)
|
|
|
|
autoCommitOnSuccess.set(mavenCentral.autoCommitOnSuccess)
|
|
|
|
stagingProfileName.set(mavenCentral.stage)
|
|
|
|
stagingDescription.set(mavenCentral.description)
|
|
|
|
}
|
|
|
|
|
|
|
|
fun readComposeModules(
|
|
|
|
modulesFile: Provider<out FileSystemLocation>,
|
|
|
|
repoRoot: Provider<out FileSystemLocation>
|
|
|
|
): List<ModuleToUpload> =
|
|
|
|
modulesFile.get().asFile.readLines()
|
|
|
|
.filter { it.isNotBlank() }
|
|
|
|
.map { line ->
|
|
|
|
val (group, artifact, version) = line.split(":")
|
|
|
|
ModuleToUpload(
|
|
|
|
groupId = group,
|
|
|
|
artifactId = artifact,
|
|
|
|
version = version,
|
|
|
|
localDir = repoRoot.get().asFile.resolve("$group/$artifact/$version")
|
|
|
|
)
|
|
|
|
}
|