ci/build-helpers/cli/build.gradle.kts (62 lines of code) (raw):

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) }) user.set(mavenCentral.user) password.set(mavenCentral.password) deployName.set(mavenCentral.deployName) publishAfterUploading.set(mavenCentral.publishAfterUploading) } 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") ) }