Skip to content

Commit 11c2177

Browse files
committed
Gotcha! The first tricky problem is solved.
But then a second problem arose: it seemed that there was a problem with using inline value classes when using generics.
1 parent 816820c commit 11c2177

File tree

16 files changed

+328
-277
lines changed

16 files changed

+328
-277
lines changed

.run/PublishAllToLocal.run.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<ExternalSystemSettings>
44
<option name="env">
55
<map>
6-
<entry key="SIMBOT_LOCAL" value="true" />
6+
<entry key="IS_LOCAL" value="true" />
77
</map>
88
</option>
99
<option name="executionName" />

buildSrc/src/main/kotlin/IProject.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,3 +49,5 @@ fun Project.setupWith(ktVersion: String) {
4949
val mergedVersion = ktVersion + "-" + IProject.pluginVersion
5050
version = if (IS_SNAPSHOT) "$mergedVersion-SNAPSHOT" else mergedVersion
5151
}
52+
53+
fun isLocal(): Boolean = System.getenv("IS_LOCAL").toBoolean()
Lines changed: 6 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,6 @@
1-
import org.gradle.api.Action
2-
import org.gradle.api.DomainObjectCollection
3-
import org.gradle.api.Project
4-
import org.gradle.api.publish.Publication
5-
import org.gradle.plugins.signing.SigningExtension
6-
import utils.systemProperty
7-
8-
fun SigningExtension.setupSigning(publications: DomainObjectCollection<Publication>) {
9-
val keyId = systemProperty("GPG_KEY_ID")
10-
val secretKey = systemProperty("GPG_SECRET_KEY")
11-
val password = systemProperty("GPG_PASSWORD")
12-
13-
if (keyId != null) {
14-
useInMemoryPgpKeys(keyId, secretKey, password)
15-
}
16-
17-
setRequired(project.provider { project.gradle.taskGraph.hasTask("publish") })
18-
sign(publications)
19-
}
20-
21-
internal fun Project.`signing`(configure: Action<SigningExtension>): Unit =
22-
(this as org.gradle.api.plugins.ExtensionAware).extensions.configure("signing", configure)
1+
// import org.gradle.api.Action
2+
// import org.gradle.api.Project
3+
// import org.gradle.plugins.signing.SigningExtension
4+
//
5+
// internal fun Project.`signing`(configure: Action<SigningExtension>): Unit =
6+
// (this as org.gradle.api.plugins.ExtensionAware).extensions.configure("signing", configure)

buildSrc/src/main/kotlin/suspend-transform.dokka-module.gradle.kts

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@ tasks.named("dokkaHtmlPartial").configure {
1818

1919
tasks.withType<org.jetbrains.dokka.gradle.DokkaTaskPartial>().configureEach {
2020
dokkaSourceSets.configureEach {
21+
val local = isLocal()
22+
if (local) {
23+
offlineMode = true
24+
}
25+
2126
version = project.version
2227
documentedVisibilities.set(
2328
listOf(
@@ -32,7 +37,6 @@ tasks.withType<org.jetbrains.dokka.gradle.DokkaTaskPartial>().configureEach {
3237
includes.from("README.md")
3338
}
3439

35-
3640
// sourceLink {
3741
// localDirectory.set(projectDir.resolve("src"))
3842
// val relativeTo = projectDir.relativeTo(rootProject.projectDir)
@@ -52,13 +56,15 @@ tasks.withType<org.jetbrains.dokka.gradle.DokkaTaskPartial>().configureEach {
5256
}
5357
}
5458

55-
// kotlin-coroutines doc
56-
externalDocumentation(URL("https://kotlinlang.org/api/kotlinx.coroutines"))
59+
if (!local) {
60+
// kotlin-coroutines doc
61+
externalDocumentation(URL("https://kotlinlang.org/api/kotlinx.coroutines"))
5762

58-
// kotlin-serialization doc
59-
externalDocumentation(URL("https://kotlinlang.org/api/kotlinx.serialization"))
63+
// kotlin-serialization doc
64+
externalDocumentation(URL("https://kotlinlang.org/api/kotlinx.serialization"))
6065

61-
// SLF4J
62-
externalDocumentation(URL("https://www.slf4j.org/apidocs"))
66+
// SLF4J
67+
externalDocumentation(URL("https://www.slf4j.org/apidocs"))
68+
}
6369
}
6470
}
Lines changed: 122 additions & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -1,122 +1,122 @@
1-
import love.forte.gradle.common.core.Gpg
2-
import love.forte.gradle.common.publication.configure.configPublishMaven
3-
import love.forte.gradle.common.publication.configure.publishingExtension
4-
import love.forte.gradle.common.publication.configure.setupPom
5-
import love.forte.gradle.common.publication.configure.signingExtension
6-
import utils.isMainPublishable
7-
8-
plugins {
9-
id("signing")
10-
id("maven-publish")
11-
}
12-
13-
//setup(IProject)
14-
15-
//val (sonatypeUsername, sonatypePassword) = sonatypeUserInfoOrNull
16-
17-
//val sonatypeContains = sonatypeUserInfoOrNull != null
18-
val gpgValue = Gpg.ofSystemPropOrNull()
19-
20-
// see https://github.com/gradle/gradle/issues/26091#issuecomment-1681343496
21-
22-
val p = project
23-
24-
if (isMainPublishable()) {
25-
val isSnapshot = project.version.toString().contains("SNAPSHOT")
26-
publishingExtension {
27-
repositories {
28-
mavenLocal()
29-
if (isSnapshot) {
30-
configPublishMaven(SnapshotRepository)
31-
} else {
32-
configPublishMaven(ReleaseRepository)
33-
}
34-
}
35-
val jarSources = tasks.register("${p.name}SourceJar", Jar::class) {
36-
archiveClassifier.set("sources")
37-
from(sourceSets["main"].allSource)
38-
}
39-
40-
val jarJavadoc = tasks.register("${p.name}JavadocJar", Jar::class) {
41-
archiveClassifier.set("javadoc")
42-
}
43-
44-
publications {
45-
create<MavenPublication>("publicationDist") {
46-
from(components.getByName("java"))
47-
artifact(jarSources)
48-
artifact(jarJavadoc)
49-
version = p.version.toString()
50-
setupPom(p.name, IProject)
51-
}
52-
}
53-
54-
signingExtension {
55-
val gpg = gpgValue ?: return@signingExtension
56-
57-
val (keyId, secretKey, password) = gpg
58-
useInMemoryPgpKeys(keyId, secretKey, password)
59-
sign(publishingExtension.publications)
60-
}
61-
}
62-
// jvmConfigPublishing {
63-
// project = IProject
64-
// isSnapshot = project.version.toString().contains("SNAPSHOT", true)
65-
//
66-
// val jarSources = tasks.register("${p.name}SourceJar", Jar::class) {
67-
// archiveClassifier.set("sources")
68-
// from(sourceSets["main"].allSource)
69-
// }
70-
//
71-
// val jarJavadoc = tasks.register("${p.name}JavadocJar", Jar::class) {
72-
//// dependsOn(tasks.dokkaHtml)
73-
//// from(tasks.dokkaHtml.flatMap { it.outputDirectory })
74-
// archiveClassifier.set("javadoc")
75-
// }
76-
//
77-
// tasks.withType<GenerateModuleMetadata> {
78-
// dependsOn(jarSources)
79-
// dependsOn(jarJavadoc)
80-
// }
81-
//
82-
// artifact(jarSources)
83-
// artifact(jarJavadoc)
84-
//
85-
// releasesRepository = ReleaseRepository
86-
// snapshotRepository = SnapshotRepository
87-
//
88-
// gpg = gpgValue
89-
// }
90-
91-
}
92-
93-
94-
signing {
95-
isRequired = gpgValue != null
96-
if (gpgValue != null) {
97-
val (keyId, secretKey, password) = gpgValue
98-
useInMemoryPgpKeys(keyId, secretKey, password)
99-
sign(publishingExtension.publications)
100-
}
101-
}
102-
103-
// TODO see https://github.com/gradle-nexus/publish-plugin/issues/208#issuecomment-1465029831
104-
val signingTasks: TaskCollection<Sign> = tasks.withType<Sign>()
105-
tasks.withType<PublishToMavenRepository>().configureEach {
106-
mustRunAfter(signingTasks)
107-
}
108-
// see https://github.com/gradle/gradle/issues/26091#issuecomment-1722947958
109-
//region Fix Gradle warning about signing tasks using publishing task outputs without explicit dependencies
110-
// https://github.com/gradle/gradle/issues/26091
111-
//tasks.withType<AbstractPublishToMaven>().configureEach {
112-
// val signingTasks = tasks.withType<Sign>()
113-
// mustRunAfter(signingTasks)
114-
//}
115-
//endregion
116-
117-
118-
inline val Project.sourceSets: SourceSetContainer
119-
get() = extensions.getByName("sourceSets") as SourceSetContainer
120-
121-
internal val TaskContainer.dokkaHtml: TaskProvider<org.jetbrains.dokka.gradle.DokkaTask>
122-
get() = named<org.jetbrains.dokka.gradle.DokkaTask>("dokkaHtml")
1+
// import love.forte.gradle.common.core.Gpg
2+
// import love.forte.gradle.common.publication.configure.configPublishMaven
3+
// import love.forte.gradle.common.publication.configure.publishingExtension
4+
// import love.forte.gradle.common.publication.configure.setupPom
5+
// import love.forte.gradle.common.publication.configure.signingExtension
6+
// import utils.isMainPublishable
7+
//
8+
// plugins {
9+
// id("signing")
10+
// id("maven-publish")
11+
// }
12+
//
13+
// //setup(IProject)
14+
//
15+
// //val (sonatypeUsername, sonatypePassword) = sonatypeUserInfoOrNull
16+
//
17+
// //val sonatypeContains = sonatypeUserInfoOrNull != null
18+
// val gpgValue = Gpg.ofSystemPropOrNull()
19+
//
20+
// // see https://github.com/gradle/gradle/issues/26091#issuecomment-1681343496
21+
//
22+
// val p = project
23+
//
24+
// if (isMainPublishable()) {
25+
// val isSnapshot = project.version.toString().contains("SNAPSHOT")
26+
// publishingExtension {
27+
// repositories {
28+
// mavenLocal()
29+
// if (isSnapshot) {
30+
// configPublishMaven(SnapshotRepository)
31+
// } else {
32+
// configPublishMaven(ReleaseRepository)
33+
// }
34+
// }
35+
// val jarSources = tasks.register("${p.name}SourceJar", Jar::class) {
36+
// archiveClassifier.set("sources")
37+
// from(sourceSets["main"].allSource)
38+
// }
39+
//
40+
// val jarJavadoc = tasks.register("${p.name}JavadocJar", Jar::class) {
41+
// archiveClassifier.set("javadoc")
42+
// }
43+
//
44+
// publications {
45+
// create<MavenPublication>("publicationDist") {
46+
// from(components.getByName("java"))
47+
// artifact(jarSources)
48+
// artifact(jarJavadoc)
49+
// version = p.version.toString()
50+
// setupPom(p.name, IProject)
51+
// }
52+
// }
53+
//
54+
// signingExtension {
55+
// val gpg = gpgValue ?: return@signingExtension
56+
//
57+
// val (keyId, secretKey, password) = gpg
58+
// useInMemoryPgpKeys(keyId, secretKey, password)
59+
// sign(publishingExtension.publications)
60+
// }
61+
// }
62+
// // jvmConfigPublishing {
63+
// // project = IProject
64+
// // isSnapshot = project.version.toString().contains("SNAPSHOT", true)
65+
// //
66+
// // val jarSources = tasks.register("${p.name}SourceJar", Jar::class) {
67+
// // archiveClassifier.set("sources")
68+
// // from(sourceSets["main"].allSource)
69+
// // }
70+
// //
71+
// // val jarJavadoc = tasks.register("${p.name}JavadocJar", Jar::class) {
72+
// //// dependsOn(tasks.dokkaHtml)
73+
// //// from(tasks.dokkaHtml.flatMap { it.outputDirectory })
74+
// // archiveClassifier.set("javadoc")
75+
// // }
76+
// //
77+
// // tasks.withType<GenerateModuleMetadata> {
78+
// // dependsOn(jarSources)
79+
// // dependsOn(jarJavadoc)
80+
// // }
81+
// //
82+
// // artifact(jarSources)
83+
// // artifact(jarJavadoc)
84+
// //
85+
// // releasesRepository = ReleaseRepository
86+
// // snapshotRepository = SnapshotRepository
87+
// //
88+
// // gpg = gpgValue
89+
// // }
90+
//
91+
// }
92+
//
93+
//
94+
// signing {
95+
// isRequired = gpgValue != null
96+
// if (gpgValue != null) {
97+
// val (keyId, secretKey, password) = gpgValue
98+
// useInMemoryPgpKeys(keyId, secretKey, password)
99+
// sign(publishingExtension.publications)
100+
// }
101+
// }
102+
//
103+
// // TODO see https://github.com/gradle-nexus/publish-plugin/issues/208#issuecomment-1465029831
104+
// val signingTasks: TaskCollection<Sign> = tasks.withType<Sign>()
105+
// tasks.withType<PublishToMavenRepository>().configureEach {
106+
// mustRunAfter(signingTasks)
107+
// }
108+
// // see https://github.com/gradle/gradle/issues/26091#issuecomment-1722947958
109+
// //region Fix Gradle warning about signing tasks using publishing task outputs without explicit dependencies
110+
// // https://github.com/gradle/gradle/issues/26091
111+
// //tasks.withType<AbstractPublishToMaven>().configureEach {
112+
// // val signingTasks = tasks.withType<Sign>()
113+
// // mustRunAfter(signingTasks)
114+
// //}
115+
// //endregion
116+
//
117+
//
118+
// inline val Project.sourceSets: SourceSetContainer
119+
// get() = extensions.getByName("sourceSets") as SourceSetContainer
120+
//
121+
// internal val TaskContainer.dokkaHtml: TaskProvider<org.jetbrains.dokka.gradle.DokkaTask>
122+
// get() = named<org.jetbrains.dokka.gradle.DokkaTask>("dokkaHtml")

0 commit comments

Comments
 (0)