From 54940417a07c6bef724f35951a3c30653d5c1fca Mon Sep 17 00:00:00 2001 From: Nek-12 Date: Tue, 10 Dec 2024 08:46:28 +0100 Subject: [PATCH] chore: set up IDE plugin verification on CI --- .github/workflows/ci.yml | 3 +++ README.md | 6 +++--- .../setup/traditional/TraditionalMVIBenchmark.kt | 2 +- debugger/ideplugin/build.gradle.kts | 10 ++++++++++ 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index aa30fa67..28699243 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -56,3 +56,6 @@ jobs: - name: Unit tests run: ./gradlew allTests --stacktrace --no-configuration-cache + + - name: Verify IDE plugin + run: ./gradlew debugger:ideplugin:verifyPlugin diff --git a/README.md b/README.md index 51fd3a92..33fb18e4 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ achieve thread-safety, and more. It takes about 10 minutes to try it. * Latest version: [![Maven Central](https://img.shields.io/maven-central/v/pro.respawn.flowmvi/core?label=Maven%20Central)](https://central.sonatype.com/namespace/pro.respawn.flowmvi) * Documentation: - [![Docs](https://img.shields.io/website?down_color=red&down_message=Offline&label=Docs&up_color=green&up_message=Online&url=https%3A%2F%2Fopensource.respawn.pro%2FFlowMVI%2F%23%2F)](https://opensource.respawn.pro/FlowMVI/#/) + [![Docs](https://img.shields.io/website?down_color=red&down_message=Offline&label=Docs&up_color=green&up_message=Online&url=https%3A%2F%2Fopensource.respawn.pro%2FFlowMVI%2F%23%2F)](https://opensource.respawn.pro/FlowMVI/#/quickstart) * KDoc: [![Javadoc](https://javadoc.io/badge2/pro.respawn.flowmvi/core/javadoc.svg)](https://opensource.respawn.pro/FlowMVI/javadocs/index.html) * Sample App (See features) ![badge-wasm]: @@ -105,11 +105,11 @@ Here's what you get: * First class Compose Multiplatform support optimized for performance and ease of use * Use both MVVM+ (functional) or MVI (model-driven) style of programming * Share, distribute, or disable side-effects based on your team's needs -* Dedicated remote debugger IDEA/AS plugin and app for Windows, Linux, MacOS +* Dedicated remote debugger and code generation IDEA/AS plugin and app for Windows, Linux, MacOS * Integration with popular libraries, such as [Decompose (Essenty)](https://github.com/arkivanov/Decompose) * The core library depends on kotlin coroutines. Nothing else * Core library is fully covered by tests -* Minimal performance overhead, equal to using a simple Channel. Benchmarks are run regularly +* Minimal performance overhead, equal to using a simple Channel, with regular benchmarking * Learn more by exploring the [sample app](https://opensource.respawn.pro/FlowMVI/sample/) in your browser ## How does it look? diff --git a/benchmarks/src/jvmMain/kotlin/pro/respawn/flowmvi/benchmarks/setup/traditional/TraditionalMVIBenchmark.kt b/benchmarks/src/jvmMain/kotlin/pro/respawn/flowmvi/benchmarks/setup/traditional/TraditionalMVIBenchmark.kt index 9de9347e..8f9a4a54 100644 --- a/benchmarks/src/jvmMain/kotlin/pro/respawn/flowmvi/benchmarks/setup/traditional/TraditionalMVIBenchmark.kt +++ b/benchmarks/src/jvmMain/kotlin/pro/respawn/flowmvi/benchmarks/setup/traditional/TraditionalMVIBenchmark.kt @@ -20,6 +20,6 @@ internal class TraditionalMVIBenchmark { repeat(BenchmarkDefaults.intentsPerIteration) { store.onIntent(BenchmarkIntent.Increment) } - store.state.first { state -> state.counter >= BenchmarkDefaults.intentsPerIteration } + store.state.first { state -> state.counter == BenchmarkDefaults.intentsPerIteration } } } diff --git a/debugger/ideplugin/build.gradle.kts b/debugger/ideplugin/build.gradle.kts index fec2162c..899296d5 100644 --- a/debugger/ideplugin/build.gradle.kts +++ b/debugger/ideplugin/build.gradle.kts @@ -1,5 +1,7 @@ @file:Suppress("UnstableApiUsage") +import org.jetbrains.intellij.platform.gradle.IntelliJPlatformType + plugins { kotlin("jvm") alias(libs.plugins.compose) @@ -36,6 +38,14 @@ intellijPlatform { token = props["plugin.publishing.token"]?.toString() hidden = true } + pluginVerification { + ides { + props["plugin.local.ide.path"]?.toString()?.let(::local) ?: ide( + IntelliJPlatformType.AndroidStudio, + libs.versions.intellij.idea.get() + ) + } + } pluginConfiguration { ideaVersion { sinceBuild = Config.Plugin.minIdeaVersion