Skip to content

Support override return type generic #102

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 10 commits into
base: dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .run/PublishAllToLocal.run.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<ExternalSystemSettings>
<option name="env">
<map>
<entry key="SIMBOT_LOCAL" value="true" />
<entry key="IS_LOCAL" value="true" />
</map>
</option>
<option name="executionName" />
Expand Down
4 changes: 3 additions & 1 deletion buildSrc/src/main/kotlin/IProject.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ object IProject : ProjectDetail() {

// Remember the libs.versions.toml!
val ktVersion = "2.2.0"
val pluginVersion = "0.13.1"
val pluginVersion = "0.14.0"

override val version: String = "$ktVersion-$pluginVersion"

Expand Down Expand Up @@ -49,3 +49,5 @@ fun Project.setupWith(ktVersion: String) {
val mergedVersion = ktVersion + "-" + IProject.pluginVersion
version = if (IS_SNAPSHOT) "$mergedVersion-SNAPSHOT" else mergedVersion
}

fun isLocal(): Boolean = System.getenv("IS_LOCAL").toBoolean()
28 changes: 6 additions & 22 deletions buildSrc/src/main/kotlin/SigningConfigure.kt
Original file line number Diff line number Diff line change
@@ -1,22 +1,6 @@
import org.gradle.api.Action
import org.gradle.api.DomainObjectCollection
import org.gradle.api.Project
import org.gradle.api.publish.Publication
import org.gradle.plugins.signing.SigningExtension
import utils.systemProperty

fun SigningExtension.setupSigning(publications: DomainObjectCollection<Publication>) {
val keyId = systemProperty("GPG_KEY_ID")
val secretKey = systemProperty("GPG_SECRET_KEY")
val password = systemProperty("GPG_PASSWORD")

if (keyId != null) {
useInMemoryPgpKeys(keyId, secretKey, password)
}

setRequired(project.provider { project.gradle.taskGraph.hasTask("publish") })
sign(publications)
}

internal fun Project.`signing`(configure: Action<SigningExtension>): Unit =
(this as org.gradle.api.plugins.ExtensionAware).extensions.configure("signing", configure)
// import org.gradle.api.Action
// import org.gradle.api.Project
// import org.gradle.plugins.signing.SigningExtension
//
// internal fun Project.`signing`(configure: Action<SigningExtension>): Unit =
// (this as org.gradle.api.plugins.ExtensionAware).extensions.configure("signing", configure)
20 changes: 13 additions & 7 deletions buildSrc/src/main/kotlin/suspend-transform.dokka-module.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@ tasks.named("dokkaHtmlPartial").configure {

tasks.withType<org.jetbrains.dokka.gradle.DokkaTaskPartial>().configureEach {
dokkaSourceSets.configureEach {
val local = isLocal()
if (local) {
offlineMode = true
}

version = project.version
documentedVisibilities.set(
listOf(
Expand All @@ -32,7 +37,6 @@ tasks.withType<org.jetbrains.dokka.gradle.DokkaTaskPartial>().configureEach {
includes.from("README.md")
}


// sourceLink {
// localDirectory.set(projectDir.resolve("src"))
// val relativeTo = projectDir.relativeTo(rootProject.projectDir)
Expand All @@ -52,13 +56,15 @@ tasks.withType<org.jetbrains.dokka.gradle.DokkaTaskPartial>().configureEach {
}
}

// kotlin-coroutines doc
externalDocumentation(URL("https://kotlinlang.org/api/kotlinx.coroutines"))
if (!local) {
// kotlin-coroutines doc
externalDocumentation(URL("https://kotlinlang.org/api/kotlinx.coroutines"))

// kotlin-serialization doc
externalDocumentation(URL("https://kotlinlang.org/api/kotlinx.serialization"))
// kotlin-serialization doc
externalDocumentation(URL("https://kotlinlang.org/api/kotlinx.serialization"))

// SLF4J
externalDocumentation(URL("https://www.slf4j.org/apidocs"))
// SLF4J
externalDocumentation(URL("https://www.slf4j.org/apidocs"))
}
}
}
244 changes: 122 additions & 122 deletions buildSrc/src/main/kotlin/suspend-transform.jvm-maven-publish.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,122 +1,122 @@
import love.forte.gradle.common.core.Gpg
import love.forte.gradle.common.publication.configure.configPublishMaven
import love.forte.gradle.common.publication.configure.publishingExtension
import love.forte.gradle.common.publication.configure.setupPom
import love.forte.gradle.common.publication.configure.signingExtension
import utils.isMainPublishable

plugins {
id("signing")
id("maven-publish")
}

//setup(IProject)

//val (sonatypeUsername, sonatypePassword) = sonatypeUserInfoOrNull

//val sonatypeContains = sonatypeUserInfoOrNull != null
val gpgValue = Gpg.ofSystemPropOrNull()

// see https://github.com/gradle/gradle/issues/26091#issuecomment-1681343496

val p = project

if (isMainPublishable()) {
val isSnapshot = project.version.toString().contains("SNAPSHOT")
publishingExtension {
repositories {
mavenLocal()
if (isSnapshot) {
configPublishMaven(SnapshotRepository)
} else {
configPublishMaven(ReleaseRepository)
}
}
val jarSources = tasks.register("${p.name}SourceJar", Jar::class) {
archiveClassifier.set("sources")
from(sourceSets["main"].allSource)
}

val jarJavadoc = tasks.register("${p.name}JavadocJar", Jar::class) {
archiveClassifier.set("javadoc")
}

publications {
create<MavenPublication>("publicationDist") {
from(components.getByName("java"))
artifact(jarSources)
artifact(jarJavadoc)
version = p.version.toString()
setupPom(p.name, IProject)
}
}

signingExtension {
val gpg = gpgValue ?: return@signingExtension

val (keyId, secretKey, password) = gpg
useInMemoryPgpKeys(keyId, secretKey, password)
sign(publishingExtension.publications)
}
}
// jvmConfigPublishing {
// project = IProject
// isSnapshot = project.version.toString().contains("SNAPSHOT", true)
//
// val jarSources = tasks.register("${p.name}SourceJar", Jar::class) {
// archiveClassifier.set("sources")
// from(sourceSets["main"].allSource)
// }
//
// val jarJavadoc = tasks.register("${p.name}JavadocJar", Jar::class) {
//// dependsOn(tasks.dokkaHtml)
//// from(tasks.dokkaHtml.flatMap { it.outputDirectory })
// archiveClassifier.set("javadoc")
// }
//
// tasks.withType<GenerateModuleMetadata> {
// dependsOn(jarSources)
// dependsOn(jarJavadoc)
// }
//
// artifact(jarSources)
// artifact(jarJavadoc)
//
// releasesRepository = ReleaseRepository
// snapshotRepository = SnapshotRepository
//
// gpg = gpgValue
// }

}


signing {
isRequired = gpgValue != null
if (gpgValue != null) {
val (keyId, secretKey, password) = gpgValue
useInMemoryPgpKeys(keyId, secretKey, password)
sign(publishingExtension.publications)
}
}

// TODO see https://github.com/gradle-nexus/publish-plugin/issues/208#issuecomment-1465029831
val signingTasks: TaskCollection<Sign> = tasks.withType<Sign>()
tasks.withType<PublishToMavenRepository>().configureEach {
mustRunAfter(signingTasks)
}
// see https://github.com/gradle/gradle/issues/26091#issuecomment-1722947958
//region Fix Gradle warning about signing tasks using publishing task outputs without explicit dependencies
// https://github.com/gradle/gradle/issues/26091
//tasks.withType<AbstractPublishToMaven>().configureEach {
// val signingTasks = tasks.withType<Sign>()
// mustRunAfter(signingTasks)
//}
//endregion


inline val Project.sourceSets: SourceSetContainer
get() = extensions.getByName("sourceSets") as SourceSetContainer

internal val TaskContainer.dokkaHtml: TaskProvider<org.jetbrains.dokka.gradle.DokkaTask>
get() = named<org.jetbrains.dokka.gradle.DokkaTask>("dokkaHtml")
// import love.forte.gradle.common.core.Gpg
// import love.forte.gradle.common.publication.configure.configPublishMaven
// import love.forte.gradle.common.publication.configure.publishingExtension
// import love.forte.gradle.common.publication.configure.setupPom
// import love.forte.gradle.common.publication.configure.signingExtension
// import utils.isMainPublishable
//
// plugins {
// id("signing")
// id("maven-publish")
// }
//
// //setup(IProject)
//
// //val (sonatypeUsername, sonatypePassword) = sonatypeUserInfoOrNull
//
// //val sonatypeContains = sonatypeUserInfoOrNull != null
// val gpgValue = Gpg.ofSystemPropOrNull()
//
// // see https://github.com/gradle/gradle/issues/26091#issuecomment-1681343496
//
// val p = project
//
// if (isMainPublishable()) {
// val isSnapshot = project.version.toString().contains("SNAPSHOT")
// publishingExtension {
// repositories {
// mavenLocal()
// if (isSnapshot) {
// configPublishMaven(SnapshotRepository)
// } else {
// configPublishMaven(ReleaseRepository)
// }
// }
// val jarSources = tasks.register("${p.name}SourceJar", Jar::class) {
// archiveClassifier.set("sources")
// from(sourceSets["main"].allSource)
// }
//
// val jarJavadoc = tasks.register("${p.name}JavadocJar", Jar::class) {
// archiveClassifier.set("javadoc")
// }
//
// publications {
// create<MavenPublication>("publicationDist") {
// from(components.getByName("java"))
// artifact(jarSources)
// artifact(jarJavadoc)
// version = p.version.toString()
// setupPom(p.name, IProject)
// }
// }
//
// signingExtension {
// val gpg = gpgValue ?: return@signingExtension
//
// val (keyId, secretKey, password) = gpg
// useInMemoryPgpKeys(keyId, secretKey, password)
// sign(publishingExtension.publications)
// }
// }
// // jvmConfigPublishing {
// // project = IProject
// // isSnapshot = project.version.toString().contains("SNAPSHOT", true)
// //
// // val jarSources = tasks.register("${p.name}SourceJar", Jar::class) {
// // archiveClassifier.set("sources")
// // from(sourceSets["main"].allSource)
// // }
// //
// // val jarJavadoc = tasks.register("${p.name}JavadocJar", Jar::class) {
// //// dependsOn(tasks.dokkaHtml)
// //// from(tasks.dokkaHtml.flatMap { it.outputDirectory })
// // archiveClassifier.set("javadoc")
// // }
// //
// // tasks.withType<GenerateModuleMetadata> {
// // dependsOn(jarSources)
// // dependsOn(jarJavadoc)
// // }
// //
// // artifact(jarSources)
// // artifact(jarJavadoc)
// //
// // releasesRepository = ReleaseRepository
// // snapshotRepository = SnapshotRepository
// //
// // gpg = gpgValue
// // }
//
// }
//
//
// signing {
// isRequired = gpgValue != null
// if (gpgValue != null) {
// val (keyId, secretKey, password) = gpgValue
// useInMemoryPgpKeys(keyId, secretKey, password)
// sign(publishingExtension.publications)
// }
// }
//
// // TODO see https://github.com/gradle-nexus/publish-plugin/issues/208#issuecomment-1465029831
// val signingTasks: TaskCollection<Sign> = tasks.withType<Sign>()
// tasks.withType<PublishToMavenRepository>().configureEach {
// mustRunAfter(signingTasks)
// }
// // see https://github.com/gradle/gradle/issues/26091#issuecomment-1722947958
// //region Fix Gradle warning about signing tasks using publishing task outputs without explicit dependencies
// // https://github.com/gradle/gradle/issues/26091
// //tasks.withType<AbstractPublishToMaven>().configureEach {
// // val signingTasks = tasks.withType<Sign>()
// // mustRunAfter(signingTasks)
// //}
// //endregion
//
//
// inline val Project.sourceSets: SourceSetContainer
// get() = extensions.getByName("sourceSets") as SourceSetContainer
//
// internal val TaskContainer.dokkaHtml: TaskProvider<org.jetbrains.dokka.gradle.DokkaTask>
// get() = named<org.jetbrains.dokka.gradle.DokkaTask>("dokkaHtml")
Loading
Loading