From e70dbc8eebaa0c242660f51e662c4354c2ce7a03 Mon Sep 17 00:00:00 2001 From: WahdanZ Date: Tue, 24 Feb 2026 09:35:30 +0100 Subject: [PATCH 1/7] Upgrade plugin to IntelliJ Platform Gradle Plugin 2.x targeting Android Studio Meerkat 2024.3.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Migrate from org.jetbrains.intellij 1.7.0 to org.jetbrains.intellij.platform 2.5.0 - Target Android Studio Meerkat (2024.3.1.1) instead of IntelliJ 2021.1.3 - Upgrade Gradle wrapper from 7.4 to 8.10.2 with JDK 17 - Upgrade Kotlin from 1.6.10 to 2.0.21, changelog plugin to 2.2.1 - Rewrite build.gradle.kts for new plugin 2.x API (intellijPlatform extension, androidStudio() dependency, bundledPlugin(), signing/publishing blocks) - Add pluginManagement block to settings.gradle.kts - Fix deprecated APIs: ServiceManager → service(), Notification → NotificationGroupManager, PopupChooserBuilder → JBPopupFactory, installCellRenderer → cellRenderer - Fix relocated Android Studio APIs: AndroidModuleModel → GradleAndroidModel, AndroidProcessHandler/AndroidDebugger new packages, getApplicationFacets → ProjectFacetManager - Add notificationGroup declaration to plugin.xml - Update GitHub Actions workflows to use v4 actions and Java 17 - Force Gradle JVM to JBR 17 via org.gradle.java.home in gradle.properties - Disable code instrumentation (not available for Android Studio target) - Bump plugin version to 2.1.0, sinceBuild to 243 (Meerkat) Co-Authored-By: Claude Sonnet 4.6 --- .github/workflows/build.yml | 86 ++------- .github/workflows/release.yml | 44 ++--- .idea/gradle.xml | 1 + build.gradle.kts | 178 +++++++++--------- gradle.properties | 43 +++-- gradle/wrapper/gradle-wrapper.properties | 2 +- settings.gradle.kts | 7 + src/main/kotlin/spock/adb/AdbControllerImp.kt | 40 ++-- .../kotlin/spock/adb/AppSettingService.kt | 6 +- .../kotlin/spock/adb/actions/BaseAction.kt | 16 +- .../adb/command/GetApplicationIDCommand.kt | 16 +- .../kotlin/spock/adb/debugger/Debugger.kt | 8 +- .../spock/adb/notification/CommonNotifier.kt | 13 +- src/main/resources/META-INF/plugin.xml | 85 ++++----- 14 files changed, 246 insertions(+), 299 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6bc4705..4553fcd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,30 +1,11 @@ -# GitHub Actions Workflow created for testing and preparing the plugin release in following steps: -# - validate Gradle Wrapper, -# - run 'test' and 'verifyPlugin' tasks, -# - run Qodana inspections, -# - run 'buildPlugin' task and prepare artifact for the further tests, -# - run 'runPluginVerifier' task, -# - create a draft release. -# -# Workflow is triggered on push and pull_request events. -# -# GitHub Actions reference: https://help.github.com/en/actions -# -## JBIJPPTPL - name: Build + on: - # Trigger the workflow on pushes to only the 'main' branch (this avoids duplicate checks being run e.g. for dependabot pull requests) push: branches: [master] - # Trigger the workflow on any pull request pull_request: jobs: - - # Run Gradle Wrapper Validation Action to verify the wrapper's checksum - # Run verifyPlugin, IntelliJ Plugin Verifier, and test Gradle tasks - # Build plugin and provide the artifact for the next workflow jobs build: name: Build runs-on: ubuntu-latest @@ -33,23 +14,19 @@ jobs: changelog: ${{ steps.properties.outputs.changelog }} steps: - # Check out current repository - name: Fetch Sources - uses: actions/checkout@v2.4.0 + uses: actions/checkout@v4 - # Validate wrapper - name: Gradle Wrapper Validation - uses: gradle/wrapper-validation-action@v1.0.4 + uses: gradle/actions/wrapper-validation@v4 - # Setup Java 11 environment for the next steps - name: Setup Java - uses: actions/setup-java@v2 + uses: actions/setup-java@v4 with: distribution: zulu - java-version: 11 + java-version: 17 cache: gradle - # Set environment variables - name: Export Properties id: properties shell: bash @@ -58,60 +35,41 @@ jobs: VERSION="$(echo "$PROPERTIES" | grep "^version:" | cut -f2- -d ' ')" NAME="$(echo "$PROPERTIES" | grep "^pluginName:" | cut -f2- -d ' ')" CHANGELOG="$(./gradlew getChangelog --unreleased --no-header --console=plain -q)" - CHANGELOG="${CHANGELOG//'%'/'%25'}" - CHANGELOG="${CHANGELOG//$'\n'/'%0A'}" - CHANGELOG="${CHANGELOG//$'\r'/'%0D'}" - - echo "::set-output name=version::$VERSION" - echo "::set-output name=name::$NAME" - echo "::set-output name=changelog::$CHANGELOG" - echo "::set-output name=pluginVerifierHomeDir::~/.pluginVerifier" - ./gradlew listProductsReleases # prepare list of IDEs for Plugin Verifier + echo "version=$VERSION" >> $GITHUB_OUTPUT + echo "name=$NAME" >> $GITHUB_OUTPUT + echo "changelog<> $GITHUB_OUTPUT + echo "$CHANGELOG" >> $GITHUB_OUTPUT + echo "EOF" >> $GITHUB_OUTPUT - # Cache Plugin Verifier IDEs - - name: Setup Plugin Verifier IDEs Cache - uses: actions/cache@v2.1.7 - with: - path: ${{ steps.properties.outputs.pluginVerifierHomeDir }}/ides - key: plugin-verifier-${{ hashFiles('build/listProductsReleases.txt') }} - - # Run Verify Plugin task and IntelliJ Plugin Verifier tool - name: Run Plugin Verification tasks - run: ./gradlew runPluginVerifier -Pplugin.verifier.home.dir=${{ steps.properties.outputs.pluginVerifierHomeDir }} + run: ./gradlew verifyPlugin - # Collect Plugin Verifier Result - name: Collect Plugin Verifier Result if: ${{ always() }} - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: pluginVerifier-result path: ${{ github.workspace }}/build/reports/pluginVerifier -# # Run Qodana inspections -# - name: Qodana - Code Inspection -# uses: JetBrains/qodana-action@v4.2.5 + - name: Build Plugin + run: ./gradlew buildPlugin - # Prepare plugin archive content for creating artifact - name: Prepare Plugin Artifact id: artifact shell: bash run: | cd ${{ github.workspace }}/build/distributions - FILENAME=`ls *.zip` + FILENAME=$(ls *.zip | head -1) unzip "$FILENAME" -d content + echo "filename=${FILENAME%.zip}" >> $GITHUB_OUTPUT - echo "::set-output name=filename::${FILENAME:0:-4}" - - # Store already-built plugin as an artifact for downloading - name: Upload artifact - uses: actions/upload-artifact@v2.2.4 + uses: actions/upload-artifact@v4 with: name: ${{ steps.artifact.outputs.filename }} path: ./build/distributions/content/*/* - # Prepare a draft release for GitHub Releases page for the manual verification - # If accepted and published, release workflow would be triggered releaseDraft: name: Release Draft if: github.event_name != 'pull_request' @@ -119,11 +77,9 @@ jobs: runs-on: ubuntu-latest steps: - # Check out current repository - name: Fetch Sources - uses: actions/checkout@v2.4.0 + uses: actions/checkout@v4 - # Remove old release drafts by using the curl request for the available releases with draft flag - name: Remove Old Release Drafts env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -132,7 +88,6 @@ jobs: --jq '.[] | select(.draft == true) | .id' \ | xargs -I '{}' gh api -X DELETE repos/{owner}/{repo}/releases/{} - # Create new release draft - which is not publicly visible and requires manual acceptance - name: Create Release Draft env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -140,7 +95,4 @@ jobs: gh release create v${{ needs.build.outputs.version }} \ --draft \ --title "v${{ needs.build.outputs.version }}" \ - --notes "$(cat << 'EOM' - ${{ needs.build.outputs.changelog }} - EOM - )" \ No newline at end of file + --notes "${{ needs.build.outputs.changelog }}" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 31b35c4..7f42e2a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,69 +1,49 @@ -# GitHub Actions Workflow created for handling the release process based on the draft release prepared -# with the Build workflow. Running the publishPlugin task requires the PUBLISH_TOKEN secret provided. - name: Release + on: release: types: [prereleased, released] jobs: - - # Prepare and publish the plugin to the Marketplace repository release: name: Publish Plugin runs-on: ubuntu-latest steps: - # Check out current repository - name: Fetch Sources - uses: actions/checkout@v2.4.0 + uses: actions/checkout@v4 with: ref: ${{ github.event.release.tag_name }} - # Setup Java 11 environment for the next steps - name: Setup Java - uses: actions/setup-java@v2 + uses: actions/setup-java@v4 with: distribution: zulu - java-version: 11 + java-version: 17 cache: gradle - # Set environment variables - - name: Export Properties - id: properties - shell: bash - run: | - CHANGELOG="$(cat << 'EOM' | sed -e 's/^[[:space:]]*$//g' -e '/./,$!d' - ${{ github.event.release.body }} - EOM - )" - - CHANGELOG="${CHANGELOG//'%'/'%25'}" - CHANGELOG="${CHANGELOG//$'\n'/'%0A'}" - CHANGELOG="${CHANGELOG//$'\r'/'%0D'}" - echo "::set-output name=changelog::$CHANGELOG" - # Update Unreleased section with the current release note - name: Patch Changelog - if: ${{ steps.properties.outputs.changelog != '' }} + if: ${{ github.event.release.body != '' }} env: - CHANGELOG: ${{ steps.properties.outputs.changelog }} + CHANGELOG: ${{ github.event.release.body }} run: | ./gradlew patchChangelog --release-note="$CHANGELOG" - # Publish the plugin to the Marketplace + - name: Publish Plugin env: PUBLISH_TOKEN: ${{ secrets.PUBLISH_TOKEN }} + CERTIFICATE_CHAIN: ${{ secrets.CERTIFICATE_CHAIN }} + PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }} + PRIVATE_KEY_PASSWORD: ${{ secrets.PRIVATE_KEY_PASSWORD }} run: ./gradlew publishPlugin - # Upload artifact as a release asset - name: Upload Release Asset env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: gh release upload ${{ github.event.release.tag_name }} ./build/distributions/* - # Create pull request - name: Create Pull Request - if: ${{ steps.properties.outputs.changelog != '' }} + if: ${{ github.event.release.body != '' }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | @@ -78,4 +58,4 @@ jobs: --title "Changelog update - \`$VERSION\`" \ --body "Current pull request contains patched \`CHANGELOG.md\` file for the \`$VERSION\` version." \ --base master \ - --head $BRANCH \ No newline at end of file + --head $BRANCH diff --git a/.idea/gradle.xml b/.idea/gradle.xml index ba1ec5c..053ba83 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -5,6 +5,7 @@