From c448b04277027c5d658773084603c819efe36c3a Mon Sep 17 00:00:00 2001 From: ForteScarlet Date: Mon, 17 Jun 2024 15:29:32 +0800 Subject: [PATCH 1/8] pref: Internal event inheritance --- .../api/simbot-component-qq-guild-core.api | 4 ++-- .../simbot/component/qguild/event/QGInternalBotEvent.kt | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/simbot-component-qq-guild-core/api/simbot-component-qq-guild-core.api b/simbot-component-qq-guild-core/api/simbot-component-qq-guild-core.api index 9d1fd52a..7eaa481d 100644 --- a/simbot-component-qq-guild-core/api/simbot-component-qq-guild-core.api +++ b/simbot-component-qq-guild-core/api/simbot-component-qq-guild-core.api @@ -701,14 +701,14 @@ public abstract class love/forte/simbot/component/qguild/event/QGBotEvent : love public abstract fun getBot ()Llove/forte/simbot/component/qguild/bot/QGBot; } -public abstract class love/forte/simbot/component/qguild/event/QGBotRegisteredEvent : love/forte/simbot/component/qguild/event/QGInternalBotEvent, love/forte/simbot/event/BotEvent { +public abstract class love/forte/simbot/component/qguild/event/QGBotRegisteredEvent : love/forte/simbot/component/qguild/event/QGInternalBotEvent, love/forte/simbot/event/BotRegisteredEvent { public fun ()V public abstract fun getBot ()Llove/forte/simbot/component/qguild/bot/QGBot; public fun getId ()Llove/forte/simbot/common/id/ID; public fun getTime ()Llove/forte/simbot/common/time/Timestamp; } -public abstract class love/forte/simbot/component/qguild/event/QGBotStartedEvent : love/forte/simbot/component/qguild/event/QGInternalBotEvent, love/forte/simbot/event/BotEvent { +public abstract class love/forte/simbot/component/qguild/event/QGBotStartedEvent : love/forte/simbot/component/qguild/event/QGInternalBotEvent, love/forte/simbot/event/BotStartedEvent { public fun ()V public abstract fun getBot ()Llove/forte/simbot/component/qguild/bot/QGBot; public fun getId ()Llove/forte/simbot/common/id/ID; diff --git a/simbot-component-qq-guild-core/src/commonMain/kotlin/love/forte/simbot/component/qguild/event/QGInternalBotEvent.kt b/simbot-component-qq-guild-core/src/commonMain/kotlin/love/forte/simbot/component/qguild/event/QGInternalBotEvent.kt index d1f23ed1..f6c26c27 100644 --- a/simbot-component-qq-guild-core/src/commonMain/kotlin/love/forte/simbot/component/qguild/event/QGInternalBotEvent.kt +++ b/simbot-component-qq-guild-core/src/commonMain/kotlin/love/forte/simbot/component/qguild/event/QGInternalBotEvent.kt @@ -23,7 +23,8 @@ import love.forte.simbot.common.id.UUID import love.forte.simbot.common.time.Timestamp import love.forte.simbot.component.qguild.bot.QGBot import love.forte.simbot.component.qguild.bot.QQGuildBotManager -import love.forte.simbot.event.BotEvent +import love.forte.simbot.event.BotRegisteredEvent +import love.forte.simbot.event.BotStartedEvent import love.forte.simbot.event.Event /** @@ -42,7 +43,7 @@ public sealed interface QGInternalBotEvent : Event * @see QQGuildBotManager * @see QQGuildBotManager.register */ -public abstract class QGBotRegisteredEvent : QGInternalBotEvent, BotEvent { +public abstract class QGBotRegisteredEvent : QGInternalBotEvent, BotRegisteredEvent { abstract override val bot: QGBot @OptIn(ExperimentalSimbotAPI::class) @@ -50,7 +51,6 @@ public abstract class QGBotRegisteredEvent : QGInternalBotEvent, BotEvent { override val id: ID = UUID.random() } - /** * qq频道组件中,每当 [QGBot.start] 被执行的时候会被推送的事件。 * 当事件被推送的时候代表此bot实际上已经完成的 `start` 的逻辑,但是[QGBot.start]会直到事件处理流程完成后才会最终返回。 @@ -58,7 +58,7 @@ public abstract class QGBotRegisteredEvent : QGInternalBotEvent, BotEvent { * @see QGBot * @see QGBot.start */ -public abstract class QGBotStartedEvent : QGInternalBotEvent, BotEvent { +public abstract class QGBotStartedEvent : QGInternalBotEvent, BotStartedEvent { abstract override val bot: QGBot @OptIn(ExperimentalSimbotAPI::class) From 5d4f1888e6f411e149c832fb9f0ee9081d254e1e Mon Sep 17 00:00:00 2001 From: ForteScarlet Date: Mon, 24 Jun 2024 02:30:26 +0800 Subject: [PATCH 2/8] doc --- Writerside/qg.tree | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Writerside/qg.tree b/Writerside/qg.tree index 7da6fe67..0c869ac2 100644 --- a/Writerside/qg.tree +++ b/Writerside/qg.tree @@ -52,4 +52,6 @@ + + From 014a5989c06c183672cd47df64e207e9f8ccfbe9 Mon Sep 17 00:00:00 2001 From: ForteScarlet Date: Mon, 24 Jun 2024 02:31:23 +0800 Subject: [PATCH 3/8] doc --- Writerside/qg.tree | 1 - 1 file changed, 1 deletion(-) diff --git a/Writerside/qg.tree b/Writerside/qg.tree index 0c869ac2..1e8675b0 100644 --- a/Writerside/qg.tree +++ b/Writerside/qg.tree @@ -37,7 +37,6 @@ - From a7ec3d56d15c8e80a36e0621e050161601569e79 Mon Sep 17 00:00:00 2001 From: ForteScarlet Date: Tue, 2 Jul 2024 20:15:36 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E6=96=87=E6=A1=A3=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E8=A1=A5=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Writerside/topics/bot-config.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Writerside/topics/bot-config.md b/Writerside/topics/bot-config.md index 9bbd598a..9248c17b 100644 --- a/Writerside/topics/bot-config.md +++ b/Writerside/topics/bot-config.md @@ -177,6 +177,8 @@ bot开发配置中的 `Token`。 直接使用 `intents` 原始的标记位最终数值。 +所有的事件对应的位值信息可前往参考 [官方文档](https://bot.q.qq.com/wiki/develop/api/gateway/intents.html) 。 + ```json { "type": "raw", From 3fdcc0995b8925888f67f2323ca5b745156d7ed1 Mon Sep 17 00:00:00 2001 From: ForteScarlet Date: Fri, 5 Jul 2024 01:30:17 +0800 Subject: [PATCH 5/8] =?UTF-8?q?optimize:=20=E4=B8=BA=E9=83=A8=E5=88=86?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E7=9A=84=E5=B1=9E=E6=80=A7=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=8F=8D=E5=BA=8F=E5=88=97=E5=8C=96=E9=BB=98=E8=AE=A4=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kotlin/love/forte/simbot/qguild/model/Message.kt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/simbot-component-qq-guild-api/src/commonMain/kotlin/love/forte/simbot/qguild/model/Message.kt b/simbot-component-qq-guild-api/src/commonMain/kotlin/love/forte/simbot/qguild/model/Message.kt index bb028f1e..a674640e 100644 --- a/simbot-component-qq-guild-api/src/commonMain/kotlin/love/forte/simbot/qguild/model/Message.kt +++ b/simbot-component-qq-guild-api/src/commonMain/kotlin/love/forte/simbot/qguild/model/Message.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022-2023. ForteScarlet. + * Copyright (c) 2022-2024. ForteScarlet. * * This file is part of simbot-component-qq-guild. * @@ -25,6 +25,7 @@ import kotlinx.serialization.encoding.Decoder import kotlinx.serialization.encoding.Encoder import love.forte.simbot.qguild.ApiModel import love.forte.simbot.qguild.message.EmbedBuilder +import love.forte.simbot.qguild.time.ZERO_ISO_INSTANT import kotlin.jvm.JvmStatic import kotlin.jvm.JvmSynthetic @@ -359,10 +360,10 @@ public data class Message( @ApiModel @Serializable public data class MessageMember( - override val nick: String, + override val nick: String = "", override val roles: List = emptyList(), @SerialName("joined_at") - override val joinedAt: String + override val joinedAt: String = ZERO_ISO_INSTANT ) : Member { @Transient From 9f7cf0061dc3cfc8054e5b796126dc0710e287d5 Mon Sep 17 00:00:00 2001 From: ForteScarlet Date: Fri, 5 Jul 2024 01:43:23 +0800 Subject: [PATCH 6/8] api dump --- .../api/simbot-component-qq-guild-api.api | 1 + 1 file changed, 1 insertion(+) diff --git a/simbot-component-qq-guild-api/api/simbot-component-qq-guild-api.api b/simbot-component-qq-guild-api/api/simbot-component-qq-guild-api.api index d71b85a0..3fda1b64 100644 --- a/simbot-component-qq-guild-api/api/simbot-component-qq-guild-api.api +++ b/simbot-component-qq-guild-api/api/simbot-component-qq-guild-api.api @@ -4313,6 +4313,7 @@ public final class love/forte/simbot/qguild/model/MessageAudited$Companion { public final class love/forte/simbot/qguild/model/MessageMember : love/forte/simbot/qguild/model/Member { public static final field Companion Llove/forte/simbot/qguild/model/MessageMember$Companion; + public fun ()V public fun (Ljava/lang/String;Ljava/util/List;Ljava/lang/String;)V public synthetic fun (Ljava/lang/String;Ljava/util/List;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public static final fun asMessageMember (Llove/forte/simbot/qguild/model/Member;)Llove/forte/simbot/qguild/model/MessageMember; From d816606113cf960f6830fd44bd574926d5457307 Mon Sep 17 00:00:00 2001 From: ForteScarlet Date: Fri, 5 Jul 2024 21:32:16 +0800 Subject: [PATCH 7/8] =?UTF-8?q?build:=20=E6=9B=B4=E6=96=B0=E6=9E=84?= =?UTF-8?q?=E5=BB=BA=E3=80=81=E5=8F=91=E5=B8=83=E9=85=8D=E7=BD=AE=EF=BC=8C?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=A1=B9=E7=9B=AE=E9=85=8D=E7=BD=AE=E8=84=9A?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/publish-release.yml | 99 +++++++------------ .github/workflows/publish-snapshot.yml | 62 ++++++++---- .gitignore | 1 + build.gradle.kts | 4 +- buildSrc/src/main/kotlin/JvmConfig.kt | 13 ++- buildSrc/src/main/kotlin/P.kt | 10 +- ...q-guild-dokka-partial-configure.gradle.kts | 4 +- ...ild-multiplatform-maven-publish.gradle.kts | 54 ++++++---- ...bot-tencent-guild.maven-publish.gradle.kts | 88 ----------------- ...bot-tencent-guild.nexus-publish.gradle.kts | 14 ++- gradle/libs.versions.toml | 6 +- 11 files changed, 140 insertions(+), 215 deletions(-) delete mode 100644 buildSrc/src/main/kotlin/simbot-tencent-guild.maven-publish.gradle.kts diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml index 17dd3a0c..db98f625 100644 --- a/.github/workflows/publish-release.yml +++ b/.github/workflows/publish-release.yml @@ -5,6 +5,8 @@ on: - v4.**.** env: + JAVA_VERSION: 21 + JAVA_DISTRIBUTION: zulu IS_CI: true GPG_KEY_ID: ${{ secrets.GPG_KEY_ID }} GPG_SECRET_KEY: ${{ secrets.GPG_SECRET_KEY }} @@ -14,40 +16,50 @@ env: SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} GRADLE_OPTS: "-Xmx8g -Xms2g -XX:MaxMetaspaceSize=1g -Dfile.encoding=UTF-8" + GRADLE_VERSION: 8.5 jobs: - run-test-and-publish: - name: Run test and publish + run-test: + name: Run all tests for publish strategy: matrix: os: [ macos-latest, windows-latest, ubuntu-latest ] runs-on: ${{ matrix.os }} steps: - # 检出仓库代码 - - name: Check Out Repo - uses: actions/checkout@v4 - - # setup Java - - name: Setup Java - uses: actions/setup-java@v4 + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 with: - distribution: 'zulu' - java-version: 21 + distribution: ${{ env.JAVA_DISTRIBUTION }} + java-version: ${{ env.JAVA_VERSION }} cache: 'gradle' # setup Gradle - name: Gradle Run Test uses: gradle/actions/setup-gradle@v3 with: - gradle-version: 8.5 - arguments: assemble test -Porg.gradle.daemon=false + gradle-version: ${{ env.GRADLE_VERSION }} - # setup Gradle - - name: Publish Release + - name: Run all tests + run: gradle assemble allTests --stacktrace --warning-mode all + + publish-releases: + name: Publish releases + needs: run-test + # 交叉编译 support + # see https://kotlinlang.org/docs/multiplatform-publish-lib.html#host-requirements + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 + with: + distribution: ${{ env.JAVA_DISTRIBUTION }} + java-version: ${{ env.JAVA_VERSION }} + cache: 'gradle' + - name: Publish releases uses: gradle/actions/setup-gradle@v3 with: - gradle-version: 8.5 + gradle-version: ${{ env.GRADLE_VERSION }} arguments: | publishToSonatype closeAndReleaseStagingRepositories @@ -56,7 +68,6 @@ jobs: -x test --build-cache -Porg.gradle.jvmargs="-Xmx8g -Xms2g -XX:MaxMetaspaceSize=1g -Dfile.encoding=UTF-8" - -Porg.gradle.daemon=false env: SIMBOT_IS_SNAPSHOT: false @@ -65,66 +76,26 @@ jobs: create-release: name: Create release runs-on: ubuntu-latest - needs: run-test-and-publish + needs: publish-releases permissions: contents: write steps: # 检出仓库代码 - - name: Check Out Repo - uses: actions/checkout@v4 + - uses: actions/checkout@v4 # Create gitHub release - name: Create Github Release - uses: softprops/action-gh-release@v0.1.14 + uses: softprops/action-gh-release@v2 with: token: ${{ secrets.PUSH_TOKEN }} body_path: .changelog/${{ github.ref_name }}.md generate_release_notes: true prerelease: ${{ contains(github.ref_name, 'preview') || contains(github.ref_name, 'alpha') }} - # || contains(github.ref_name, 'beta') - - publish-snapshot: - name: Publish snapshot - strategy: - matrix: - os: [ macos-latest, windows-latest, ubuntu-latest ] - runs-on: ${{ matrix.os }} - needs: run-test-and-publish - steps: - # 检出仓库代码 - - name: Check out repo - uses: actions/checkout@v4 - - # setup Java - - name: Setup java - uses: actions/setup-java@v4 - with: - distribution: 'zulu' - java-version: 21 - - # setup Gradle - - name: Gradle publish snapshot - uses: gradle/actions/setup-gradle@v3 - with: - gradle-version: 8.5 - arguments: | - publishToSonatype - closeAndReleaseStagingRepositories - --info - --warning-mode all - -x test - --build-cache - -Porg.gradle.jvmargs="-Xmx8g -Xms2g -XX:MaxMetaspaceSize=1g -Dfile.encoding=UTF-8" - -Porg.gradle.daemon=false - env: - SIMBOT_IS_SNAPSHOT: true - SIMBOT_SNAPSHOT_ONLY: true - deploy-doc: name: Deploy-doc runs-on: ubuntu-latest - needs: run-test-and-publish + needs: publish-releases steps: # 检出仓库代码 - name: Check out repo @@ -136,14 +107,14 @@ jobs: - name: Setup java uses: actions/setup-java@v4 with: - distribution: 'zulu' - java-version: 21 + distribution: ${{ env.JAVA_DISTRIBUTION }} + java-version: ${{ env.JAVA_VERSION }} # setup Gradle - name: Gradle generate documentation uses: gradle/actions/setup-gradle@v3 with: - gradle-version: 8.5 + gradle-version: ${{ env.GRADLE_VERSION }} arguments: | dokkaHtmlMultiModule --info diff --git a/.github/workflows/publish-snapshot.yml b/.github/workflows/publish-snapshot.yml index 5a9d2b34..f5616b82 100644 --- a/.github/workflows/publish-snapshot.yml +++ b/.github/workflows/publish-snapshot.yml @@ -20,6 +20,8 @@ on: workflow_dispatch: env: + JAVA_VERSION: 21 + JAVA_DISTRIBUTION: zulu IS_CI: true GPG_KEY_ID: ${{ secrets.GPG_KEY_ID }} GPG_SECRET_KEY: ${{ secrets.GPG_SECRET_KEY }} @@ -31,45 +33,63 @@ env: SIMBOT_IS_SNAPSHOT: true SIMBOT_SNAPSHOT_ONLY: true GRADLE_OPTS: "-Dfile.encoding=UTF-8" + GRADLE_VERSION: 8.5 jobs: - publish-snapshot: - name: Publish snapshot + run-test: + name: Run all tests strategy: matrix: os: [ macos-latest, windows-latest, ubuntu-latest ] runs-on: ${{ matrix.os }} steps: - # 检出仓库代码 - - name: Check out repo - uses: actions/checkout@v4 - - # setup Java - - name: Setup java - uses: actions/setup-java@v4 + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 with: - distribution: 'zulu' - java-version: 21 + distribution: ${{ env.JAVA_DISTRIBUTION }} + java-version: ${{ env.JAVA_VERSION }} + cache: 'gradle' # setup Gradle - name: Gradle test and publish snapshot uses: gradle/actions/setup-gradle@v3 with: - gradle-version: 8.5 + gradle-version: ${{ env.GRADLE_VERSION }} + + - name: Gradle run all tests + run: gradle assemble allTests --stacktrace --warning-mode all + + publish-snapshots: + name: Publish snapshots + needs: run-test + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 + with: + distribution: ${{ env.JAVA_DISTRIBUTION }} + java-version: ${{ env.JAVA_VERSION }} + cache: 'gradle' + + # setup Gradle + - name: Publish snapshots + uses: gradle/actions/setup-gradle@v3 + with: + gradle-version: ${{ env.GRADLE_VERSION }} arguments: | - test publishToSonatype closeAndReleaseStagingRepositories - --info - --warning-mode all - -Porg.gradle.jvmargs="-Xmx8g -Xms2g -XX:MaxMetaspaceSize=1g -Dfile.encoding=UTF-8" - -Porg.gradle.daemon=false + --info + --warning-mode all + -Porg.gradle.jvmargs="-Xmx8g -Xms2g -XX:MaxMetaspaceSize=1g -Dfile.encoding=UTF-8" + env: + SIMBOT_IS_SNAPSHOT: true deploy-doc: name: Deploy-doc runs-on: ubuntu-latest - needs: publish-snapshot + needs: publish-snapshots steps: # 检出仓库代码 - name: Check out repo @@ -81,14 +101,14 @@ jobs: - name: Setup java uses: actions/setup-java@v4 with: - distribution: 'zulu' - java-version: 21 + distribution: ${{ env.JAVA_DISTRIBUTION }} + java-version: ${{ env.JAVA_VERSION }} # setup Gradle - name: Gradle generate documentation uses: gradle/actions/setup-gradle@v3 with: - gradle-version: 8.5 + gradle-version: ${{ env.GRADLE_VERSION }} arguments: | -Porg.gradle.jvmargs="-Xmx4g -Xms4g -XX:MaxMetaspaceSize=2g -Dfile.encoding=UTF-8" -Porg.gradle.daemon=false diff --git a/.gitignore b/.gitignore index a9c38d29..d88955cf 100644 --- a/.gitignore +++ b/.gitignore @@ -160,3 +160,4 @@ fabric.properties generated-docs .kotlin +.idea diff --git a/build.gradle.kts b/build.gradle.kts index 22d1b616..61b6b56d 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -35,12 +35,10 @@ buildscript { } } -//group = P.ComponentTencentGuild.GROUP -//version = P.ComponentTencentGuild.versionIfSnap - logger.info("=== Current version: {} ===", version) allprojects { + setup(P.ComponentQQGuild) repositories { mavenCentral() maven { diff --git a/buildSrc/src/main/kotlin/JvmConfig.kt b/buildSrc/src/main/kotlin/JvmConfig.kt index 2dd68a66..b1ca1a6b 100644 --- a/buildSrc/src/main/kotlin/JvmConfig.kt +++ b/buildSrc/src/main/kotlin/JvmConfig.kt @@ -23,6 +23,7 @@ import org.gradle.kotlin.dsl.get import org.gradle.kotlin.dsl.getByName import org.gradle.kotlin.dsl.withType import org.gradle.process.CommandLineArgumentProvider +import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension @@ -30,13 +31,15 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinTopLevelExtension import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget +@OptIn(ExperimentalKotlinGradlePluginApi::class) inline fun KotlinJvmTarget.configJava(crossinline block: KotlinJvmTarget.() -> Unit = {}) { withJava() - compilations.all { - kotlinOptions { - javaParameters = true - freeCompilerArgs = freeCompilerArgs + listOf("-Xjvm-default=all") - } + compilerOptions { + javaParameters.set(true) + freeCompilerArgs.addAll( + "-Xjvm-default=all" + ) + } testRuns["test"].executionTask.configure { diff --git a/buildSrc/src/main/kotlin/P.kt b/buildSrc/src/main/kotlin/P.kt index ecd2cbaf..40a6e165 100644 --- a/buildSrc/src/main/kotlin/P.kt +++ b/buildSrc/src/main/kotlin/P.kt @@ -16,10 +16,7 @@ */ import love.forte.gradle.common.core.project.ProjectDetail -import love.forte.gradle.common.core.project.Version -import love.forte.gradle.common.core.project.minus import love.forte.gradle.common.core.property.systemProp -import love.forte.gradle.common.core.project.version as v //val simbotVersion = v(3, 2, 0) ////- v("RC", 3) @@ -59,10 +56,11 @@ object P { override val homepage: String get() = HOMEPAGE - private val baseVersion = v(4, 0, 0) - v("beta4") + const val VERSION = "4.0.0-beta5" + const val NEXT_VERSION = "4.0.0-beta5" - val snapshotVersion = baseVersion - Version.SNAPSHOT - override val version = if (isSnapshot()) snapshotVersion else baseVersion + override val snapshotVersion = "$NEXT_VERSION-SNAPSHOT" + override val version = if (isSnapshot()) snapshotVersion else VERSION override val developers: List = developers { developer { diff --git a/buildSrc/src/main/kotlin/qq-guild-dokka-partial-configure.gradle.kts b/buildSrc/src/main/kotlin/qq-guild-dokka-partial-configure.gradle.kts index 51b37a3e..19a67087 100644 --- a/buildSrc/src/main/kotlin/qq-guild-dokka-partial-configure.gradle.kts +++ b/buildSrc/src/main/kotlin/qq-guild-dokka-partial-configure.gradle.kts @@ -27,7 +27,7 @@ plugins { // dokka config tasks.withType().configureEach { dokkaSourceSets.configureEach { - version = P.ComponentQQGuild.version.toString() + version = P.ComponentQQGuild.version documentedVisibilities.set(listOf(DokkaConfiguration.Visibility.PUBLIC, DokkaConfiguration.Visibility.PROTECTED)) fun checkModule(projectFileName: String): Boolean { val moduleMdFile = project.file(projectFileName) @@ -56,7 +56,7 @@ tasks.withType().configureEach { sourceLink { localDirectory.set(projectDir.resolve("src")) - val relativeTo = projectDir.relativeTo(rootProject.projectDir) + val relativeTo = projectDir.relativeTo(rootProject.projectDir).path.replace('\\', '/') remoteUrl.set(URI.create("${P.ComponentQQGuild.HOMEPAGE}/tree/main/$relativeTo/src/").toURL()) remoteLineSuffix.set("#L") } diff --git a/buildSrc/src/main/kotlin/qq-guild-multiplatform-maven-publish.gradle.kts b/buildSrc/src/main/kotlin/qq-guild-multiplatform-maven-publish.gradle.kts index ab499aa3..36a70078 100644 --- a/buildSrc/src/main/kotlin/qq-guild-multiplatform-maven-publish.gradle.kts +++ b/buildSrc/src/main/kotlin/qq-guild-multiplatform-maven-publish.gradle.kts @@ -18,7 +18,9 @@ import love.forte.gradle.common.core.Gpg import love.forte.gradle.common.core.project.setup import love.forte.gradle.common.core.property.systemProp -import love.forte.gradle.common.publication.configure.multiplatformConfigPublishing +import love.forte.gradle.common.publication.configure.configPublishMaven +import love.forte.gradle.common.publication.configure.publishingExtension +import love.forte.gradle.common.publication.configure.setupPom plugins { signing @@ -29,30 +31,44 @@ plugins { setup(P.ComponentQQGuild) val p = project -multiplatformConfigPublishing { - project = P.ComponentQQGuild - isSnapshot = project.version.toString().contains("SNAPSHOT", true) - - val jarJavadoc by tasks.registering(Jar::class) { - group = "documentation" - archiveClassifier.set("javadoc") - if (!(isSnapshot || isSnapshot() || isSimbotLocal())) { - archiveClassifier.set("javadoc") - from(tasks.findByName("dokkaHtml")) +val isSnapshot = project.version.toString().contains("SNAPSHOT", true) + +val jarJavadoc by tasks.registering(Jar::class) { + group = "documentation" + archiveClassifier.set("javadoc") + if (!(isSnapshot || isSnapshot() || isSimbotLocal())) { + dependsOn(tasks.dokkaHtml) + from(tasks.dokkaHtml.flatMap { it.outputDirectory }) + // from(tasks.findByName("dokkaHtml")) + } +} + +publishing { + repositories { + mavenLocal() + if (isSnapshot) { + configPublishMaven(SnapshotRepository) + } else { + configPublishMaven(ReleaseRepository) } } - artifact(jarJavadoc) - releasesRepository = ReleaseRepository - snapshotRepository = SnapshotRepository - gpg = Gpg.ofSystemPropOrNull() + publications { + withType { + artifacts { + artifact(jarJavadoc) + } - if (isSimbotLocal()) { - mainHost = null + setupPom(project.name, P.ComponentQQGuild) + } } +} - publicationsFromMainHost += listOf("wasm", "wasm32", "wasm_js") - mainHostSupportedTargets += listOf("wasm", "wasm32", "wasm_js") +signing { + val gpg = Gpg.ofSystemPropOrNull() ?: return@signing + val (keyId, secretKey, password) = gpg + useInMemoryPgpKeys(keyId, secretKey, password) + sign(publishingExtension.publications) } // TODO see https://github.com/gradle-nexus/publish-plugin/issues/208#issuecomment-1465029831 diff --git a/buildSrc/src/main/kotlin/simbot-tencent-guild.maven-publish.gradle.kts b/buildSrc/src/main/kotlin/simbot-tencent-guild.maven-publish.gradle.kts deleted file mode 100644 index feed9fc9..00000000 --- a/buildSrc/src/main/kotlin/simbot-tencent-guild.maven-publish.gradle.kts +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright (c) 2022-2024. ForteScarlet. - * - * This file is part of simbot-component-qq-guild. - * - * simbot-component-qq-guild is free software: you can redistribute it and/or modify it under the terms - * of the GNU Lesser General Public License as published by the Free Software Foundation, - * either version 3 of the License, or (at your option) any later version. - * - * simbot-component-qq-guild is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * See the GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License along with simbot-component-qq-guild. - * If not, see . - */ - -import love.forte.gradle.common.core.Gpg -import love.forte.gradle.common.publication.configure.jvmConfigPublishing -import util.checkPublishConfigurable -import util.isCi -import util.isLinux - - -plugins { - id("signing") - id("maven-publish") -} - -val (isSnapshotOnly, isReleaseOnly, isPublishConfigurable) = checkPublishConfigurable() - - -logger.info("isSnapshotOnly: {}", isSnapshotOnly) -logger.info("isReleaseOnly: {}", isReleaseOnly) -logger.info("isPublishConfigurable: {}", isPublishConfigurable) - -if (!isCi || isLinux) { - checkPublishConfigurable { - jvmConfigPublishing { - project = P.ComponentQQGuild - publicationName = "QQGuildDist" - isSnapshot = isSnapshot().also { - logger.info("jvmConfigPublishing.isSnapshot: {}", it) - } - - val jarSources by tasks.registering(Jar::class) { - archiveClassifier.set("sources") - from(sourceSets["main"].allSource) - } - - val jarJavadoc by tasks.registering(Jar::class) { - if (!(isSnapshot || isSnapshot())) { - dependsOn(tasks.dokkaHtml) - from(tasks.dokkaHtml.flatMap { it.outputDirectory }) - } - archiveClassifier.set("javadoc") - } - - artifact(jarSources) - artifact(jarJavadoc) - - releasesRepository = ReleaseRepository - snapshotRepository = SnapshotRepository - gpg = Gpg.ofSystemPropOrNull() - } - } - - show() -} - - -inline val Project.sourceSets: SourceSetContainer - get() = extensions.getByName("sourceSets") as SourceSetContainer - -internal val TaskContainer.dokkaHtml: TaskProvider - get() = named("dokkaHtml") - -fun Project.show() { - //// show project info - logger.info("========================================================") - logger.info("== project.group: $group") - logger.info("== project.name: $name") - logger.info("== project.version: $version") - logger.info("== project.description: $description") - logger.info("========================================================") -} - - diff --git a/buildSrc/src/main/kotlin/simbot-tencent-guild.nexus-publish.gradle.kts b/buildSrc/src/main/kotlin/simbot-tencent-guild.nexus-publish.gradle.kts index f93b89cb..161f0719 100644 --- a/buildSrc/src/main/kotlin/simbot-tencent-guild.nexus-publish.gradle.kts +++ b/buildSrc/src/main/kotlin/simbot-tencent-guild.nexus-publish.gradle.kts @@ -17,7 +17,7 @@ import love.forte.gradle.common.core.project.setup import love.forte.gradle.common.core.repository.Repositories -import love.forte.gradle.common.publication.configure.nexusPublishConfig +import java.time.Duration plugins { id("io.github.gradle-nexus.publish-plugin") @@ -31,10 +31,16 @@ if (userInfo == null) { logger.warn("sonatype.username or sonatype.password is null, cannot config nexus publishing.") } -nexusPublishConfig { - projectDetail = P.ComponentQQGuild +nexusPublishing { + packageGroup.set(P.ComponentQQGuild.group) useStaging = project.provider { !project.version.toString().endsWith("SNAPSHOT", ignoreCase = true) } - repositoriesConfig = { + + transitionCheckOptions { + maxRetries = 1000 + delayBetween = Duration.ofSeconds(2) + } + + repositories { sonatype { snapshotRepositoryUrl.set(uri(Repositories.Snapshot.URL)) username.set(userInfo?.username) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 5820afe4..a5f6d1ca 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -4,13 +4,13 @@ kotlinx-coroutines = "1.8.1" kotlinx-serialization = "1.6.3" kotlinx-datetime = "0.6.0" dokka = "1.9.20" -ktor = "2.3.8" +ktor = "2.3.11" openjdk-jmh = "1.37" log4j = "2.23.1" # simbot -simbot = "4.0.0" +simbot = "4.1.0" suspendTransform = "0.9.0" -gradleCommon = "0.4.0" +gradleCommon = "0.6.0" # ksp ksp = "2.0.0-1.0.22" # https://square.github.io/kotlinpoet/ From 5c2c5cfade3ba4e9c1441c2dd415fcd68da11407 Mon Sep 17 00:00:00 2001 From: ForteScarlet Date: Sat, 6 Jul 2024 13:18:02 +0800 Subject: [PATCH 8/8] release: v4.0.0-beta5 --- .changelog/v4.0.0-beta5.md | 7 +++++++ Writerside/v.list | 4 ++-- buildSrc/src/main/kotlin/P.kt | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 .changelog/v4.0.0-beta5.md diff --git a/.changelog/v4.0.0-beta5.md b/.changelog/v4.0.0-beta5.md new file mode 100644 index 00000000..0abb751c --- /dev/null +++ b/.changelog/v4.0.0-beta5.md @@ -0,0 +1,7 @@ +> 对应核心版本: [**v4.1.0**](https://github.com/simple-robot/simpler-robot/releases/tag/v4.1.0) + + +我们欢迎并期望着您的的[反馈](https://github.com/simple-robot/simbot-component-qq-guild/issues)或[协助](https://github.com/simple-robot/simbot-component-qq-guild/pulls), +感谢您的贡献与支持! + +也欢迎您为我们献上一颗 `star`,这是对我们最大的鼓励与认可! diff --git a/Writerside/v.list b/Writerside/v.list index 69498fca..ca23ff48 100644 --- a/Writerside/v.list +++ b/Writerside/v.list @@ -5,6 +5,6 @@ - - + + diff --git a/buildSrc/src/main/kotlin/P.kt b/buildSrc/src/main/kotlin/P.kt index 40a6e165..5ea930c2 100644 --- a/buildSrc/src/main/kotlin/P.kt +++ b/buildSrc/src/main/kotlin/P.kt @@ -57,7 +57,7 @@ object P { const val VERSION = "4.0.0-beta5" - const val NEXT_VERSION = "4.0.0-beta5" + const val NEXT_VERSION = "4.0.0-beta6" override val snapshotVersion = "$NEXT_VERSION-SNAPSHOT" override val version = if (isSnapshot()) snapshotVersion else VERSION