Skip to content

Commit

Permalink
syncing
Browse files Browse the repository at this point in the history
  • Loading branch information
matheus-corregiari committed Jan 27, 2025
1 parent fbbfc03 commit 2af2d36
Show file tree
Hide file tree
Showing 6 changed files with 65 additions and 92 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,6 @@ internal class ToolkitTestPlugin : Plugin<Project> {
disable()
}
}
// with(target.koverReport) {
// defaults { reports ->
// reports.mergeWith("debug")
// }
// }

// Kover configuration
with(target.jacoco) { toolVersion = target.libs.version("jacoco") }
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.toolkit.plugin.android

import com.toolkit.plugin.util.attachAllTasksIntoAssembleRelease
import com.toolkit.plugin.util.configurePom
import com.toolkit.plugin.util.createLocalPathRepository
import com.toolkit.plugin.util.createSonatypeRepository
Expand Down Expand Up @@ -68,6 +69,9 @@ internal class ToolkitPublishPlugin : Plugin<Project> {
}
}

// Attach all needed tasks into assembleRelease task
target.attachAllTasksIntoAssembleRelease()

// Setup Signing
if (target.missing("signing.keyId", "signing.password", "signing.secretKeyRingFile")) {
println("Missing env variables")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.toolkit.plugin.multiplatform

import com.toolkit.plugin.util.attachAllTasksIntoAssembleRelease
import com.toolkit.plugin.util.createLocalPathRepository
import com.toolkit.plugin.util.createSonatypeRepository
import com.toolkit.plugin.util.missing
Expand Down Expand Up @@ -55,6 +56,9 @@ internal class ToolkitPublishPlugin : Plugin<Project> {
}
}

// Attach all needed tasks into assembleRelease task
target.attachAllTasksIntoAssembleRelease()

// Setup Signing
if (target.missing("signing.keyId", "signing.password", "signing.secretKeyRingFile")) {
println("Missing env variables")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,71 +1,32 @@
package com.toolkit.plugin.util

import org.gradle.api.Project
import org.gradle.api.tasks.javadoc.Javadoc
import org.gradle.jvm.tasks.Jar
import org.jetbrains.kotlin.konan.file.File
import org.jetbrains.dokka.gradle.DokkaTask

internal fun Project.setupJavadocAndSources() {
return
val sourcesJar = setupSources()
val javadocJar = setupJavadoc()
setupArtifacts(javadocJar, sourcesJar)

tasks.whenTaskAdded {
when (it.name) {
"assembleRelease" -> {
it.finalizedBy(sourcesJar, javadocJar)
}

"signJvmPublication" -> {
it.finalizedBy(sourcesJar, javadocJar)
}

"signToolkitPublication" -> {
it.dependsOn(sourcesJar, javadocJar)
}

"signKotlinMultiplatformPublication" -> {
it.dependsOn(sourcesJar, javadocJar)
}
}
}
}

private fun Project.setupJavadoc(): Jar {
configurations.maybeCreate("jacocoDeps")

val javadoc = tasks.register("javadoc", Javadoc::class.java) {
val list = ArrayList<java.io.File>()
androidLibrary2.sourceSets.forEach { set -> list.addAll(set.java.srcDirs) }

it.isFailOnError = false
it.setExcludes(listOf("**/*.kt", "**/*.java"))
it.source(list)
it.classpath += files(androidLibrary2.bootClasspath.joinToString(separator = File.separator))
it.classpath += configurations.named("jacocoDeps").get()
}.get()

return tasks.register("javadocJar", Jar::class.java) {
it.dependsOn(javadoc)
it.archiveClassifier.set("javadoc")
it.from(javadoc.destinationDir)
}.get()
setupSources()
setupJavadoc()
}

private fun Project.setupSources() = if (tasks.findByName("sourcesJar") == null) {
tasks.register("sourcesJar", Jar::class.java) {
val mainSource = androidLibrary2.sourceSets.named("main").get().java.srcDirs
it.from(mainSource)
it.archiveClassifier.set("sources")
private fun Project.setupJavadoc() {
applyPlugins("jetbrains-dokka")
tasks.register("javadocJar", Jar::class.java) { task ->
task.group = "documentation"
val dokka = task.project.tasks.named("dokkaHtml", DokkaTask::class.java)
task.dependsOn(dokka)
task.from(dokka.flatMap(DokkaTask::outputDirectory))
task.archiveClassifier.set("javadoc")
task.archiveFileName.set("${task.project.name}-release-javadoc.jar")
}.get()
} else {
tasks.named("sourcesJar", Jar::class.java).get()
}

private fun Project.setupArtifacts(javadoc: Jar, sources: Jar) {
artifacts {
it.add("archives", javadoc)
it.add("archives", sources)
private fun Project.setupSources() {
tasks.whenTaskAdded { task ->
if (task !is Jar) return@whenTaskAdded
when (task.name) {
"releaseSourcesJar" -> task.archiveFileName.set("${task.project.name}-release-sources.jar")
"debugSourcesJar" -> task.archiveFileName.set("${task.project.name}-debug-sources.jar")
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,17 @@ import com.android.build.api.variant.LibraryAndroidComponentsExtension
import com.android.build.gradle.BaseExtension
import io.gitlab.arturbosch.detekt.extensions.DetektExtension
import kotlinx.kover.gradle.plugin.dsl.KoverProjectExtension
//import kotlinx.kover.gradle.plugin.dsl.KoverReportExtension
import org.gradle.api.Project
import org.gradle.api.artifacts.VersionCatalog
import org.gradle.api.artifacts.VersionCatalogsExtension
import org.gradle.api.publish.PublishingExtension
import org.gradle.api.tasks.javadoc.Javadoc
import org.gradle.jvm.tasks.Jar
import org.gradle.plugins.signing.Sign
import org.gradle.plugins.signing.SigningExtension
import org.gradle.testing.jacoco.plugins.JacocoPluginExtension
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import org.jlleitschuh.gradle.ktlint.KtlintExtension
import com.android.build.gradle.LibraryExtension as LibraryExtension2

internal val Project.libs: VersionCatalog
@Throws(IllegalStateException::class)
Expand Down Expand Up @@ -50,21 +51,11 @@ internal val Project.kover: KoverProjectExtension
get() = extensions.findByType(KoverProjectExtension::class.java)
?: error("Project do not implement kover plugin!")

//internal val Project.koverReport: KoverReportExtension
// @Throws(IllegalStateException::class)
// get() = extensions.findByType(KoverReportExtension::class.java)
// ?: error("Project do not implement kover plugin!")

internal val Project.androidLibrary: LibraryExtension
@Throws(IllegalStateException::class)
get() = extensions.findByType(LibraryExtension::class.java)
?: error("Project do not implement android-library plugin!")

internal val Project.androidLibrary2: LibraryExtension2
@Throws(IllegalStateException::class)
get() = extensions.findByType(LibraryExtension2::class.java)
?: error("Project do not implement android-library plugin!")

internal val Project.androidApplication: ApplicationExtension
@Throws(IllegalStateException::class)
get() = extensions.findByType(ApplicationExtension::class.java)
Expand Down Expand Up @@ -95,11 +86,22 @@ internal val Project.sign: SigningExtension
get() = extensions.findByType(SigningExtension::class.java)
?: error("Project do not implement signing plugin!")

internal fun Project.applyPlugins(vararg id: String) {
id.forEach {
plugins.apply(libs.findPlugin(it).get().get().pluginId)
}
}
internal fun Project.applyPlugins(vararg id: String) =
id.forEach { plugins.apply(libs.findPlugin(it).get().get().pluginId) }

internal fun Project.hasPlugins(vararg id: String) =
id.all { plugins.hasPlugin(libs.findPlugin(it).get().get().pluginId) }

internal fun Project.attachAllTasksIntoAssembleRelease() = afterEvaluate { project ->
val all = project.tasks.filter { task ->
when (task) {
is Jar, is Sign, is Javadoc -> when {
task.name.contains("debug", true) -> false
else -> true
}

else -> false
}
}.map { project.tasks.named(it.name) }
project.tasks.findByName("assembleRelease")?.dependsOn(all)
}
31 changes: 19 additions & 12 deletions toolkit/multi/splinter/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,19 +1,26 @@
plugins {
id("toolkit-android-library")
id("toolkit-publish")
id("toolkit-multiplatform-library")
id("toolkit-multiplatform-publish")
}

android.namespace = "br.com.arch.toolkit.splinter"
android.buildFeatures.androidResources = false
android.buildFeatures.buildConfig = false

dependencies {
// Other Modules
implementation(project(":toolkit:multi:event-observer"))

kotlin {
// Libraries
compileOnly(libs.jetbrains.stdlib.jdk8)
compileOnly(libs.jetbrains.coroutines.core)
compileOnly(libs.jetbrains.coroutines.android)
compileOnly(libs.androidx.lifecycle.livedata)
compileOnly(libs.square.retrofit.main)
compileOnly(libs.square.timber)
sourceSets.commonMain.dependencies {
implementation(project(":toolkit:multi:event-observer"))

implementation(libs.jetbrains.coroutines.core)
implementation(libs.androidx.lifecycle.runtime)
implementation(libs.androidx.annotation)
}
sourceSets.androidMain.dependencies {
implementation(libs.androidx.lifecycle.livedata)
implementation(libs.jetbrains.coroutines.android)
implementation(libs.square.timber)
compileOnly(libs.square.okhttp.core)
compileOnly(libs.square.retrofit.main)
}
}

0 comments on commit 2af2d36

Please sign in to comment.