Compare commits
195 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
de6b4c8a9d | ||
|
|
450ea7d908 | ||
|
|
f0d63e98b9 | ||
|
|
32ac468019 | ||
|
|
71b7be9e41 | ||
|
|
7888f159fb | ||
|
|
8ca795f3c2 | ||
|
|
44e2024ee6 | ||
|
|
acbc1b8330 | ||
|
|
00e77303eb | ||
|
|
98a0b72b85 | ||
|
|
01b925e38d | ||
|
|
93e835087c | ||
|
|
ae051ed9ae | ||
|
|
ab68cd4615 | ||
|
|
65ba214871 | ||
|
|
8e51372815 | ||
|
|
b75a84f0ed | ||
|
|
dd98301953 | ||
|
|
3dbbc218d0 | ||
|
|
3c9f911ebf | ||
|
|
445723d8f8 | ||
|
|
61febf6edf | ||
|
|
f6ce1eec46 | ||
|
|
9f231df60d | ||
|
|
9d7a764e19 | ||
|
|
d2e9a51d2b | ||
|
|
e4e19c800f | ||
|
|
10173d8a69 | ||
|
|
3a19f3e40f | ||
|
|
58524d5dd4 | ||
|
|
9f9290fdcb | ||
|
|
ebc2f61dfe | ||
|
|
d6e36aaec5 | ||
|
|
43d9fb39b1 | ||
|
|
e0f54377b7 | ||
|
|
b67f51c520 | ||
|
|
d08a8dba31 | ||
|
|
dfe87322e9 | ||
|
|
09bc34b776 | ||
|
|
0271dcb49b | ||
|
|
28451c0c0f | ||
|
|
faaec28ff8 | ||
|
|
cfa997f8d2 | ||
|
|
52eb4c92fb | ||
|
|
02df6e806c | ||
|
|
ce1a11a6b9 | ||
|
|
1e7a9b38cc | ||
|
|
03a31b46c3 | ||
|
|
82c43ec491 | ||
|
|
f67ed11cac | ||
|
|
6583a88033 | ||
|
|
2d9584084c | ||
|
|
cd13a2d1a2 | ||
|
|
f45d97a1e6 | ||
|
|
47bc6b5b4e | ||
|
|
e827319b92 | ||
|
|
3eb0c4832a | ||
|
|
5279af9702 | ||
|
|
fc6e282c04 | ||
|
|
0c6613b987 | ||
|
|
18cf3a02f8 | ||
|
|
2b8d1c31ee | ||
|
|
f83e272860 | ||
|
|
0b77be3a3b | ||
|
|
f5a646df7c | ||
|
|
a6be38b93c | ||
|
|
2430382824 | ||
|
|
a1b47a36de | ||
|
|
a38ef018fa | ||
|
|
4137f22893 | ||
|
|
0c4795966e | ||
|
|
f18711da36 | ||
|
|
24980012fb | ||
|
|
08d83f4f96 | ||
|
|
4956d17378 | ||
|
|
3658908ed0 | ||
|
|
e30e804721 | ||
|
|
f1b0ba46c8 | ||
|
|
f4e80a7796 | ||
|
|
408e30ee99 | ||
|
|
21917d476d | ||
|
|
b7272b680a | ||
|
|
b604ef476e | ||
|
|
da439ee085 | ||
|
|
9f190a0c4c | ||
|
|
554927760c | ||
|
|
a57ce8cf7c | ||
|
|
3bc8732088 | ||
|
|
aa87036bba | ||
|
|
69f02bd481 | ||
|
|
48e88ac4af | ||
|
|
492fd44e34 | ||
|
|
3dbded33a6 | ||
|
|
466e03eb1b | ||
|
|
4b3f6f171e | ||
|
|
09f04861ff | ||
|
|
d9eb4a26fb | ||
|
|
3b3d657bc7 | ||
|
|
0694cb62f5 | ||
|
|
4b30a48b83 | ||
|
|
5a68eff3d6 | ||
|
|
b30863ca52 | ||
|
|
3a5fce30c5 | ||
|
|
8c5a9ebf68 | ||
|
|
a8f4883cb9 | ||
|
|
356fe6caaf | ||
|
|
d93dc7f75d | ||
|
|
4296c354ba | ||
|
|
73dfb867a9 | ||
|
|
9319bfe85f | ||
|
|
4069e3114d | ||
|
|
80cf22431a | ||
|
|
bcc4c264bd | ||
|
|
22fd72e38e | ||
|
|
b2883f385d | ||
|
|
413f9b8031 | ||
|
|
02dad2d7d7 | ||
|
|
4eb23fa915 | ||
|
|
f2145f8da6 | ||
|
|
0771f70963 | ||
|
|
3d5e3b3b8d | ||
|
|
526c8baa4e | ||
|
|
5ab9b3da63 | ||
|
|
98cba4ff31 | ||
|
|
f78904a98d | ||
|
|
54903fe539 | ||
|
|
d0b82ae02c | ||
|
|
aeb824be14 | ||
|
|
1cbcc2c3cd | ||
|
|
e6049b2283 | ||
|
|
66a44703e0 | ||
|
|
ff48dc7555 | ||
|
|
b83e18d0ad | ||
|
|
023aa9e243 | ||
|
|
4cf4ef8a95 | ||
|
|
038d00b51a | ||
|
|
f8a064fa9e | ||
|
|
d9c5d5129d | ||
|
|
8e0270c38d | ||
|
|
305bfc81a1 | ||
|
|
6676260076 | ||
|
|
ad24ddb048 | ||
|
|
d7cd4f603f | ||
|
|
d3388de4a2 | ||
|
|
1ad329de91 | ||
|
|
777fd2ad9c | ||
|
|
6d938b80ba | ||
|
|
3c399f798b | ||
|
|
b0c4bb5b62 | ||
|
|
b9d337eb79 | ||
|
|
cec964e1d8 | ||
|
|
01efb95680 | ||
|
|
87e97653fe | ||
|
|
ef162c2a10 | ||
|
|
3506b32eb4 | ||
|
|
b947028171 | ||
|
|
d320c4195c | ||
|
|
8c3191eec0 | ||
|
|
dc3507cc71 | ||
|
|
d4550874ba | ||
|
|
f54d138653 | ||
|
|
7fae82c680 | ||
|
|
f43cbe52ac | ||
|
|
14d79202e4 | ||
|
|
fefb39725a | ||
|
|
4bd83f6553 | ||
|
|
1d73667d0c | ||
|
|
9538af35ff | ||
|
|
4a6cef52ae | ||
|
|
381a2347f6 | ||
|
|
7f69374026 | ||
|
|
79bea43e25 | ||
|
|
af9a2b4c33 | ||
|
|
0a59020482 | ||
|
|
0999d97fe5 | ||
|
|
b4ff5e14a9 | ||
|
|
51cac269b1 | ||
|
|
767bea0f5a | ||
|
|
8c641e4966 | ||
|
|
f83b2a7dd4 | ||
|
|
22f70af698 | ||
|
|
87a8cd9930 | ||
|
|
7202bfac40 | ||
|
|
240e06cc53 | ||
|
|
38a12bf912 | ||
|
|
a53b879b23 | ||
|
|
bbaabfe294 | ||
|
|
da699e9dbf | ||
|
|
aca1a500bc | ||
|
|
c7799095f6 | ||
|
|
be87c6b2b2 | ||
|
|
a746a36063 | ||
|
|
2fd14cda2e | ||
|
|
a23f859ba7 |
BIN
.github/readme/draft-release.png
vendored
|
Before Width: | Height: | Size: 92 KiB After Width: | Height: | Size: 64 KiB |
BIN
.github/readme/run-debug-configurations.png
vendored
|
Before Width: | Height: | Size: 97 KiB After Width: | Height: | Size: 87 KiB |
BIN
.github/readme/run-logs.png
vendored
|
Before Width: | Height: | Size: 123 KiB After Width: | Height: | Size: 195 KiB |
BIN
.github/readme/settings-secrets.png
vendored
|
Before Width: | Height: | Size: 264 KiB After Width: | Height: | Size: 345 KiB |
BIN
.github/readme/use-this-template.png
vendored
|
Before Width: | Height: | Size: 175 KiB After Width: | Height: | Size: 234 KiB |
10
.github/template-cleanup/README.md
vendored
@ -11,10 +11,11 @@
|
|||||||
- [ ] Adjust the plugin description in `README` (see [Tips][docs:plugin-description])
|
- [ ] Adjust the plugin description in `README` (see [Tips][docs:plugin-description])
|
||||||
- [ ] Review the [Legal Agreements](https://plugins.jetbrains.com/docs/marketplace/legal-agreements.html?from=IJPluginTemplate).
|
- [ ] Review the [Legal Agreements](https://plugins.jetbrains.com/docs/marketplace/legal-agreements.html?from=IJPluginTemplate).
|
||||||
- [ ] [Publish a plugin manually](https://plugins.jetbrains.com/docs/intellij/publishing-plugin.html?from=IJPluginTemplate) for the first time.
|
- [ ] [Publish a plugin manually](https://plugins.jetbrains.com/docs/intellij/publishing-plugin.html?from=IJPluginTemplate) for the first time.
|
||||||
- [ ] Set the `MARKETPLACE_ID` in the above README badges. You can obtain it once the plugin is published to the marketplace.
|
- [ ] Set the `MARKETPLACE_ID` in the above README badges. You can obtain it once the plugin is published to JetBrains Marketplace.
|
||||||
- [ ] Set the [Plugin Signing](https://plugins.jetbrains.com/docs/intellij/plugin-signing.html?from=IJPluginTemplate) related [secrets](https://github.com/JetBrains/intellij-platform-plugin-template#environment-variables).
|
- [ ] Set the [Plugin Signing](https://plugins.jetbrains.com/docs/intellij/plugin-signing.html?from=IJPluginTemplate) related [secrets](https://github.com/JetBrains/intellij-platform-plugin-template#environment-variables).
|
||||||
- [ ] Set the [Deployment Token](https://plugins.jetbrains.com/docs/marketplace/plugin-upload.html?from=IJPluginTemplate).
|
- [ ] Set the [Deployment Token](https://plugins.jetbrains.com/docs/marketplace/plugin-upload.html?from=IJPluginTemplate).
|
||||||
- [ ] Click the <kbd>Watch</kbd> button on the top of the [IntelliJ Platform Plugin Template][template] to be notified about releases containing new features and fixes.
|
- [ ] Click the <kbd>Watch</kbd> button on the top of the [IntelliJ Platform Plugin Template][template] to be notified about releases containing new features and fixes.
|
||||||
|
- [ ] Configure the [CODECOV_TOKEN](https://docs.codecov.com/docs/quick-start) secret for automated test coverage reports on PRs
|
||||||
|
|
||||||
<!-- Plugin description -->
|
<!-- Plugin description -->
|
||||||
This Fancy IntelliJ Platform Plugin is going to be your implementation of the brilliant ideas that you have.
|
This Fancy IntelliJ Platform Plugin is going to be your implementation of the brilliant ideas that you have.
|
||||||
@ -31,6 +32,13 @@ To keep everything working, do not remove `<!-- ... -->` sections.
|
|||||||
<kbd>Settings/Preferences</kbd> > <kbd>Plugins</kbd> > <kbd>Marketplace</kbd> > <kbd>Search for "%NAME%"</kbd> >
|
<kbd>Settings/Preferences</kbd> > <kbd>Plugins</kbd> > <kbd>Marketplace</kbd> > <kbd>Search for "%NAME%"</kbd> >
|
||||||
<kbd>Install</kbd>
|
<kbd>Install</kbd>
|
||||||
|
|
||||||
|
- Using JetBrains Marketplace:
|
||||||
|
|
||||||
|
Go to [JetBrains Marketplace](https://plugins.jetbrains.com/plugin/MARKETPLACE_ID) and install it by clicking the <kbd>Install to ...</kbd> button in case your IDE is running.
|
||||||
|
|
||||||
|
You can also download the [latest release](https://plugins.jetbrains.com/plugin/MARKETPLACE_ID/versions) from JetBrains Marketplace and install it manually using
|
||||||
|
<kbd>Settings/Preferences</kbd> > <kbd>Plugins</kbd> > <kbd>⚙️</kbd> > <kbd>Install plugin from disk...</kbd>
|
||||||
|
|
||||||
- Manually:
|
- Manually:
|
||||||
|
|
||||||
Download the [latest release](https://github.com/%REPOSITORY%/releases/latest) and install it manually using
|
Download the [latest release](https://github.com/%REPOSITORY%/releases/latest) and install it manually using
|
||||||
|
|||||||
14
.github/template-cleanup/gradle.properties
vendored
@ -7,19 +7,21 @@ pluginRepositoryUrl = https://github.com/%REPOSITORY%
|
|||||||
pluginVersion = 0.0.1
|
pluginVersion = 0.0.1
|
||||||
|
|
||||||
# Supported build number ranges and IntelliJ Platform versions -> https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html
|
# Supported build number ranges and IntelliJ Platform versions -> https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html
|
||||||
pluginSinceBuild = 232
|
pluginSinceBuild = 252
|
||||||
pluginUntilBuild = 242.*
|
|
||||||
|
|
||||||
# IntelliJ Platform Properties -> https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#configuration-intellij-extension
|
# IntelliJ Platform Properties -> https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#configuration-intellij-extension
|
||||||
platformType = IC
|
platformVersion = 2025.2.5
|
||||||
platformVersion = 2023.2.7
|
|
||||||
|
|
||||||
# Plugin Dependencies -> https://plugins.jetbrains.com/docs/intellij/plugin-dependencies.html
|
# Plugin Dependencies -> https://plugins.jetbrains.com/docs/intellij/plugin-dependencies.html
|
||||||
# Example: platformPlugins = com.intellij.java, com.jetbrains.php:203.4449.22
|
# Example: platformPlugins = com.jetbrains.php:203.4449.22, org.intellij.scala:2023.3.27@EAP
|
||||||
platformPlugins =
|
platformPlugins =
|
||||||
|
# Example: platformBundledPlugins = com.intellij.java
|
||||||
|
platformBundledPlugins =
|
||||||
|
# Example: platformBundledModules = intellij.spellchecker
|
||||||
|
platformBundledModules =
|
||||||
|
|
||||||
# Gradle Releases -> https://github.com/gradle/gradle/releases
|
# Gradle Releases -> https://github.com/gradle/gradle/releases
|
||||||
gradleVersion = 8.9
|
gradleVersion = 9.2.1
|
||||||
|
|
||||||
# Opt-out flag for bundling Kotlin standard library -> https://jb.gg/intellij-platform-kotlin-stdlib
|
# Opt-out flag for bundling Kotlin standard library -> https://jb.gg/intellij-platform-kotlin-stdlib
|
||||||
kotlin.stdlib.default.dependency = false
|
kotlin.stdlib.default.dependency = false
|
||||||
|
|||||||
2
.github/template-cleanup/settings.gradle.kts
vendored
@ -1,5 +1,5 @@
|
|||||||
plugins {
|
plugins {
|
||||||
id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0"
|
id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0"
|
||||||
}
|
}
|
||||||
|
|
||||||
rootProject.name = "%NAME%"
|
rootProject.name = "%NAME%"
|
||||||
|
|||||||
134
.github/workflows/build.yml
vendored
@ -26,54 +26,33 @@ concurrency:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
|
||||||
# Prepare environment and build the plugin
|
# Prepare the environment and build the plugin
|
||||||
build:
|
build:
|
||||||
name: Build
|
name: Build
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
outputs:
|
|
||||||
version: ${{ steps.properties.outputs.version }}
|
|
||||||
changelog: ${{ steps.properties.outputs.changelog }}
|
|
||||||
pluginVerifierHomeDir: ${{ steps.properties.outputs.pluginVerifierHomeDir }}
|
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
|
# Free GitHub Actions Environment Disk Space
|
||||||
|
- name: Maximize Build Space
|
||||||
|
uses: jlumbroso/free-disk-space@v1.3.1
|
||||||
|
with:
|
||||||
|
tool-cache: false
|
||||||
|
large-packages: false
|
||||||
|
|
||||||
# Check out the current repository
|
# Check out the current repository
|
||||||
- name: Fetch Sources
|
- name: Fetch Sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
|
|
||||||
# Validate wrapper
|
# Set up the Java environment for the next steps
|
||||||
- name: Gradle Wrapper Validation
|
|
||||||
uses: gradle/actions/wrapper-validation@v3
|
|
||||||
|
|
||||||
# Set up Java environment for the next steps
|
|
||||||
- name: Setup Java
|
- name: Setup Java
|
||||||
uses: actions/setup-java@v4
|
uses: actions/setup-java@v5
|
||||||
with:
|
with:
|
||||||
distribution: zulu
|
distribution: zulu
|
||||||
java-version: 17
|
java-version: 21
|
||||||
|
|
||||||
# Setup Gradle
|
# Setup Gradle
|
||||||
- name: Setup Gradle
|
- name: Setup Gradle
|
||||||
uses: gradle/actions/setup-gradle@v3
|
uses: gradle/actions/setup-gradle@v5
|
||||||
with:
|
|
||||||
gradle-home-cache-cleanup: true
|
|
||||||
|
|
||||||
# Set environment variables
|
|
||||||
- name: Export Properties
|
|
||||||
id: properties
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
PROPERTIES="$(./gradlew properties --console=plain -q)"
|
|
||||||
VERSION="$(echo "$PROPERTIES" | grep "^version:" | cut -f2- -d ' ')"
|
|
||||||
CHANGELOG="$(./gradlew getChangelog --unreleased --no-header --console=plain -q)"
|
|
||||||
|
|
||||||
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
|
||||||
echo "pluginVerifierHomeDir=~/.pluginVerifier" >> $GITHUB_OUTPUT
|
|
||||||
|
|
||||||
echo "changelog<<EOF" >> $GITHUB_OUTPUT
|
|
||||||
echo "$CHANGELOG" >> $GITHUB_OUTPUT
|
|
||||||
echo "EOF" >> $GITHUB_OUTPUT
|
|
||||||
|
|
||||||
./gradlew listProductsReleases # prepare list of IDEs for Plugin Verifier
|
|
||||||
|
|
||||||
# Build plugin
|
# Build plugin
|
||||||
- name: Build plugin
|
- name: Build plugin
|
||||||
@ -90,9 +69,9 @@ jobs:
|
|||||||
|
|
||||||
echo "filename=${FILENAME:0:-4}" >> $GITHUB_OUTPUT
|
echo "filename=${FILENAME:0:-4}" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
# Store already-built plugin as an artifact for downloading
|
# Store an already-built plugin as an artifact for downloading
|
||||||
- name: Upload artifact
|
- name: Upload artifact
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v5
|
||||||
with:
|
with:
|
||||||
name: ${{ steps.artifact.outputs.filename }}
|
name: ${{ steps.artifact.outputs.filename }}
|
||||||
path: ./build/distributions/content/*/*
|
path: ./build/distributions/content/*/*
|
||||||
@ -104,22 +83,29 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
|
# Free GitHub Actions Environment Disk Space
|
||||||
|
- name: Maximize Build Space
|
||||||
|
uses: jlumbroso/free-disk-space@v1.3.1
|
||||||
|
with:
|
||||||
|
tool-cache: false
|
||||||
|
large-packages: false
|
||||||
|
|
||||||
# Check out the current repository
|
# Check out the current repository
|
||||||
- name: Fetch Sources
|
- name: Fetch Sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
|
|
||||||
# Set up Java environment for the next steps
|
# Set up the Java environment for the next steps
|
||||||
- name: Setup Java
|
- name: Setup Java
|
||||||
uses: actions/setup-java@v4
|
uses: actions/setup-java@v5
|
||||||
with:
|
with:
|
||||||
distribution: zulu
|
distribution: zulu
|
||||||
java-version: 17
|
java-version: 21
|
||||||
|
|
||||||
# Setup Gradle
|
# Setup Gradle
|
||||||
- name: Setup Gradle
|
- name: Setup Gradle
|
||||||
uses: gradle/actions/setup-gradle@v3
|
uses: gradle/actions/setup-gradle@v5
|
||||||
with:
|
with:
|
||||||
gradle-home-cache-cleanup: true
|
cache-read-only: true
|
||||||
|
|
||||||
# Run tests
|
# Run tests
|
||||||
- name: Run Tests
|
- name: Run Tests
|
||||||
@ -128,18 +114,19 @@ jobs:
|
|||||||
# Collect Tests Result of failed tests
|
# Collect Tests Result of failed tests
|
||||||
- name: Collect Tests Result
|
- name: Collect Tests Result
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() }}
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v5
|
||||||
with:
|
with:
|
||||||
name: tests-result
|
name: tests-result
|
||||||
path: ${{ github.workspace }}/build/reports/tests
|
path: ${{ github.workspace }}/build/reports/tests
|
||||||
|
|
||||||
# Upload the Kover report to CodeCov
|
# Upload the Kover report to CodeCov
|
||||||
- name: Upload Code Coverage Report
|
- name: Upload Code Coverage Report
|
||||||
uses: codecov/codecov-action@v4
|
uses: codecov/codecov-action@v5
|
||||||
with:
|
with:
|
||||||
files: ${{ github.workspace }}/build/reports/kover/report.xml
|
files: ${{ github.workspace }}/build/reports/kover/report.xml
|
||||||
|
token: ${{ secrets.CODECOV_TOKEN }}
|
||||||
|
|
||||||
# Run Qodana inspections and provide report
|
# Run Qodana inspections and provide a report
|
||||||
inspectCode:
|
inspectCode:
|
||||||
name: Inspect code
|
name: Inspect code
|
||||||
needs: [ build ]
|
needs: [ build ]
|
||||||
@ -152,25 +139,28 @@ jobs:
|
|||||||
|
|
||||||
# Free GitHub Actions Environment Disk Space
|
# Free GitHub Actions Environment Disk Space
|
||||||
- name: Maximize Build Space
|
- name: Maximize Build Space
|
||||||
uses: jlumbroso/free-disk-space@main
|
uses: jlumbroso/free-disk-space@v1.3.1
|
||||||
with:
|
with:
|
||||||
tool-cache: false
|
tool-cache: false
|
||||||
large-packages: false
|
large-packages: false
|
||||||
|
|
||||||
# Check out the current repository
|
# Check out the current repository
|
||||||
- name: Fetch Sources
|
- name: Fetch Sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
|
with:
|
||||||
|
ref: ${{ github.event.pull_request.head.sha }} # to check out the actual pull request commit, not the merge commit
|
||||||
|
fetch-depth: 0 # a full history is required for pull request analysis
|
||||||
|
|
||||||
# Set up Java environment for the next steps
|
# Set up the Java environment for the next steps
|
||||||
- name: Setup Java
|
- name: Setup Java
|
||||||
uses: actions/setup-java@v4
|
uses: actions/setup-java@v5
|
||||||
with:
|
with:
|
||||||
distribution: zulu
|
distribution: zulu
|
||||||
java-version: 17
|
java-version: 21
|
||||||
|
|
||||||
# Run Qodana inspections
|
# Run Qodana inspections
|
||||||
- name: Qodana - Code Inspection
|
- name: Qodana - Code Inspection
|
||||||
uses: JetBrains/qodana-action@v2024.1.5
|
uses: JetBrains/qodana-action@v2025.1.1
|
||||||
with:
|
with:
|
||||||
cache-default-branch-only: true
|
cache-default-branch-only: true
|
||||||
|
|
||||||
@ -183,49 +173,42 @@ jobs:
|
|||||||
|
|
||||||
# Free GitHub Actions Environment Disk Space
|
# Free GitHub Actions Environment Disk Space
|
||||||
- name: Maximize Build Space
|
- name: Maximize Build Space
|
||||||
uses: jlumbroso/free-disk-space@main
|
uses: jlumbroso/free-disk-space@v1.3.1
|
||||||
with:
|
with:
|
||||||
tool-cache: false
|
tool-cache: false
|
||||||
large-packages: false
|
large-packages: false
|
||||||
|
|
||||||
# Check out the current repository
|
# Check out the current repository
|
||||||
- name: Fetch Sources
|
- name: Fetch Sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
|
|
||||||
# Set up Java environment for the next steps
|
# Set up the Java environment for the next steps
|
||||||
- name: Setup Java
|
- name: Setup Java
|
||||||
uses: actions/setup-java@v4
|
uses: actions/setup-java@v5
|
||||||
with:
|
with:
|
||||||
distribution: zulu
|
distribution: zulu
|
||||||
java-version: 17
|
java-version: 21
|
||||||
|
|
||||||
# Setup Gradle
|
# Setup Gradle
|
||||||
- name: Setup Gradle
|
- name: Setup Gradle
|
||||||
uses: gradle/actions/setup-gradle@v3
|
uses: gradle/actions/setup-gradle@v5
|
||||||
with:
|
with:
|
||||||
gradle-home-cache-cleanup: true
|
cache-read-only: true
|
||||||
|
|
||||||
# Cache Plugin Verifier IDEs
|
|
||||||
- name: Setup Plugin Verifier IDEs Cache
|
|
||||||
uses: actions/cache@v4
|
|
||||||
with:
|
|
||||||
path: ${{ needs.build.outputs.pluginVerifierHomeDir }}/ides
|
|
||||||
key: plugin-verifier-${{ hashFiles('build/listProductsReleases.txt') }}
|
|
||||||
|
|
||||||
# Run Verify Plugin task and IntelliJ Plugin Verifier tool
|
# Run Verify Plugin task and IntelliJ Plugin Verifier tool
|
||||||
- name: Run Plugin Verification tasks
|
- name: Run Plugin Verification tasks
|
||||||
run: ./gradlew runPluginVerifier -Dplugin.verifier.home.dir=${{ needs.build.outputs.pluginVerifierHomeDir }}
|
run: ./gradlew verifyPlugin
|
||||||
|
|
||||||
# Collect Plugin Verifier Result
|
# Collect Plugin Verifier Result
|
||||||
- name: Collect Plugin Verifier Result
|
- name: Collect Plugin Verifier Result
|
||||||
if: ${{ always() }}
|
if: ${{ always() }}
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v5
|
||||||
with:
|
with:
|
||||||
name: pluginVerifier-result
|
name: pluginVerifier-result
|
||||||
path: ${{ github.workspace }}/build/reports/pluginVerifier
|
path: ${{ github.workspace }}/build/reports/pluginVerifier
|
||||||
|
|
||||||
# Prepare a draft release for GitHub Releases page for the manual verification
|
# Prepare a draft release for GitHub Releases page for the manual verification
|
||||||
# If accepted and published, release workflow would be triggered
|
# If accepted and published, the release workflow would be triggered
|
||||||
releaseDraft:
|
releaseDraft:
|
||||||
name: Release draft
|
name: Release draft
|
||||||
if: github.event_name != 'pull_request'
|
if: github.event_name != 'pull_request'
|
||||||
@ -237,7 +220,7 @@ jobs:
|
|||||||
|
|
||||||
# Check out the current repository
|
# Check out the current repository
|
||||||
- name: Fetch Sources
|
- name: Fetch Sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
|
|
||||||
# Remove old release drafts by using the curl request for the available releases with a draft flag
|
# Remove old release drafts by using the curl request for the available releases with a draft flag
|
||||||
- name: Remove Old Release Drafts
|
- name: Remove Old Release Drafts
|
||||||
@ -253,10 +236,11 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
run: |
|
run: |
|
||||||
gh release create "v${{ needs.build.outputs.version }}" \
|
VERSION=$(./gradlew properties --property version --quiet --console=plain | tail -n 1 | cut -f2- -d ' ')
|
||||||
|
RELEASE_NOTE="./build/tmp/release_note.txt"
|
||||||
|
./gradlew getChangelog --unreleased --no-header --quiet --console=plain --output-file=$RELEASE_NOTE
|
||||||
|
|
||||||
|
gh release create $VERSION \
|
||||||
--draft \
|
--draft \
|
||||||
--title "v${{ needs.build.outputs.version }}" \
|
--title $VERSION \
|
||||||
--notes "$(cat << 'EOM'
|
--notes-file $RELEASE_NOTE
|
||||||
${{ needs.build.outputs.changelog }}
|
|
||||||
EOM
|
|
||||||
)"
|
|
||||||
|
|||||||
51
.github/workflows/release.yml
vendored
@ -1,5 +1,5 @@
|
|||||||
# GitHub Actions Workflow created for handling the release process based on the draft release prepared with the Build workflow.
|
# GitHub Actions Workflow created for handling the release process based on the draft release prepared with the Build workflow.
|
||||||
# Running the publishPlugin task requires all following secrets to be provided: PUBLISH_TOKEN, PRIVATE_KEY, PRIVATE_KEY_PASSWORD, CERTIFICATE_CHAIN.
|
# Running the publishPlugin task requires all the following secrets to be provided: PUBLISH_TOKEN, PRIVATE_KEY, PRIVATE_KEY_PASSWORD, CERTIFICATE_CHAIN.
|
||||||
# See https://plugins.jetbrains.com/docs/intellij/plugin-signing.html for more information.
|
# See https://plugins.jetbrains.com/docs/intellij/plugin-signing.html for more information.
|
||||||
|
|
||||||
name: Release
|
name: Release
|
||||||
@ -18,46 +18,43 @@ jobs:
|
|||||||
pull-requests: write
|
pull-requests: write
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
|
# Free GitHub Actions Environment Disk Space
|
||||||
|
- name: Maximize Build Space
|
||||||
|
uses: jlumbroso/free-disk-space@v1.3.1
|
||||||
|
with:
|
||||||
|
tool-cache: false
|
||||||
|
large-packages: false
|
||||||
|
|
||||||
# Check out the current repository
|
# Check out the current repository
|
||||||
- name: Fetch Sources
|
- name: Fetch Sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
with:
|
with:
|
||||||
ref: ${{ github.event.release.tag_name }}
|
ref: ${{ github.event.release.tag_name }}
|
||||||
|
|
||||||
# Set up Java environment for the next steps
|
# Set up the Java environment for the next steps
|
||||||
- name: Setup Java
|
- name: Setup Java
|
||||||
uses: actions/setup-java@v4
|
uses: actions/setup-java@v5
|
||||||
with:
|
with:
|
||||||
distribution: zulu
|
distribution: zulu
|
||||||
java-version: 17
|
java-version: 21
|
||||||
|
|
||||||
# Setup Gradle
|
# Setup Gradle
|
||||||
- name: Setup Gradle
|
- name: Setup Gradle
|
||||||
uses: gradle/actions/setup-gradle@v3
|
uses: gradle/actions/setup-gradle@v5
|
||||||
with:
|
with:
|
||||||
gradle-home-cache-cleanup: true
|
cache-read-only: true
|
||||||
|
|
||||||
# Set environment variables
|
# Update the Unreleased section with the current release note
|
||||||
- name: Export Properties
|
|
||||||
id: properties
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
CHANGELOG="$(cat << 'EOM' | sed -e 's/^[[:space:]]*$//g' -e '/./,$!d'
|
|
||||||
${{ github.event.release.body }}
|
|
||||||
EOM
|
|
||||||
)"
|
|
||||||
|
|
||||||
echo "changelog<<EOF" >> $GITHUB_OUTPUT
|
|
||||||
echo "$CHANGELOG" >> $GITHUB_OUTPUT
|
|
||||||
echo "EOF" >> $GITHUB_OUTPUT
|
|
||||||
|
|
||||||
# Update Unreleased section with the current release note
|
|
||||||
- name: Patch Changelog
|
- name: Patch Changelog
|
||||||
if: ${{ steps.properties.outputs.changelog != '' }}
|
if: ${{ github.event.release.body != '' }}
|
||||||
env:
|
env:
|
||||||
CHANGELOG: ${{ steps.properties.outputs.changelog }}
|
CHANGELOG: ${{ github.event.release.body }}
|
||||||
run: |
|
run: |
|
||||||
./gradlew patchChangelog --release-note="$CHANGELOG"
|
RELEASE_NOTE="./build/tmp/release_note.txt"
|
||||||
|
mkdir -p "$(dirname "$RELEASE_NOTE")"
|
||||||
|
echo "$CHANGELOG" > $RELEASE_NOTE
|
||||||
|
|
||||||
|
./gradlew patchChangelog --release-note-file=$RELEASE_NOTE
|
||||||
|
|
||||||
# Publish the plugin to JetBrains Marketplace
|
# Publish the plugin to JetBrains Marketplace
|
||||||
- name: Publish Plugin
|
- name: Publish Plugin
|
||||||
@ -68,7 +65,7 @@ jobs:
|
|||||||
PRIVATE_KEY_PASSWORD: ${{ secrets.PRIVATE_KEY_PASSWORD }}
|
PRIVATE_KEY_PASSWORD: ${{ secrets.PRIVATE_KEY_PASSWORD }}
|
||||||
run: ./gradlew publishPlugin
|
run: ./gradlew publishPlugin
|
||||||
|
|
||||||
# Upload artifact as a release asset
|
# Upload an artifact as a release asset
|
||||||
- name: Upload Release Asset
|
- name: Upload Release Asset
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
@ -76,7 +73,7 @@ jobs:
|
|||||||
|
|
||||||
# Create a pull request
|
# Create a pull request
|
||||||
- name: Create Pull Request
|
- name: Create Pull Request
|
||||||
if: ${{ steps.properties.outputs.changelog != '' }}
|
if: ${{ github.event.release.body != '' }}
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
12
.github/workflows/run-ui-tests.yml
vendored
@ -33,20 +33,20 @@ jobs:
|
|||||||
|
|
||||||
# Check out the current repository
|
# Check out the current repository
|
||||||
- name: Fetch Sources
|
- name: Fetch Sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
|
|
||||||
# Set up Java environment for the next steps
|
# Set up the Java environment for the next steps
|
||||||
- name: Setup Java
|
- name: Setup Java
|
||||||
uses: actions/setup-java@v4
|
uses: actions/setup-java@v5
|
||||||
with:
|
with:
|
||||||
distribution: zulu
|
distribution: zulu
|
||||||
java-version: 17
|
java-version: 21
|
||||||
|
|
||||||
# Setup Gradle
|
# Setup Gradle
|
||||||
- name: Setup Gradle
|
- name: Setup Gradle
|
||||||
uses: gradle/actions/setup-gradle@v3
|
uses: gradle/actions/setup-gradle@v5
|
||||||
with:
|
with:
|
||||||
gradle-home-cache-cleanup: true
|
cache-read-only: true
|
||||||
|
|
||||||
# Run IDEA prepared for UI testing
|
# Run IDEA prepared for UI testing
|
||||||
- name: Run IDE
|
- name: Run IDE
|
||||||
|
|||||||
4
.github/workflows/template-cleanup.yml
vendored
@ -19,7 +19,7 @@ jobs:
|
|||||||
|
|
||||||
# Check out the current repository
|
# Check out the current repository
|
||||||
- name: Fetch Sources
|
- name: Fetch Sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
|
|
||||||
# Cleanup project
|
# Cleanup project
|
||||||
- name: Cleanup
|
- name: Cleanup
|
||||||
@ -74,7 +74,7 @@ jobs:
|
|||||||
|
|
||||||
# Push changes
|
# Push changes
|
||||||
- name: Push changes
|
- name: Push changes
|
||||||
uses: ad-m/github-push-action@master
|
uses: ad-m/github-push-action@v0.8.0
|
||||||
with:
|
with:
|
||||||
branch: main
|
branch: main
|
||||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|||||||
2
.github/workflows/template-verify.yml
vendored
@ -23,7 +23,7 @@ jobs:
|
|||||||
|
|
||||||
# Check out the current repository
|
# Check out the current repository
|
||||||
- name: Fetch Sources
|
- name: Fetch Sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
|
|
||||||
# Compare `gradle.properties` with `.github/template-cleanup/gradle.properties`
|
# Compare `gradle.properties` with `.github/template-cleanup/gradle.properties`
|
||||||
- name: Verify gradle.properties
|
- name: Verify gradle.properties
|
||||||
|
|||||||
3
.gitignore
vendored
@ -1,4 +1,7 @@
|
|||||||
|
.DS_Store
|
||||||
.gradle
|
.gradle
|
||||||
.idea
|
.idea
|
||||||
|
.intellijPlatform
|
||||||
|
.kotlin
|
||||||
.qodana
|
.qodana
|
||||||
build
|
build
|
||||||
|
|||||||
@ -5,6 +5,7 @@
|
|||||||
<option name="linkedExternalProjectsSettings">
|
<option name="linkedExternalProjectsSettings">
|
||||||
<GradleProjectSettings>
|
<GradleProjectSettings>
|
||||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||||
|
<option name="gradleJvm" value="21" />
|
||||||
<option name="modules">
|
<option name="modules">
|
||||||
<set>
|
<set>
|
||||||
<option value="$PROJECT_DIR$" />
|
<option value="$PROJECT_DIR$" />
|
||||||
|
|||||||
@ -1,25 +0,0 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
|
||||||
<configuration default="false" name="Run IDE for UI Tests" type="GradleRunConfiguration" factoryName="Gradle">
|
|
||||||
<log_file alias="idea.log" path="$PROJECT_DIR$/build/idea-sandbox/system/log/idea.log" />
|
|
||||||
<ExternalSystemSettings>
|
|
||||||
<option name="executionName" />
|
|
||||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
|
||||||
<option name="externalSystemIdString" value="GRADLE" />
|
|
||||||
<option name="scriptParameters" value="" />
|
|
||||||
<option name="taskDescriptions">
|
|
||||||
<list />
|
|
||||||
</option>
|
|
||||||
<option name="taskNames">
|
|
||||||
<list>
|
|
||||||
<option value="runIdeForUiTests" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
<option name="vmOptions" />
|
|
||||||
</ExternalSystemSettings>
|
|
||||||
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
|
|
||||||
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
|
|
||||||
<DebugAllEnabled>false</DebugAllEnabled>
|
|
||||||
<RunAsTest>false</RunAsTest>
|
|
||||||
<method v="2" />
|
|
||||||
</configuration>
|
|
||||||
</component>
|
|
||||||
@ -1,6 +1,6 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
<component name="ProjectRunConfigurationManager">
|
||||||
<configuration default="false" name="Run Plugin" type="GradleRunConfiguration" factoryName="Gradle">
|
<configuration default="false" name="Run Plugin" type="GradleRunConfiguration" factoryName="Gradle">
|
||||||
<log_file alias="idea.log" path="$PROJECT_DIR$/build/idea-sandbox/system/log/idea.log" />
|
<log_file alias="IDE logs" path="$PROJECT_DIR$/build/idea-sandbox/*/log/idea.log" show_all="true" />
|
||||||
<ExternalSystemSettings>
|
<ExternalSystemSettings>
|
||||||
<option name="executionName" />
|
<option name="executionName" />
|
||||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||||
@ -16,9 +16,10 @@
|
|||||||
</option>
|
</option>
|
||||||
<option name="vmOptions" value="" />
|
<option name="vmOptions" value="" />
|
||||||
</ExternalSystemSettings>
|
</ExternalSystemSettings>
|
||||||
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
|
<ExternalSystemDebugServerProcess>false</ExternalSystemDebugServerProcess>
|
||||||
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
|
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
|
||||||
<DebugAllEnabled>false</DebugAllEnabled>
|
<DebugAllEnabled>false</DebugAllEnabled>
|
||||||
|
<RunAsTest>false</RunAsTest>
|
||||||
<method v="2" />
|
<method v="2" />
|
||||||
</configuration>
|
</configuration>
|
||||||
</component>
|
</component>
|
||||||
@ -1,24 +0,0 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
|
||||||
<configuration default="false" name="Run Qodana" type="GradleRunConfiguration" factoryName="Gradle">
|
|
||||||
<ExternalSystemSettings>
|
|
||||||
<option name="executionName" />
|
|
||||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
|
||||||
<option name="externalSystemIdString" value="GRADLE" />
|
|
||||||
<option name="scriptParameters" value="" />
|
|
||||||
<option name="taskDescriptions">
|
|
||||||
<list />
|
|
||||||
</option>
|
|
||||||
<option name="taskNames">
|
|
||||||
<list>
|
|
||||||
<option value="qodanaScan" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
<option name="vmOptions" />
|
|
||||||
</ExternalSystemSettings>
|
|
||||||
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
|
|
||||||
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
|
|
||||||
<DebugAllEnabled>false</DebugAllEnabled>
|
|
||||||
<RunAsTest>false</RunAsTest>
|
|
||||||
<method v="2" />
|
|
||||||
</configuration>
|
|
||||||
</component>
|
|
||||||
@ -11,7 +11,7 @@
|
|||||||
</option>
|
</option>
|
||||||
<option name="taskNames">
|
<option name="taskNames">
|
||||||
<list>
|
<list>
|
||||||
<option value="runPluginVerifier" />
|
<option value="verifyPlugin" />
|
||||||
</list>
|
</list>
|
||||||
</option>
|
</option>
|
||||||
<option name="vmOptions" value="" />
|
<option name="vmOptions" value="" />
|
||||||
@ -19,8 +19,7 @@
|
|||||||
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
|
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
|
||||||
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
|
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
|
||||||
<DebugAllEnabled>false</DebugAllEnabled>
|
<DebugAllEnabled>false</DebugAllEnabled>
|
||||||
<method v="2">
|
<RunAsTest>false</RunAsTest>
|
||||||
<option name="Gradle.BeforeRunTask" enabled="true" tasks="clean" externalProjectPath="$PROJECT_DIR$" vmOptions="" scriptParameters="" />
|
<method v="2" />
|
||||||
</method>
|
|
||||||
</configuration>
|
</configuration>
|
||||||
</component>
|
</component>
|
||||||
164
CHANGELOG.md
@ -4,6 +4,151 @@
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
## [2.4.0] - 2025-11-25
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Use the GitHub event release body for a condition when creating the Release Draft
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Use `intellijIdea(version)` dependency helper instead of `create(type, version)`
|
||||||
|
- Upgrade Gradle Wrapper to `9.2.1`
|
||||||
|
- Update `platformVersion` to `2025.2.5`
|
||||||
|
- Change since build to `252` (2025.2)
|
||||||
|
- Dependencies - upgrade `org.jetbrains.intellij.platform` to `2.10.5`
|
||||||
|
- Dependencies - upgrade `org.jetbrains.changelog` to `2.5.0`
|
||||||
|
- Dependencies - upgrade `org.jetbrains.kotlin.jvm` to `2.2.21`
|
||||||
|
- Dependencies - upgrade `org.jetbrains.kotlinx.kover` to `0.9.3`
|
||||||
|
- Dependencies - upgrade `org.jetbrains.qodana` to `2025.2.2`
|
||||||
|
- Dependencies (GitHub Actions) - upgrade `actions/checkout` to `v5`
|
||||||
|
- Dependencies (GitHub Actions) - upgrade `actions/setup-java` to `v5`
|
||||||
|
- Dependencies (GitHub Actions) - upgrade `actions/upload-artifact` to `v5`
|
||||||
|
- Dependencies (GitHub Actions) - upgrade `gradle/actions/setup-gradle` to `v5`
|
||||||
|
- Dependencies (GitHub Actions) - upgrade `JetBrains/qodana-action` to `v2025.2.2`
|
||||||
|
|
||||||
|
### Removed
|
||||||
|
|
||||||
|
- Remove the `platformType` Gradle property
|
||||||
|
|
||||||
|
## [2.3.1] - 2025-08-09
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- Add `platformBundledModules` to `gradle.properties` along with `bundledModules()` helper to the Gradle build file
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Dependencies - upgrade `org.jetbrains.intellij.platform` to `2.7.1`
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- GitHub: Fixed the missing `$RELEASE_NOTE ` parent directory in the Release workflow
|
||||||
|
|
||||||
|
## [2.3.0] - 2025-08-09
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- Added `.DS_Store` directory to `.gitignore`
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- GitHub Actions: simplify changelog handling
|
||||||
|
- Dependencies - upgrade `org.jetbrains.changelog` to `2.4.0`
|
||||||
|
|
||||||
|
## [2.2.0] - 2025-08-05
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- GitHub Actions: set Gradle cache to read-only for non-build jobs
|
||||||
|
- GitHub Actions: add `jlumbroso/free-disk-space` action to build related steps to maximize build environment storage
|
||||||
|
- Added `.kotlin` directory to `.gitignore` for Kotlin 2.0
|
||||||
|
|
||||||
|
### Removed
|
||||||
|
|
||||||
|
- Remove `pluginUntilBuild` obsolete property
|
||||||
|
- GitHub Actions: Remove obsolete Plugin Verifier cache directory configuration
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Upgrade Gradle Wrapper to `8.14.3`
|
||||||
|
- Update `platformVersion` to `2024.3.6`
|
||||||
|
- Dependencies - upgrade `org.jetbrains.intellij.platform` to `2.7.0`
|
||||||
|
- Dependencies - upgrade `org.jetbrains.changelog` to `2.3.0`
|
||||||
|
- Dependencies - upgrade `org.jetbrains.qodana` to `2025.1.1`
|
||||||
|
- Dependencies - upgrade `org.jetbrains.kotlin.jvm` to `2.2.0`
|
||||||
|
- Dependencies (GitHub Actions) - upgrade `JetBrains/qodana-action` to `v2025.1.1`
|
||||||
|
- Dependencies (GitHub Actions) - upgrade `ad-m/github-push-action` to `v0.8.0`
|
||||||
|
- Dependencies (GitHub Actions) - upgrade `jlumbroso/free-disk-space` to `v1.3.1`
|
||||||
|
- Gradle - upgrade `org.gradle.toolchains.foojay-resolver-convention` to `1.0.0`
|
||||||
|
- Change since build to `243` (2024.3)
|
||||||
|
- Update codecov configuration based on new required upload token
|
||||||
|
|
||||||
|
## [2.1.0] - 2025-03-28
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- Example code – `ProjectActivity`
|
||||||
|
- Added `opentest4j` test dependency, see: [Missing opentest4j dependency in Test Framework](https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-faq.html#missing-opentest4j-dependency-in-test-framework)
|
||||||
|
|
||||||
|
### Removed
|
||||||
|
|
||||||
|
- Example code – `MyApplicationActivationListener`
|
||||||
|
- Remove redundant IntelliJ Platform dependency helpers: `instrumentationTools()`, `pluginVerifier()`, `zipSigner()`
|
||||||
|
- GitHub Actions: Remove `gradle/actions/wrapper-validation` because validation is performed by default in `gradle/actions/setup-gradle@v4`
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Change JVM version to `21`
|
||||||
|
- Upgrade Gradle Wrapper to `8.13`
|
||||||
|
- Update `platformVersion` to `2024.2.5`
|
||||||
|
- Change since/until build to `242-252.*` (2024.2-2025.2.*)
|
||||||
|
- Dependencies - upgrade `org.jetbrains.intellij.platform` to `2.5.0`
|
||||||
|
- Dependencies - upgrade `org.jetbrains.kotlin.jvm` to `2.1.20`
|
||||||
|
- Dependencies - upgrade `org.jetbrains.qodana` to `2024.3.4`
|
||||||
|
- Dependencies - upgrade `org.jetbrains.kotlinx.kover` to `0.9.1`
|
||||||
|
- Dependencies (GitHub Actions) - upgrade `gradle/actions/wrapper-validation` to `v4`
|
||||||
|
- Dependencies (GitHub Actions) - upgrade `codecov/codecov-action` to `v5`
|
||||||
|
|
||||||
|
## [2.0.2] - 2024-10-07
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Upgrade Gradle Wrapper to `8.10.2`
|
||||||
|
- Update `platformVersion` to `2023.3.8`
|
||||||
|
- Dependencies - upgrade `org.jetbrains.intellij.platform` to `2.1.0`
|
||||||
|
- Dependencies - upgrade `org.jetbrains.qodana` to `2024.2.3`
|
||||||
|
- Dependencies (GitHub Actions) - upgrade `gradle/actions/setup-gradle` to `v4`
|
||||||
|
- Add back the `org.gradle.toolchains.foojay-resolver-convention` Gradle settings plugin
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Fixed _Run Plugin_ run configuration logs location
|
||||||
|
|
||||||
|
### Removed
|
||||||
|
|
||||||
|
- Removed _Run Qodana_ and _Run UI for UI Tests_ run configurations
|
||||||
|
|
||||||
|
## [2.0.1] - 2024-08-09
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Update `platformVersion` to `2023.3.7`
|
||||||
|
- Change since/until build to `233-242.*` (2023.3-2024.2.*)
|
||||||
|
- Cleanup registering the `runIdeForUiTests` task
|
||||||
|
- Dependencies - upgrade `org.jetbrains.intellij.platform` to `2.0.1`
|
||||||
|
- Dependencies - upgrade `org.jetbrains.kotlin.jvm` to `1.9.25`
|
||||||
|
- Dependencies - upgrade `org.jetbrains.kotlinx.kover` to `0.8.3`
|
||||||
|
- Dependencies - upgrade `org.jetbrains.qodana` to `2024.1.9`
|
||||||
|
|
||||||
|
## [2.0.0] - 2024-07-30
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Migrate to [IntelliJ Platform Gradle Plugin 2.0](https://blog.jetbrains.com/platform/2024/07/intellij-platform-gradle-plugin-2-0/).
|
||||||
|
|
||||||
|
## [1.14.2] - 2024-07-12
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Upgrade Gradle Wrapper to `8.9`
|
- Upgrade Gradle Wrapper to `8.9`
|
||||||
@ -45,7 +190,7 @@
|
|||||||
|
|
||||||
- Dependencies - upgrade `org.jetbrains.kotlin.jvm` to `1.9.23`
|
- Dependencies - upgrade `org.jetbrains.kotlin.jvm` to `1.9.23`
|
||||||
- Dependencies - upgrade `org.jetbrains.kotlinx.kover` to `0.7.6`
|
- Dependencies - upgrade `org.jetbrains.kotlinx.kover` to `0.7.6`
|
||||||
- Dependencies - upgrade `org.jetbrains.qodana` to `2023.3.1`
|
- Dependencies - upgrade `org.jetbrains.qodana` to `2023.3.2`
|
||||||
- Dependencies (GitHub Actions) - upgrade `actions/upload-artifact` to `4`
|
- Dependencies (GitHub Actions) - upgrade `actions/upload-artifact` to `4`
|
||||||
- Dependencies (GitHub Actions) - upgrade `codecov/codecov-action` to `4`
|
- Dependencies (GitHub Actions) - upgrade `codecov/codecov-action` to `4`
|
||||||
- Dependencies (GitHub Actions) - upgrade `gradle/wrapper-validation-action` to `2`
|
- Dependencies (GitHub Actions) - upgrade `gradle/wrapper-validation-action` to `2`
|
||||||
@ -288,7 +433,7 @@
|
|||||||
### Added
|
### Added
|
||||||
|
|
||||||
- [Kover](https://github.com/Kotlin/kotlinx-kover) integration
|
- [Kover](https://github.com/Kotlin/kotlinx-kover) integration
|
||||||
- Enable [Gradle Configuration Cache](https://docs.gradle.org/current/userguide/configuration_cache.html) in `gradle.proeprties`
|
- Enable [Gradle Configuration Cache](https://docs.gradle.org/current/userguide/configuration_cache.html) in `gradle.properties`
|
||||||
- GitHub Actions — mark the pull request created with _Publish Plugin_ workflow with `release changelog` label
|
- GitHub Actions — mark the pull request created with _Publish Plugin_ workflow with `release changelog` label
|
||||||
- GitHub Actions — send code coverage reports to [CodeCov](https://codecov.io)
|
- GitHub Actions — send code coverage reports to [CodeCov](https://codecov.io)
|
||||||
- Dependencies - upgrade `org.jetbrains.kotlinx.kover` to `0.6.1`
|
- Dependencies - upgrade `org.jetbrains.kotlinx.kover` to `0.6.1`
|
||||||
@ -732,7 +877,16 @@
|
|||||||
- GitHub Actions to automate testing and deployment
|
- GitHub Actions to automate testing and deployment
|
||||||
- Kotlin support
|
- Kotlin support
|
||||||
|
|
||||||
[Unreleased]: https://github.com/JetBrains/intellij-platform-plugin-template/compare/v1.14.1...HEAD
|
[Unreleased]: https://github.com/JetBrains/intellij-platform-plugin-template/compare/v2.4.0...HEAD
|
||||||
|
[2.4.0]: https://github.com/JetBrains/intellij-platform-plugin-template/compare/v2.3.1...v2.4.0
|
||||||
|
[2.3.1]: https://github.com/JetBrains/intellij-platform-plugin-template/compare/v2.3.0...v2.3.1
|
||||||
|
[2.3.0]: https://github.com/JetBrains/intellij-platform-plugin-template/compare/v2.2.0...v2.3.0
|
||||||
|
[2.2.0]: https://github.com/JetBrains/intellij-platform-plugin-template/compare/v2.1.0...v2.2.0
|
||||||
|
[2.1.0]: https://github.com/JetBrains/intellij-platform-plugin-template/compare/v2.0.2...v2.1.0
|
||||||
|
[2.0.2]: https://github.com/JetBrains/intellij-platform-plugin-template/compare/v2.0.1...v2.0.2
|
||||||
|
[2.0.1]: https://github.com/JetBrains/intellij-platform-plugin-template/compare/v2.0.0...v2.0.1
|
||||||
|
[2.0.0]: https://github.com/JetBrains/intellij-platform-plugin-template/compare/v1.14.2...v2.0.0
|
||||||
|
[1.14.2]: https://github.com/JetBrains/intellij-platform-plugin-template/compare/v1.14.1...v1.14.2
|
||||||
[1.14.1]: https://github.com/JetBrains/intellij-platform-plugin-template/compare/v1.14.0...v1.14.1
|
[1.14.1]: https://github.com/JetBrains/intellij-platform-plugin-template/compare/v1.14.0...v1.14.1
|
||||||
[1.14.0]: https://github.com/JetBrains/intellij-platform-plugin-template/compare/v1.13.0...v1.14.0
|
[1.14.0]: https://github.com/JetBrains/intellij-platform-plugin-template/compare/v1.13.0...v1.14.0
|
||||||
[1.13.0]: https://github.com/JetBrains/intellij-platform-plugin-template/compare/v1.12.0...v1.13.0
|
[1.13.0]: https://github.com/JetBrains/intellij-platform-plugin-template/compare/v1.12.0...v1.13.0
|
||||||
@ -773,5 +927,5 @@
|
|||||||
[0.3.0]: https://github.com/JetBrains/intellij-platform-plugin-template/compare/v0.2.0...v0.3.0
|
[0.3.0]: https://github.com/JetBrains/intellij-platform-plugin-template/compare/v0.2.0...v0.3.0
|
||||||
[0.2.0]: https://github.com/JetBrains/intellij-platform-plugin-template/compare/v0.1.0...v0.2.0
|
[0.2.0]: https://github.com/JetBrains/intellij-platform-plugin-template/compare/v0.1.0...v0.2.0
|
||||||
[0.1.0]: https://github.com/JetBrains/intellij-platform-plugin-template/compare/v0.0.2...v0.1.0
|
[0.1.0]: https://github.com/JetBrains/intellij-platform-plugin-template/compare/v0.0.2...v0.1.0
|
||||||
[0.0.2]: https://github.com/JetBrains/intellij-platform-plugin-template/commits/v0.0.2
|
[0.0.2]: https://github.com/JetBrains/intellij-platform-plugin-template/compare/v0.0.1...v0.0.2
|
||||||
[0.0.1]: https://github.com/JetBrains/intellij-platform-plugin-template/commits
|
[0.0.1]: https://github.com/JetBrains/intellij-platform-plugin-template/commits/v0.0.1
|
||||||
|
|||||||
137
README.md
@ -1,15 +1,13 @@
|
|||||||
# IntelliJ Platform Plugin Template
|
# IntelliJ Platform Plugin Template
|
||||||
|
|
||||||
[][jb:github]
|
[][jb:github]
|
||||||
[](https://twitter.com/JBPlatform)
|
[](https://x.com/JBPlatform)
|
||||||
[][gh:build]
|
[][gh:build]
|
||||||
[](https://plugins.jetbrains.com/slack)
|
|
||||||
|
|
||||||
![IntelliJ Platform Plugin Template][file:intellij-platform-plugin-template-dark]
|
![IntelliJ Platform Plugin Template][file:intellij-platform-plugin-template-dark]
|
||||||
![IntelliJ Platform Plugin Template][file:intellij-platform-plugin-template-light]
|
![IntelliJ Platform Plugin Template][file:intellij-platform-plugin-template-light]
|
||||||
|
|
||||||
> **Note**
|
> [!NOTE]
|
||||||
>
|
|
||||||
> Click the <kbd>Use this template</kbd> button and clone it in IntelliJ IDEA.
|
> Click the <kbd>Use this template</kbd> button and clone it in IntelliJ IDEA.
|
||||||
|
|
||||||
<!-- Plugin description -->
|
<!-- Plugin description -->
|
||||||
@ -22,8 +20,7 @@ The main goal of this template is to speed up the setup phase of plugin developm
|
|||||||
|
|
||||||
If you're still not quite sure what this is all about, read our introduction: [What is the IntelliJ Platform?][docs:intro]
|
If you're still not quite sure what this is all about, read our introduction: [What is the IntelliJ Platform?][docs:intro]
|
||||||
|
|
||||||
> **Note**
|
> [!NOTE]
|
||||||
>
|
|
||||||
> Click the <kbd>Watch</kbd> button on the top to be notified about releases containing new features and fixes.
|
> Click the <kbd>Watch</kbd> button on the top to be notified about releases containing new features and fixes.
|
||||||
|
|
||||||
### Table of contents
|
### Table of contents
|
||||||
@ -48,7 +45,7 @@ In this README, we will highlight the following elements of template-project cre
|
|||||||
- [Changelog maintenance](#changelog-maintenance) with the Gradle Changelog Plugin
|
- [Changelog maintenance](#changelog-maintenance) with the Gradle Changelog Plugin
|
||||||
- [Release flow](#release-flow) using GitHub Releases
|
- [Release flow](#release-flow) using GitHub Releases
|
||||||
- [Plugin signing](#plugin-signing) with your private certificate
|
- [Plugin signing](#plugin-signing) with your private certificate
|
||||||
- [Publishing the plugin](#publishing-the-plugin) with the Gradle IntelliJ Plugin
|
- [Publishing the plugin](#publishing-the-plugin) with the IntelliJ Platform Gradle Plugin
|
||||||
- [FAQ](#faq)
|
- [FAQ](#faq)
|
||||||
- [Useful links](#useful-links)
|
- [Useful links](#useful-links)
|
||||||
|
|
||||||
@ -57,7 +54,7 @@ In this README, we will highlight the following elements of template-project cre
|
|||||||
|
|
||||||
Before we dive into plugin development and everything related to it, it's worth mentioning the benefits of using GitHub Templates.
|
Before we dive into plugin development and everything related to it, it's worth mentioning the benefits of using GitHub Templates.
|
||||||
By creating a new project using the current template, you start with no history or reference to this repository.
|
By creating a new project using the current template, you start with no history or reference to this repository.
|
||||||
This allows you to create a new repository easily without copying and pasting previous content, clone repositories, or clearing the history manually.
|
This allows you to create a new repository easily without copying and pasting previous content, cloning repositories, or clearing the history manually.
|
||||||
|
|
||||||
All you have to do is click the <kbd>Use this template</kbd> button (you must be logged in with your GitHub account).
|
All you have to do is click the <kbd>Use this template</kbd> button (you must be logged in with your GitHub account).
|
||||||
|
|
||||||
@ -76,28 +73,26 @@ The next step, after opening your project in IntelliJ IDEA, is to set the proper
|
|||||||
|
|
||||||
![Project Structure — SDK][file:project-structure-sdk.png]
|
![Project Structure — SDK][file:project-structure-sdk.png]
|
||||||
|
|
||||||
For the last step, you have to manually review the configuration variables described in the [`gradle.properties`][file:gradle.properties] file and *optionally* move sources from the *com.github.username.repository* package to the one that works best for you.
|
For the last step, you have to manually review the configuration variables described in the [`gradle.properties`][file:gradle.properties] file and *optionally* move sources from the `com.github.username.repository` package to the one that works best for you.
|
||||||
Then you can get to work implementing your ideas.
|
Then you can get to work implementing your ideas.
|
||||||
|
|
||||||
> **Note**
|
> [!NOTE]
|
||||||
>
|
|
||||||
> To use Java in your plugin, create the `/src/main/java` directory.
|
> To use Java in your plugin, create the `/src/main/java` directory.
|
||||||
|
|
||||||
|
|
||||||
## Gradle configuration
|
## Gradle configuration
|
||||||
|
|
||||||
The recommended method for plugin development involves using the [Gradle][gradle] setup with the [gradle-intellij-plugin][gh:gradle-intellij-plugin] installed.
|
The recommended method for plugin development involves using the [Gradle][gradle] setup with the [intellij-platform-gradle-plugin][gh:intellij-platform-gradle-plugin] installed.
|
||||||
The `gradle-intellij-plugin` makes it possible to run the IDE with your plugin and publish your plugin to JetBrains Marketplace.
|
The IntelliJ Platform Gradle Plugin makes it possible to run the IDE with your plugin and publish your plugin to JetBrains Marketplace.
|
||||||
|
|
||||||
> **Note**
|
> [!NOTE]
|
||||||
>
|
> Make sure to always upgrade to the latest version of IntelliJ Platform Gradle Plugin.
|
||||||
> Make sure to always upgrade to the latest version of `gradle-intellij-plugin`.
|
|
||||||
|
|
||||||
A project built using the IntelliJ Platform Plugin Template includes a Gradle configuration already set up.
|
A project built using the IntelliJ Platform Plugin Template includes a Gradle configuration already set up.
|
||||||
Feel free to read through the [Using Gradle][docs:using-gradle] articles to understand your build better and learn how to customize it.
|
Feel free to read through the [Using Gradle][docs:using-gradle] articles to understand your build better and learn how to customize it.
|
||||||
|
|
||||||
The most significant parts of the current configuration are:
|
The most significant parts of the current configuration are:
|
||||||
- Integration with the [gradle-intellij-plugin][gh:gradle-intellij-plugin] for smoother development.
|
- Integration with the [intellij-platform-gradle-plugin][gh:intellij-platform-gradle-plugin] for smoother development.
|
||||||
- Configuration written with [Gradle Kotlin DSL][gradle:kotlin-dsl].
|
- Configuration written with [Gradle Kotlin DSL][gradle:kotlin-dsl].
|
||||||
- Support for Kotlin and Java implementation.
|
- Support for Kotlin and Java implementation.
|
||||||
- Integration with the [gradle-changelog-plugin][gh:gradle-changelog-plugin], which automatically patches the change notes based on the `CHANGELOG.md` file.
|
- Integration with the [gradle-changelog-plugin][gh:gradle-changelog-plugin], which automatically patches the change notes based on the `CHANGELOG.md` file.
|
||||||
@ -110,19 +105,19 @@ For more details regarding Kotlin integration, please see [Kotlin for Plugin Dev
|
|||||||
The project-specific configuration file [`gradle.properties`][file:gradle.properties] contains:
|
The project-specific configuration file [`gradle.properties`][file:gradle.properties] contains:
|
||||||
|
|
||||||
| Property name | Description |
|
| Property name | Description |
|
||||||
|-----------------------|-----------------------------------------------------------------------------------------------------------|
|
|--------------------------|------------------------------------------------------------------------------------------------------|
|
||||||
| `pluginGroup` | Package name - after *using* the template, this will be set to `com.github.username.repo`. |
|
| `pluginGroup` | Package name - after *using* the template, this will be set to `com.github.username.repo`. |
|
||||||
| `pluginName` | Plugin name displayed in JetBrains Marketplace. |
|
| `pluginName` | Plugin name displayed in JetBrains Marketplace. |
|
||||||
| `pluginRepositoryUrl` | Repository URL used for generating URLs by the [Gradle Changelog Plugin][gh:gradle-changelog-plugin] |
|
| `pluginRepositoryUrl` | Repository URL used for generating URLs by the [Gradle Changelog Plugin][gh:gradle-changelog-plugin] |
|
||||||
| `pluginVersion` | The current version of the plugin in [SemVer][semver] format. |
|
| `pluginVersion` | The current version of the plugin in [SemVer][semver] format. |
|
||||||
| `pluginSinceBuild` | The `since-build` attribute of the `<idea-version>` tag. |
|
| `pluginSinceBuild` | The `since-build` attribute of the `<idea-version>` tag. |
|
||||||
| `pluginUntilBuild` | The `until-build` attribute of the `<idea-version>` tag. |
|
|
||||||
| `platformType` | The type of IDE distribution. |
|
|
||||||
| `platformVersion` | The version of the IntelliJ Platform IDE will be used to build the plugin. |
|
| `platformVersion` | The version of the IntelliJ Platform IDE will be used to build the plugin. |
|
||||||
| `platformPlugins` | Comma-separated list of dependencies to the bundled IDE plugins and plugins from the Plugin Repositories. |
|
| `platformPlugins` | Comma-separated list of dependencies to the plugins from the Plugin Repositories. |
|
||||||
|
| `platformBundledPlugins` | Comma-separated list of dependencies to the bundled IDE plugins. |
|
||||||
|
| `platformBundledModules` | Comma-separated list of dependencies to the bundled IDE modules. |
|
||||||
| `gradleVersion` | Version of Gradle used for plugin development. |
|
| `gradleVersion` | Version of Gradle used for plugin development. |
|
||||||
|
|
||||||
The properties listed define the plugin itself or configure the [gradle-intellij-plugin][gh:gradle-intellij-plugin] – check its documentation for more details.
|
The properties listed define the plugin itself or configure the [intellij-platform-gradle-plugin][gh:intellij-platform-gradle-plugin] – check its documentation for more details.
|
||||||
|
|
||||||
In addition, extra behaviors are configured through the [`gradle.properties`][file:gradle.properties] file, such as:
|
In addition, extra behaviors are configured through the [`gradle.properties`][file:gradle.properties] file, such as:
|
||||||
|
|
||||||
@ -136,7 +131,7 @@ In addition, extra behaviors are configured through the [`gradle.properties`][fi
|
|||||||
|
|
||||||
Some values used for the Gradle configuration shouldn't be stored in files to avoid publishing them to the Version Control System.
|
Some values used for the Gradle configuration shouldn't be stored in files to avoid publishing them to the Version Control System.
|
||||||
|
|
||||||
To avoid that, environment variables are introduced, which can be provided within the *Run/Debug Configuration* within the IDE, or on the CI – like for GitHub: `⚙️ Settings > Secrets`.
|
To avoid that, environment variables are introduced, which can be provided within the *Run/Debug Configuration* within the IDE, or on the CI – like for GitHub: `⚙️ Settings > Secrets and variables > Actions`.
|
||||||
|
|
||||||
Environment variables used by the current project are related to the [plugin signing](#plugin-signing) and [publishing](#publishing-the-plugin).
|
Environment variables used by the current project are related to the [plugin signing](#plugin-signing) and [publishing](#publishing-the-plugin).
|
||||||
|
|
||||||
@ -149,7 +144,7 @@ Environment variables used by the current project are related to the [plugin sig
|
|||||||
|
|
||||||
For more details on how to generate proper values, check the relevant sections mentioned above.
|
For more details on how to generate proper values, check the relevant sections mentioned above.
|
||||||
|
|
||||||
To configure GitHub secret environment variables, go to the `⚙️ Settings > Secrets` section of your project repository:
|
To configure GitHub secret environment variables, go to the `⚙️ Settings > Secrets and variables > Actions` section of your project repository:
|
||||||
|
|
||||||
![Settings > Secrets][file:settings-secrets.png]
|
![Settings > Secrets][file:settings-secrets.png]
|
||||||
|
|
||||||
@ -186,8 +181,7 @@ A generated IntelliJ Platform Plugin Template repository contains the following
|
|||||||
|
|
||||||
In addition to the configuration files, the most crucial part is the `src` directory, which contains our implementation and the manifest for our plugin – [plugin.xml][file:plugin.xml].
|
In addition to the configuration files, the most crucial part is the `src` directory, which contains our implementation and the manifest for our plugin – [plugin.xml][file:plugin.xml].
|
||||||
|
|
||||||
> **Note**
|
> [!NOTE]
|
||||||
>
|
|
||||||
> To use Java in your plugin, create the `/src/main/java` directory.
|
> To use Java in your plugin, create the `/src/main/java` directory.
|
||||||
|
|
||||||
|
|
||||||
@ -239,15 +233,16 @@ These files are located in `src/main/kotlin`.
|
|||||||
This location indicates the language being used.
|
This location indicates the language being used.
|
||||||
So if you decide to use Java instead (or in addition to Kotlin), these sources should be located in the `src/main/java` directory.
|
So if you decide to use Java instead (or in addition to Kotlin), these sources should be located in the `src/main/java` directory.
|
||||||
|
|
||||||
|
> [!TIP]
|
||||||
|
> It is possible to use the [IntelliJ Platform Icons](https://jb.gg/new-ui-icons) in your plugin.
|
||||||
|
|
||||||
To start with the actual implementation, you may check our [IntelliJ Platform SDK DevGuide][docs], which contains an introduction to the essential areas of the plugin development together with dedicated tutorials.
|
To start with the actual implementation, you may check our [IntelliJ Platform SDK DevGuide][docs], which contains an introduction to the essential areas of the plugin development together with dedicated tutorials.
|
||||||
|
|
||||||
> **Warning**
|
> [!WARNING]
|
||||||
>
|
> Remember to remove all non-needed sample code files with their corresponding registration entries in `plugin.xml`.
|
||||||
> Don't forget to remove all non-needed sample code files with their corresponding registration entries in `plugin.xml`.
|
|
||||||
|
|
||||||
For those who value example codes the most, there are also available [IntelliJ SDK Code Samples][gh:code-samples] and [IntelliJ Platform Explorer][jb:ipe] – a search tool for browsing Extension Points inside existing implementations of open-source IntelliJ Platform plugins.
|
For those who value example codes the most, there are also available [IntelliJ SDK Code Samples][gh:code-samples] and [IntelliJ Platform Explorer][jb:ipe] – a search tool for browsing Extension Points inside existing implementations of open-source IntelliJ Platform plugins.
|
||||||
|
|
||||||
|
|
||||||
## Testing
|
## Testing
|
||||||
|
|
||||||
[Testing plugins][docs:testing-plugins] is an essential part of the plugin development to make sure that everything works as expected between IDE releases and plugin refactorings.
|
[Testing plugins][docs:testing-plugins] is an essential part of the plugin development to make sure that everything works as expected between IDE releases and plugin refactorings.
|
||||||
@ -258,10 +253,9 @@ The IntelliJ Platform Plugin Template project provides integration of two testin
|
|||||||
Most of the IntelliJ Platform codebase tests are model-level, run in a headless environment using an actual IDE instance.
|
Most of the IntelliJ Platform codebase tests are model-level, run in a headless environment using an actual IDE instance.
|
||||||
The tests usually test a feature as a whole rather than individual functions that comprise its implementation, like in unit tests.
|
The tests usually test a feature as a whole rather than individual functions that comprise its implementation, like in unit tests.
|
||||||
|
|
||||||
In `src/test/kotlin`, you'll find a basic `MyPluginTest` test that utilizes `BasePlatformTestCase` and runs a few checks against the XML files to indicate an example operation of creating files on the fly or reading them from `src/test/testData/rename` test resources.
|
In `src/test/kotlin`, you will find a basic `MyPluginTest` test that utilizes `BasePlatformTestCase` and runs a few checks against the XML files to indicate an example operation of creating files on the fly or reading them from `src/test/testData/rename` test resources.
|
||||||
|
|
||||||
> **Note**
|
> [!NOTE]
|
||||||
>
|
|
||||||
> Run your tests using predefined *Run Tests* configuration or by invoking the `./gradlew check` Gradle task.
|
> Run your tests using predefined *Run Tests* configuration or by invoking the `./gradlew check` Gradle task.
|
||||||
|
|
||||||
### Code coverage
|
### Code coverage
|
||||||
@ -273,15 +267,14 @@ The final test report is sent to [CodeCov][codecov] for better results visualiza
|
|||||||
|
|
||||||
### UI tests
|
### UI tests
|
||||||
|
|
||||||
If your plugin provides complex user interfaces, you should consider covering them with tests and the functionality they utilize.
|
If your plugin provides complex user interfaces, you should consider covering them with tests and the functionality they use.
|
||||||
|
|
||||||
[IntelliJ UI Test Robot][gh:intellij-ui-test-robot] allows you to write and execute UI tests within the IntelliJ IDE running instance.
|
[IntelliJ UI Test Robot][gh:intellij-ui-test-robot] allows you to write and execute UI tests within the JetBrains IDE running instance.
|
||||||
You can use the [XPath query language][xpath] to find components in the currently available IDE view.
|
You can use the [XPath query language][xpath] to find components in the currently available IDE view.
|
||||||
Once IDE with `robot-server` has started, you can open the `http://localhost:8082` page that presents the currently available IDEA UI components hierarchy in HTML format and use a simple `XPath` generator, which can help test your plugin's interface.
|
Once IDE with `robot-server` has started, you can open the `http://localhost:8082` page that presents the currently available IDEA UI components hierarchy in HTML format and use a simple `XPath` generator, which can help test your plugin's interface.
|
||||||
|
|
||||||
> **Note**
|
> [!NOTE]
|
||||||
>
|
> Run IDE for UI tests by invoking the `./gradlew runIdeForUiTests` and `./gradlew check` Gradle tasks.
|
||||||
> Run IDE for UI tests using predefined *Run IDE for UI Tests* and then *Run Tests* configurations or by invoking the `./gradlew runIdeForUiTests` and `./gradlew check` Gradle tasks.
|
|
||||||
|
|
||||||
Check the UI Test Example project you can use as a reference for setting up UI testing in your plugin: [intellij-ui-test-robot/ui-test-example][gh:ui-test-example].
|
Check the UI Test Example project you can use as a reference for setting up UI testing in your plugin: [intellij-ui-test-robot/ui-test-example][gh:ui-test-example].
|
||||||
|
|
||||||
@ -315,8 +308,7 @@ Qodana inspections are accessible within the project on two levels:
|
|||||||
|
|
||||||
Qodana inspection is configured with the `qodana { ... }` section in the Gradle build file and [`qodana.yml`][file:qodana.yml] YAML configuration file.
|
Qodana inspection is configured with the `qodana { ... }` section in the Gradle build file and [`qodana.yml`][file:qodana.yml] YAML configuration file.
|
||||||
|
|
||||||
> **Note**
|
> [!NOTE]
|
||||||
>
|
|
||||||
> Qodana requires Docker to be installed and available in your environment.
|
> Qodana requires Docker to be installed and available in your environment.
|
||||||
|
|
||||||
To run inspections, you can use a predefined *Run Qodana* configuration, which will provide a full report on `http://localhost:8080`, or invoke the Gradle task directly with the `./gradlew runInspections` command.
|
To run inspections, you can use a predefined *Run Qodana* configuration, which will provide a full report on `http://localhost:8080`, or invoke the Gradle task directly with the `./gradlew runInspections` command.
|
||||||
@ -333,15 +325,12 @@ Within the default project structure, there is a `.run` directory provided conta
|
|||||||
![Run/Debug configurations][file:run-debug-configurations.png]
|
![Run/Debug configurations][file:run-debug-configurations.png]
|
||||||
|
|
||||||
| Configuration name | Description |
|
| Configuration name | Description |
|
||||||
|----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|--------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| Run Plugin | Runs [`:runIde`][gh:gradle-intellij-plugin-runIde] Gradle IntelliJ Plugin task. Use the *Debug* icon for plugin debugging. |
|
| Run Plugin | Runs [`:runIde`][gh:intellij-platform-gradle-plugin-runIde] IntelliJ Platform Gradle Plugin task. Use the *Debug* icon for plugin debugging. |
|
||||||
| Run Verifications | Runs [`:runPluginVerifier`][gh:gradle-intellij-plugin-runPluginVerifier] Gradle IntelliJ Plugin task to check the plugin compatibility against the specified IntelliJ IDEs. |
|
|
||||||
| Run Tests | Runs [`:test`][gradle:lifecycle-tasks] Gradle task. |
|
| Run Tests | Runs [`:test`][gradle:lifecycle-tasks] Gradle task. |
|
||||||
| Run IDE for UI Tests | Runs [`:runIdeForUiTests`][gh:intellij-ui-test-robot] Gradle IntelliJ Plugin task to allow for running UI tests within the IntelliJ IDE running instance. |
|
| Run Verifications | Runs [`:verifyPlugin`][gh:intellij-platform-gradle-plugin-verifyPlugin] IntelliJ Platform Gradle Plugin task to check the plugin compatibility against the specified IntelliJ IDEs. |
|
||||||
| Run Qodana | Runs [`:runInspections`][gh:gradle-qodana-plugin] Gradle Qodana Plugin task. Starts Qodana inspections in a Docker container and serves generated report on `localhost:8080`. |
|
|
||||||
|
|
||||||
> **Note**
|
> [!NOTE]
|
||||||
>
|
|
||||||
> You can find the logs from the running task in the `idea.log` tab.
|
> You can find the logs from the running task in the `idea.log` tab.
|
||||||
>
|
>
|
||||||
> ![Run/Debug configuration logs][file:run-logs.png]
|
> ![Run/Debug configuration logs][file:run-logs.png]
|
||||||
@ -352,6 +341,10 @@ Within the default project structure, there is a `.run` directory provided conta
|
|||||||
Continuous integration depends on [GitHub Actions][gh:actions], a set of workflows that make it possible to automate your testing and release process.
|
Continuous integration depends on [GitHub Actions][gh:actions], a set of workflows that make it possible to automate your testing and release process.
|
||||||
Thanks to such automation, you can delegate the testing and verification phases to the Continuous Integration (CI) and instead focus on development (and writing more tests).
|
Thanks to such automation, you can delegate the testing and verification phases to the Continuous Integration (CI) and instead focus on development (and writing more tests).
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> To ensure the "Create Pull Request" step functions correctly in the "Publish Plugin" job, make sure to enable "Read and write permissions" for actions by navigating to `⚙️ Settings > Actions > General > Workflow permissions`.
|
||||||
|
|
||||||
|
|
||||||
In the `.github/workflows` directory, you can find definitions for the following GitHub Actions workflows:
|
In the `.github/workflows` directory, you can find definitions for the following GitHub Actions workflows:
|
||||||
|
|
||||||
- [Build](.github/workflows/build.yml)
|
- [Build](.github/workflows/build.yml)
|
||||||
@ -363,10 +356,10 @@ In the `.github/workflows` directory, you can find definitions for the following
|
|||||||
- Prepares a draft release of the GitHub Releases page for manual verification.
|
- Prepares a draft release of the GitHub Releases page for manual verification.
|
||||||
- [Release](.github/workflows/release.yml)
|
- [Release](.github/workflows/release.yml)
|
||||||
- Triggered on `released` event.
|
- Triggered on `released` event.
|
||||||
- Updates `CHANGELOG.md` file with the content provided with the release note.
|
- Updates `CHANGELOG.md` file with the content provided the release note.
|
||||||
- Signs the plugin with a provided certificate before publishing.
|
- Signs the plugin with a provided certificate before publishing.
|
||||||
- Publishes the plugin to JetBrains Marketplace using the provided `PUBLISH_TOKEN`.
|
- Publishes the plugin to JetBrains Marketplace using the provided `PUBLISH_TOKEN`.
|
||||||
- Sets publish channel depending on the plugin version, i.e. `1.0.0-beta` -> `beta` channel.
|
- Sets a publication channel depending on the plugin version, i.e. `1.0.0-beta` -> `beta` channel.
|
||||||
- Patches the Changelog and commits.
|
- Patches the Changelog and commits.
|
||||||
- [Run UI Tests](.github/workflows/run-ui-tests.yml)
|
- [Run UI Tests](.github/workflows/run-ui-tests.yml)
|
||||||
- Triggered manually.
|
- Triggered manually.
|
||||||
@ -386,8 +379,7 @@ This Template project depends on Gradle plugins and external libraries – and d
|
|||||||
|
|
||||||
All plugins and dependencies used by Gradle are managed with [Gradle version catalog][gradle:version-catalog], which defines versions and coordinates of your dependencies in the [`gradle/libs.versions.toml`][file:libs.versions.toml] file.
|
All plugins and dependencies used by Gradle are managed with [Gradle version catalog][gradle:version-catalog], which defines versions and coordinates of your dependencies in the [`gradle/libs.versions.toml`][file:libs.versions.toml] file.
|
||||||
|
|
||||||
> **Note**
|
> [!NOTE]
|
||||||
>
|
|
||||||
> To add a new dependency to the project, in the `dependencies { ... }` block, add:
|
> To add a new dependency to the project, in the `dependencies { ... }` block, add:
|
||||||
>
|
>
|
||||||
> ```kotlin
|
> ```kotlin
|
||||||
@ -405,12 +397,11 @@ All plugins and dependencies used by Gradle are managed with [Gradle version cat
|
|||||||
> annotations = { group = "org.jetbrains", name = "annotations", version.ref = "annotations" }
|
> annotations = { group = "org.jetbrains", name = "annotations", version.ref = "annotations" }
|
||||||
> ```
|
> ```
|
||||||
|
|
||||||
Keeping the project in good shape and having all the dependencies up-to-date requires time and effort, but it is possible to automate that process using [Dependabot][gh:dependabot].
|
Keeping the project in good shape and having all the dependencies up to date requires time and effort, but it is possible to automate that process using [Dependabot][gh:dependabot].
|
||||||
|
|
||||||
Dependabot is a bot provided by GitHub to check the build configuration files and review any outdated or insecure dependencies of yours – in case if any update is available, it creates a new pull request providing [the proper change][gh:dependabot-pr].
|
Dependabot is a bot provided by GitHub to check the build configuration files and review any outdated or insecure dependencies of yours – in case if any update is available, it creates a new pull request providing [the proper change][gh:dependabot-pr].
|
||||||
|
|
||||||
> **Note**
|
> [!NOTE]
|
||||||
>
|
|
||||||
> Dependabot doesn't yet support checking of the Gradle Wrapper.
|
> Dependabot doesn't yet support checking of the Gradle Wrapper.
|
||||||
> Check the [Gradle Releases][gradle:releases] page and update your `gradle.properties` file with:
|
> Check the [Gradle Releases][gradle:releases] page and update your `gradle.properties` file with:
|
||||||
> ```properties
|
> ```properties
|
||||||
@ -430,13 +421,13 @@ The changelog is a curated list that contains information about any new features
|
|||||||
When they're provided, these lists are available in a few different places:
|
When they're provided, these lists are available in a few different places:
|
||||||
- the [CHANGELOG.md](./CHANGELOG.md) file,
|
- the [CHANGELOG.md](./CHANGELOG.md) file,
|
||||||
- the [Releases page][gh:releases],
|
- the [Releases page][gh:releases],
|
||||||
- the *What's new* section of JetBrains Marketplace Plugin page,
|
- the *What's new* section of the JetBrains Marketplace Plugin page,
|
||||||
- and inside the Plugin Manager's item details.
|
- and inside the Plugin Manager's item details.
|
||||||
|
|
||||||
There are many methods for handling the project's changelog.
|
There are many methods for handling the project's changelog.
|
||||||
The one used in the current template project is the [Keep a Changelog][keep-a-changelog] approach.
|
The one used in the current template project is the [Keep a Changelog][keep-a-changelog] approach.
|
||||||
|
|
||||||
The [Gradle Changelog Plugin][gh:gradle-changelog-plugin] takes care of propagating information provided within the [CHANGELOG.md](./CHANGELOG.md) to the [Gradle IntelliJ Plugin][gh:gradle-intellij-plugin].
|
The [Gradle Changelog Plugin][gh:gradle-changelog-plugin] takes care of propagating information provided within the [CHANGELOG.md](./CHANGELOG.md) to the [IntelliJ Platform Gradle Plugin][gh:intellij-platform-gradle-plugin].
|
||||||
You only have to take care of writing down the actual changes in proper sections of the `[Unreleased]` section.
|
You only have to take care of writing down the actual changes in proper sections of the `[Unreleased]` section.
|
||||||
|
|
||||||
You start with an almost empty changelog:
|
You start with an almost empty changelog:
|
||||||
@ -452,7 +443,7 @@ You start with an almost empty changelog:
|
|||||||
Now proceed with providing more entries to the `Added` group, or any other one that suits your change the most (see [How do I make a good changelog?][keep-a-changelog-how] for more details).
|
Now proceed with providing more entries to the `Added` group, or any other one that suits your change the most (see [How do I make a good changelog?][keep-a-changelog-how] for more details).
|
||||||
|
|
||||||
When releasing a plugin update, you don't have to care about bumping the `[Unreleased]` header to the upcoming version – it will be handled automatically on the Continuous Integration (CI) after you publish your plugin.
|
When releasing a plugin update, you don't have to care about bumping the `[Unreleased]` header to the upcoming version – it will be handled automatically on the Continuous Integration (CI) after you publish your plugin.
|
||||||
GitHub Actions will swap it and provide you an empty section for the next release so that you can proceed with your development:
|
GitHub Actions will swap it and provide you with an empty section for the next release so that you can proceed with your development:
|
||||||
|
|
||||||
```
|
```
|
||||||
# YourPlugin Changelog
|
# YourPlugin Changelog
|
||||||
@ -468,7 +459,7 @@ GitHub Actions will swap it and provide you an empty section for the next releas
|
|||||||
- One annoying bug
|
- One annoying bug
|
||||||
```
|
```
|
||||||
|
|
||||||
To configure how the Changelog plugin behaves, i.e., to create headers with the release date, see [Gradle Changelog Plugin][gh:gradle-changelog-plugin] README file.
|
To configure how the Changelog plugin behaves, i.e., to create headers with the release date, see the [Gradle Changelog Plugin][gh:gradle-changelog-plugin] README file.
|
||||||
|
|
||||||
### Release flow
|
### Release flow
|
||||||
|
|
||||||
@ -497,29 +488,25 @@ All the configuration related to the signing should be provided using [environme
|
|||||||
|
|
||||||
To find out how to generate signing certificates, check the [Plugin Signing][docs:plugin-signing] section in the IntelliJ Platform Plugin SDK documentation.
|
To find out how to generate signing certificates, check the [Plugin Signing][docs:plugin-signing] section in the IntelliJ Platform Plugin SDK documentation.
|
||||||
|
|
||||||
> **Note**
|
> [!NOTE]
|
||||||
>
|
|
||||||
> Remember to encode your secret environment variables using `base64` encoding to avoid issues with multi-line values.
|
> Remember to encode your secret environment variables using `base64` encoding to avoid issues with multi-line values.
|
||||||
|
|
||||||
### Publishing the plugin
|
### Publishing the plugin
|
||||||
|
|
||||||
> **Tip**
|
> [!TIP]
|
||||||
>
|
|
||||||
> Make sure to follow all guidelines listed in [Publishing a Plugin][docs:publishing] to follow all recommended and required steps.
|
> Make sure to follow all guidelines listed in [Publishing a Plugin][docs:publishing] to follow all recommended and required steps.
|
||||||
|
|
||||||
Releasing a plugin to [JetBrains Marketplace](https://plugins.jetbrains.com) is a straightforward operation that uses the `publishPlugin` Gradle task provided by the [gradle-intellij-plugin][gh:gradle-intellij-plugin-docs].
|
Releasing a plugin to [JetBrains Marketplace](https://plugins.jetbrains.com) is a straightforward operation that uses the `publishPlugin` Gradle task provided by the [intellij-platform-gradle-plugin][gh:intellij-platform-gradle-plugin-docs].
|
||||||
In addition, the [Release](.github/workflows/release.yml) workflow automates this process by running the task when a new release appears in the GitHub Releases section.
|
In addition, the [Release](.github/workflows/release.yml) workflow automates this process by running the task when a new release appears in the GitHub Releases section.
|
||||||
|
|
||||||
> **Note**
|
> [!NOTE]
|
||||||
>
|
|
||||||
> Set a suffix to the plugin version to publish it in the custom repository channel, i.e. `v1.0.0-beta` will push your plugin to the `beta` [release channel][docs:release-channel].
|
> Set a suffix to the plugin version to publish it in the custom repository channel, i.e. `v1.0.0-beta` will push your plugin to the `beta` [release channel][docs:release-channel].
|
||||||
|
|
||||||
The authorization process relies on the `PUBLISH_TOKEN` secret environment variable, specified in the _Secrets_ section of the repository _Settings_.
|
The authorization process relies on the `PUBLISH_TOKEN` secret environment variable, specified in the `⚙️ Settings > Secrets and variables > Actions` section of your project repository.
|
||||||
|
|
||||||
You can get that token in your JetBrains Marketplace profile dashboard in the [My Tokens][jb:my-tokens] tab.
|
You can get that token in your JetBrains Marketplace profile dashboard in the [My Tokens][jb:my-tokens] tab.
|
||||||
|
|
||||||
> **Warning**
|
> [!WARNING]
|
||||||
>
|
|
||||||
> Before using the automated deployment process, it is necessary to manually create a new plugin in JetBrains Marketplace to specify options like the license, repository URL, etc.
|
> Before using the automated deployment process, it is necessary to manually create a new plugin in JetBrains Marketplace to specify options like the license, repository URL, etc.
|
||||||
> Please follow the [Publishing a Plugin][docs:publishing] instructions.
|
> Please follow the [Publishing a Plugin][docs:publishing] instructions.
|
||||||
|
|
||||||
@ -534,10 +521,10 @@ You can still replace it or add the `/src/main/java` directory to start working
|
|||||||
|
|
||||||
### How to disable *tests* or *build* job using the `[skip ci]` commit message?
|
### How to disable *tests* or *build* job using the `[skip ci]` commit message?
|
||||||
|
|
||||||
Since February 2021, GitHub Actions [support the skip CI feature][github-actions-skip-ci].
|
Since February 2021, GitHub Actions [has supported the skip CI feature][github-actions-skip-ci].
|
||||||
If the message contains one of the following strings: `[skip ci]`, `[ci skip]`, `[no ci]`, `[skip actions]`, or `[actions skip]` – workflows will not be triggered.
|
If the message contains one of the following strings: `[skip ci]`, `[ci skip]`, `[no ci]`, `[skip actions]`, or `[actions skip]` – workflows will not be triggered.
|
||||||
|
|
||||||
### Why draft release no longer contains built plugin artifact?
|
### Why does the draft release no longer contain a built plugin artifact?
|
||||||
|
|
||||||
All the binaries created with each workflow are still available, but as an output artifact of each run together with tests and Qodana results.
|
All the binaries created with each workflow are still available, but as an output artifact of each run together with tests and Qodana results.
|
||||||
That approach gives more possibilities for testing and debugging pre-releases, for example, in your local environment.
|
That approach gives more possibilities for testing and debugging pre-releases, for example, in your local environment.
|
||||||
@ -545,7 +532,7 @@ That approach gives more possibilities for testing and debugging pre-releases, f
|
|||||||
## Useful links
|
## Useful links
|
||||||
|
|
||||||
- [IntelliJ Platform SDK Plugin SDK][docs]
|
- [IntelliJ Platform SDK Plugin SDK][docs]
|
||||||
- [Gradle IntelliJ Plugin Documentation][gh:gradle-intellij-plugin-docs]
|
- [IntelliJ Platform Gradle Plugin Documentation][gh:intellij-platform-gradle-plugin-docs]
|
||||||
- [IntelliJ Platform Explorer][jb:ipe]
|
- [IntelliJ Platform Explorer][jb:ipe]
|
||||||
- [JetBrains Marketplace Quality Guidelines][jb:quality-guidelines]
|
- [JetBrains Marketplace Quality Guidelines][jb:quality-guidelines]
|
||||||
- [IntelliJ Platform UI Guidelines][jb:ui-guidelines]
|
- [IntelliJ Platform UI Guidelines][jb:ui-guidelines]
|
||||||
@ -595,10 +582,10 @@ That approach gives more possibilities for testing and debugging pre-releases, f
|
|||||||
[gh:dependabot]: https://docs.github.com/en/free-pro-team@latest/github/administering-a-repository/keeping-your-dependencies-updated-automatically
|
[gh:dependabot]: https://docs.github.com/en/free-pro-team@latest/github/administering-a-repository/keeping-your-dependencies-updated-automatically
|
||||||
[gh:dependabot-pr]: https://github.com/JetBrains/intellij-platform-plugin-template/pull/73
|
[gh:dependabot-pr]: https://github.com/JetBrains/intellij-platform-plugin-template/pull/73
|
||||||
[gh:gradle-changelog-plugin]: https://github.com/JetBrains/gradle-changelog-plugin
|
[gh:gradle-changelog-plugin]: https://github.com/JetBrains/gradle-changelog-plugin
|
||||||
[gh:gradle-intellij-plugin]: https://github.com/JetBrains/gradle-intellij-plugin
|
[gh:intellij-platform-gradle-plugin]: https://github.com/JetBrains/intellij-platform-gradle-plugin
|
||||||
[gh:gradle-intellij-plugin-docs]: https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html
|
[gh:intellij-platform-gradle-plugin-docs]: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin.html
|
||||||
[gh:gradle-intellij-plugin-runIde]: https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#tasks-runide
|
[gh:intellij-platform-gradle-plugin-runIde]: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-tasks.html#runIde
|
||||||
[gh:gradle-intellij-plugin-runPluginVerifier]: https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#tasks-runpluginverifier
|
[gh:intellij-platform-gradle-plugin-verifyPlugin]: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-tasks.html#verifyPlugin
|
||||||
[gh:gradle-qodana-plugin]: https://github.com/JetBrains/gradle-qodana-plugin
|
[gh:gradle-qodana-plugin]: https://github.com/JetBrains/gradle-qodana-plugin
|
||||||
[gh:intellij-ui-test-robot]: https://github.com/JetBrains/intellij-ui-test-robot
|
[gh:intellij-ui-test-robot]: https://github.com/JetBrains/intellij-ui-test-robot
|
||||||
[gh:kover]: https://github.com/Kotlin/kotlinx-kover
|
[gh:kover]: https://github.com/Kotlin/kotlinx-kover
|
||||||
|
|||||||
161
build.gradle.kts
@ -1,75 +1,64 @@
|
|||||||
import org.jetbrains.changelog.Changelog
|
import org.jetbrains.changelog.Changelog
|
||||||
import org.jetbrains.changelog.markdownToHTML
|
import org.jetbrains.changelog.markdownToHTML
|
||||||
|
import org.jetbrains.intellij.platform.gradle.TestFrameworkType
|
||||||
fun properties(key: String) = providers.gradleProperty(key)
|
|
||||||
fun environment(key: String) = providers.environmentVariable(key)
|
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
id("java") // Java support
|
id("java") // Java support
|
||||||
alias(libs.plugins.kotlin) // Kotlin support
|
alias(libs.plugins.kotlin) // Kotlin support
|
||||||
alias(libs.plugins.gradleIntelliJPlugin) // Gradle IntelliJ Plugin
|
alias(libs.plugins.intelliJPlatform) // IntelliJ Platform Gradle Plugin
|
||||||
alias(libs.plugins.changelog) // Gradle Changelog Plugin
|
alias(libs.plugins.changelog) // Gradle Changelog Plugin
|
||||||
alias(libs.plugins.qodana) // Gradle Qodana Plugin
|
alias(libs.plugins.qodana) // Gradle Qodana Plugin
|
||||||
alias(libs.plugins.kover) // Gradle Kover Plugin
|
alias(libs.plugins.kover) // Gradle Kover Plugin
|
||||||
}
|
}
|
||||||
|
|
||||||
group = properties("pluginGroup").get()
|
group = providers.gradleProperty("pluginGroup").get()
|
||||||
version = properties("pluginVersion").get()
|
version = providers.gradleProperty("pluginVersion").get()
|
||||||
|
|
||||||
|
// Set the JVM language level used to build the project.
|
||||||
|
kotlin {
|
||||||
|
jvmToolchain(21)
|
||||||
|
}
|
||||||
|
|
||||||
// Configure project's dependencies
|
// Configure project's dependencies
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
|
|
||||||
|
// IntelliJ Platform Gradle Plugin Repositories Extension - read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-repositories-extension.html
|
||||||
|
intellijPlatform {
|
||||||
|
defaultRepositories()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Dependencies are managed with Gradle version catalog - read more: https://docs.gradle.org/current/userguide/platforms.html#sub:version-catalog
|
// Dependencies are managed with Gradle version catalog - read more: https://docs.gradle.org/current/userguide/version_catalogs.html
|
||||||
dependencies {
|
dependencies {
|
||||||
// implementation(libs.exampleLibrary)
|
testImplementation(libs.junit)
|
||||||
}
|
testImplementation(libs.opentest4j)
|
||||||
|
|
||||||
// Set the JVM language level used to build the project.
|
// IntelliJ Platform Gradle Plugin Dependencies Extension - read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-dependencies-extension.html
|
||||||
kotlin {
|
intellijPlatform {
|
||||||
jvmToolchain(17)
|
intellijIdea(providers.gradleProperty("platformVersion"))
|
||||||
}
|
|
||||||
|
|
||||||
// Configure Gradle IntelliJ Plugin - read more: https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html
|
// Plugin Dependencies. Uses `platformBundledPlugins` property from the gradle.properties file for bundled IntelliJ Platform plugins.
|
||||||
intellij {
|
bundledPlugins(providers.gradleProperty("platformBundledPlugins").map { it.split(',') })
|
||||||
pluginName = properties("pluginName")
|
|
||||||
version = properties("platformVersion")
|
|
||||||
type = properties("platformType")
|
|
||||||
|
|
||||||
// Plugin Dependencies. Uses `platformPlugins` property from the gradle.properties file.
|
// Plugin Dependencies. Uses `platformPlugins` property from the gradle.properties file for plugin from JetBrains Marketplace.
|
||||||
plugins = properties("platformPlugins").map { it.split(',').map(String::trim).filter(String::isNotEmpty) }
|
plugins(providers.gradleProperty("platformPlugins").map { it.split(',') })
|
||||||
}
|
|
||||||
|
|
||||||
// Configure Gradle Changelog Plugin - read more: https://github.com/JetBrains/gradle-changelog-plugin
|
// Module Dependencies. Uses `platformBundledModules` property from the gradle.properties file for bundled IntelliJ Platform modules.
|
||||||
changelog {
|
bundledModules(providers.gradleProperty("platformBundledModules").map { it.split(',') })
|
||||||
groups.empty()
|
|
||||||
repositoryUrl = properties("pluginRepositoryUrl")
|
|
||||||
}
|
|
||||||
|
|
||||||
// Configure Gradle Kover Plugin - read more: https://github.com/Kotlin/kotlinx-kover#configuration
|
testFramework(TestFrameworkType.Platform)
|
||||||
kover {
|
|
||||||
reports {
|
|
||||||
total {
|
|
||||||
xml {
|
|
||||||
onCheck = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks {
|
// Configure IntelliJ Platform Gradle Plugin - read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-extension.html
|
||||||
wrapper {
|
intellijPlatform {
|
||||||
gradleVersion = properties("gradleVersion").get()
|
pluginConfiguration {
|
||||||
}
|
name = providers.gradleProperty("pluginName")
|
||||||
|
version = providers.gradleProperty("pluginVersion")
|
||||||
patchPluginXml {
|
|
||||||
version = properties("pluginVersion")
|
|
||||||
sinceBuild = properties("pluginSinceBuild")
|
|
||||||
untilBuild = properties("pluginUntilBuild")
|
|
||||||
|
|
||||||
// Extract the <!-- Plugin description --> section from README.md and provide for the plugin's manifest
|
// Extract the <!-- Plugin description --> section from README.md and provide for the plugin's manifest
|
||||||
pluginDescription = providers.fileContents(layout.projectDirectory.file("README.md")).asText.map {
|
description = providers.fileContents(layout.projectDirectory.file("README.md")).asText.map {
|
||||||
val start = "<!-- Plugin description -->"
|
val start = "<!-- Plugin description -->"
|
||||||
val end = "<!-- Plugin description end -->"
|
val end = "<!-- Plugin description end -->"
|
||||||
|
|
||||||
@ -83,7 +72,7 @@ tasks {
|
|||||||
|
|
||||||
val changelog = project.changelog // local variable for configuration cache compatibility
|
val changelog = project.changelog // local variable for configuration cache compatibility
|
||||||
// Get the latest available change notes from the changelog file
|
// Get the latest available change notes from the changelog file
|
||||||
changeNotes = properties("pluginVersion").map { pluginVersion ->
|
changeNotes = providers.gradleProperty("pluginVersion").map { pluginVersion ->
|
||||||
with(changelog) {
|
with(changelog) {
|
||||||
renderItem(
|
renderItem(
|
||||||
(getOrNull(pluginVersion) ?: getUnreleased())
|
(getOrNull(pluginVersion) ?: getUnreleased())
|
||||||
@ -93,29 +82,77 @@ tasks {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ideaVersion {
|
||||||
|
sinceBuild = providers.gradleProperty("pluginSinceBuild")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Configure UI tests plugin
|
signing {
|
||||||
// Read more: https://github.com/JetBrains/intellij-ui-test-robot
|
certificateChain = providers.environmentVariable("CERTIFICATE_CHAIN")
|
||||||
runIdeForUiTests {
|
privateKey = providers.environmentVariable("PRIVATE_KEY")
|
||||||
systemProperty("robot-server.port", "8082")
|
password = providers.environmentVariable("PRIVATE_KEY_PASSWORD")
|
||||||
systemProperty("ide.mac.message.dialogs.as.sheets", "false")
|
|
||||||
systemProperty("jb.privacy.policy.text", "<!--999.999-->")
|
|
||||||
systemProperty("jb.consents.confirmation.enabled", "false")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
signPlugin {
|
publishing {
|
||||||
certificateChain = environment("CERTIFICATE_CHAIN")
|
token = providers.environmentVariable("PUBLISH_TOKEN")
|
||||||
privateKey = environment("PRIVATE_KEY")
|
// The pluginVersion is based on the SemVer (https://semver.org) and supports pre-release labels, like 2.1.7-alpha.3
|
||||||
password = environment("PRIVATE_KEY_PASSWORD")
|
// Specify pre-release label to publish the plugin in a custom Release Channel automatically. Read more:
|
||||||
|
// https://plugins.jetbrains.com/docs/intellij/publishing-plugin.html#specifying-a-release-channel
|
||||||
|
channels = providers.gradleProperty("pluginVersion").map { listOf(it.substringAfter('-', "").substringBefore('.').ifEmpty { "default" }) }
|
||||||
|
}
|
||||||
|
|
||||||
|
pluginVerification {
|
||||||
|
ides {
|
||||||
|
recommended()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Configure Gradle Changelog Plugin - read more: https://github.com/JetBrains/gradle-changelog-plugin
|
||||||
|
changelog {
|
||||||
|
groups.empty()
|
||||||
|
repositoryUrl = providers.gradleProperty("pluginRepositoryUrl")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Configure Gradle Kover Plugin - read more: https://kotlin.github.io/kotlinx-kover/gradle-plugin/#configuration-details
|
||||||
|
kover {
|
||||||
|
reports {
|
||||||
|
total {
|
||||||
|
xml {
|
||||||
|
onCheck = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks {
|
||||||
|
wrapper {
|
||||||
|
gradleVersion = providers.gradleProperty("gradleVersion").get()
|
||||||
}
|
}
|
||||||
|
|
||||||
publishPlugin {
|
publishPlugin {
|
||||||
dependsOn("patchChangelog")
|
dependsOn(patchChangelog)
|
||||||
token = environment("PUBLISH_TOKEN")
|
}
|
||||||
// The pluginVersion is based on the SemVer (https://semver.org) and supports pre-release labels, like 2.1.7-alpha.3
|
}
|
||||||
// Specify pre-release label to publish the plugin in a custom Release Channel automatically. Read more:
|
|
||||||
// https://plugins.jetbrains.com/docs/intellij/deployment.html#specifying-a-release-channel
|
intellijPlatformTesting {
|
||||||
channels = properties("pluginVersion").map { listOf(it.substringAfter('-', "").substringBefore('.').ifEmpty { "default" }) }
|
runIde {
|
||||||
|
register("runIdeForUiTests") {
|
||||||
|
task {
|
||||||
|
jvmArgumentProviders += CommandLineArgumentProvider {
|
||||||
|
listOf(
|
||||||
|
"-Drobot-server.port=8082",
|
||||||
|
"-Dide.mac.message.dialogs.as.sheets=false",
|
||||||
|
"-Djb.privacy.policy.text=<!--999.999-->",
|
||||||
|
"-Djb.consents.confirmation.enabled=false",
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
robotServerPlugin()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
10
codecov.yml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
coverage:
|
||||||
|
status:
|
||||||
|
project:
|
||||||
|
default:
|
||||||
|
informational: true
|
||||||
|
threshold: 0%
|
||||||
|
base: auto
|
||||||
|
patch:
|
||||||
|
default:
|
||||||
|
informational: true
|
||||||
@ -4,22 +4,24 @@ pluginGroup = org.jetbrains.plugins.template
|
|||||||
pluginName = IntelliJ Platform Plugin Template
|
pluginName = IntelliJ Platform Plugin Template
|
||||||
pluginRepositoryUrl = https://github.com/JetBrains/intellij-platform-plugin-template
|
pluginRepositoryUrl = https://github.com/JetBrains/intellij-platform-plugin-template
|
||||||
# SemVer format -> https://semver.org
|
# SemVer format -> https://semver.org
|
||||||
pluginVersion = 1.14.2
|
pluginVersion = 2.4.0
|
||||||
|
|
||||||
# Supported build number ranges and IntelliJ Platform versions -> https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html
|
# Supported build number ranges and IntelliJ Platform versions -> https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html
|
||||||
pluginSinceBuild = 232
|
pluginSinceBuild = 252
|
||||||
pluginUntilBuild = 242.*
|
|
||||||
|
|
||||||
# IntelliJ Platform Properties -> https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#configuration-intellij-extension
|
# IntelliJ Platform Properties -> https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#configuration-intellij-extension
|
||||||
platformType = IC
|
platformVersion = 2025.2.5
|
||||||
platformVersion = 2023.2.7
|
|
||||||
|
|
||||||
# Plugin Dependencies -> https://plugins.jetbrains.com/docs/intellij/plugin-dependencies.html
|
# Plugin Dependencies -> https://plugins.jetbrains.com/docs/intellij/plugin-dependencies.html
|
||||||
# Example: platformPlugins = com.intellij.java, com.jetbrains.php:203.4449.22
|
# Example: platformPlugins = com.jetbrains.php:203.4449.22, org.intellij.scala:2023.3.27@EAP
|
||||||
platformPlugins =
|
platformPlugins =
|
||||||
|
# Example: platformBundledPlugins = com.intellij.java
|
||||||
|
platformBundledPlugins =
|
||||||
|
# Example: platformBundledModules = intellij.spellchecker
|
||||||
|
platformBundledModules =
|
||||||
|
|
||||||
# Gradle Releases -> https://github.com/gradle/gradle/releases
|
# Gradle Releases -> https://github.com/gradle/gradle/releases
|
||||||
gradleVersion = 8.9
|
gradleVersion = 9.2.1
|
||||||
|
|
||||||
# Opt-out flag for bundling Kotlin standard library -> https://jb.gg/intellij-platform-kotlin-stdlib
|
# Opt-out flag for bundling Kotlin standard library -> https://jb.gg/intellij-platform-kotlin-stdlib
|
||||||
kotlin.stdlib.default.dependency = false
|
kotlin.stdlib.default.dependency = false
|
||||||
|
|||||||
@ -1,20 +1,22 @@
|
|||||||
[versions]
|
[versions]
|
||||||
# libraries
|
# libraries
|
||||||
exampleLibrary = "24.1.0"
|
junit = "4.13.2"
|
||||||
|
opentest4j = "1.3.0"
|
||||||
|
|
||||||
# plugins
|
# plugins
|
||||||
kotlin = "1.9.24"
|
changelog = "2.5.0"
|
||||||
changelog = "2.2.0"
|
intelliJPlatform = "2.10.5"
|
||||||
gradleIntelliJPlugin = "1.17.4"
|
kotlin = "2.2.21"
|
||||||
qodana = "2024.1.5"
|
kover = "0.9.3"
|
||||||
kover = "0.8.1"
|
qodana = "2025.2.2"
|
||||||
|
|
||||||
[libraries]
|
[libraries]
|
||||||
exampleLibrary = { group = "com.example", name = "exampleLibrary", version.ref = "exampleLibrary" }
|
junit = { group = "junit", name = "junit", version.ref = "junit" }
|
||||||
|
opentest4j = { group = "org.opentest4j", name = "opentest4j", version.ref = "opentest4j" }
|
||||||
|
|
||||||
[plugins]
|
[plugins]
|
||||||
changelog = { id = "org.jetbrains.changelog", version.ref = "changelog" }
|
changelog = { id = "org.jetbrains.changelog", version.ref = "changelog" }
|
||||||
gradleIntelliJPlugin = { id = "org.jetbrains.intellij", version.ref = "gradleIntelliJPlugin" }
|
intelliJPlatform = { id = "org.jetbrains.intellij.platform", version.ref = "intelliJPlatform" }
|
||||||
kotlin = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
|
kotlin = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
|
||||||
kover = { id = "org.jetbrains.kotlinx.kover", version.ref = "kover" }
|
kover = { id = "org.jetbrains.kotlinx.kover", version.ref = "kover" }
|
||||||
qodana = { id = "org.jetbrains.qodana", version.ref = "qodana" }
|
qodana = { id = "org.jetbrains.qodana", version.ref = "qodana" }
|
||||||
|
|||||||
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@ -1,6 +1,6 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip
|
||||||
networkTimeout=10000
|
networkTimeout=10000
|
||||||
validateDistributionUrl=true
|
validateDistributionUrl=true
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
|
|||||||
12
gradlew
vendored
@ -1,7 +1,7 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
#
|
#
|
||||||
# Copyright © 2015-2021 the original authors.
|
# Copyright © 2015 the original authors.
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
# you may not use this file except in compliance with the License.
|
# you may not use this file except in compliance with the License.
|
||||||
@ -86,8 +86,7 @@ done
|
|||||||
# shellcheck disable=SC2034
|
# shellcheck disable=SC2034
|
||||||
APP_BASE_NAME=${0##*/}
|
APP_BASE_NAME=${0##*/}
|
||||||
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
|
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
|
||||||
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
|
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
|
||||||
' "$PWD" ) || exit
|
|
||||||
|
|
||||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||||
MAX_FD=maximum
|
MAX_FD=maximum
|
||||||
@ -115,7 +114,6 @@ case "$( uname )" in #(
|
|||||||
NONSTOP* ) nonstop=true ;;
|
NONSTOP* ) nonstop=true ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
|
||||||
|
|
||||||
|
|
||||||
# Determine the Java command to use to start the JVM.
|
# Determine the Java command to use to start the JVM.
|
||||||
@ -173,7 +171,6 @@ fi
|
|||||||
# For Cygwin or MSYS, switch paths to Windows format before running java
|
# For Cygwin or MSYS, switch paths to Windows format before running java
|
||||||
if "$cygwin" || "$msys" ; then
|
if "$cygwin" || "$msys" ; then
|
||||||
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
|
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
|
||||||
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
|
|
||||||
|
|
||||||
JAVACMD=$( cygpath --unix "$JAVACMD" )
|
JAVACMD=$( cygpath --unix "$JAVACMD" )
|
||||||
|
|
||||||
@ -206,15 +203,14 @@ fi
|
|||||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||||
|
|
||||||
# Collect all arguments for the java command:
|
# Collect all arguments for the java command:
|
||||||
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
|
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
|
||||||
# and any embedded shellness will be escaped.
|
# and any embedded shellness will be escaped.
|
||||||
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
|
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
|
||||||
# treated as '${Hostname}' itself on the command line.
|
# treated as '${Hostname}' itself on the command line.
|
||||||
|
|
||||||
set -- \
|
set -- \
|
||||||
"-Dorg.gradle.appname=$APP_BASE_NAME" \
|
"-Dorg.gradle.appname=$APP_BASE_NAME" \
|
||||||
-classpath "$CLASSPATH" \
|
-jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
|
||||||
org.gradle.wrapper.GradleWrapperMain \
|
|
||||||
"$@"
|
"$@"
|
||||||
|
|
||||||
# Stop when "xargs" is not available.
|
# Stop when "xargs" is not available.
|
||||||
|
|||||||
3
gradlew.bat
vendored
@ -70,11 +70,10 @@ goto fail
|
|||||||
:execute
|
:execute
|
||||||
@rem Setup the command line
|
@rem Setup the command line
|
||||||
|
|
||||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
|
||||||
|
|
||||||
|
|
||||||
@rem Execute Gradle
|
@rem Execute Gradle
|
||||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
|
||||||
|
|
||||||
:end
|
:end
|
||||||
@rem End local scope for the variables with windows NT shell
|
@rem End local scope for the variables with windows NT shell
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
# Qodana configuration:
|
# Qodana configuration:
|
||||||
# https://www.jetbrains.com/help/qodana/qodana-yaml.html
|
# https://www.jetbrains.com/help/qodana/qodana-yaml.html
|
||||||
|
|
||||||
version: 1.0
|
version: "1.0"
|
||||||
linter: jetbrains/qodana-jvm-community:latest
|
linter: jetbrains/qodana-jvm-community:2024.3
|
||||||
projectJDK: "17"
|
projectJDK: "21"
|
||||||
profile:
|
profile:
|
||||||
name: qodana.recommended
|
name: qodana.recommended
|
||||||
exclude:
|
exclude:
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
plugins {
|
|
||||||
id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0"
|
|
||||||
}
|
|
||||||
|
|
||||||
rootProject.name = "IntelliJ Platform Plugin Template"
|
rootProject.name = "IntelliJ Platform Plugin Template"
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0"
|
||||||
|
}
|
||||||
|
|||||||
@ -1,12 +0,0 @@
|
|||||||
package org.jetbrains.plugins.template.listeners
|
|
||||||
|
|
||||||
import com.intellij.openapi.application.ApplicationActivationListener
|
|
||||||
import com.intellij.openapi.diagnostic.thisLogger
|
|
||||||
import com.intellij.openapi.wm.IdeFrame
|
|
||||||
|
|
||||||
internal class MyApplicationActivationListener : ApplicationActivationListener {
|
|
||||||
|
|
||||||
override fun applicationActivated(ideFrame: IdeFrame) {
|
|
||||||
thisLogger().warn("Don't forget to remove all non-needed sample code files with their corresponding registration entries in `plugin.xml`.")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
package org.jetbrains.plugins.template.startup
|
||||||
|
|
||||||
|
import com.intellij.openapi.diagnostic.thisLogger
|
||||||
|
import com.intellij.openapi.project.Project
|
||||||
|
import com.intellij.openapi.startup.ProjectActivity
|
||||||
|
|
||||||
|
class MyProjectActivity : ProjectActivity {
|
||||||
|
|
||||||
|
override suspend fun execute(project: Project) {
|
||||||
|
thisLogger().warn("Don't forget to remove all non-needed sample code files with their corresponding registration entries in `plugin.xml`.")
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -10,9 +10,6 @@
|
|||||||
|
|
||||||
<extensions defaultExtensionNs="com.intellij">
|
<extensions defaultExtensionNs="com.intellij">
|
||||||
<toolWindow factoryClass="org.jetbrains.plugins.template.toolWindow.MyToolWindowFactory" id="MyToolWindow"/>
|
<toolWindow factoryClass="org.jetbrains.plugins.template.toolWindow.MyToolWindowFactory" id="MyToolWindow"/>
|
||||||
|
<postStartupActivity implementation="org.jetbrains.plugins.template.startup.MyProjectActivity" />
|
||||||
</extensions>
|
</extensions>
|
||||||
|
|
||||||
<applicationListeners>
|
|
||||||
<listener class="org.jetbrains.plugins.template.listeners.MyApplicationActivationListener" topic="com.intellij.openapi.application.ApplicationActivationListener"/>
|
|
||||||
</applicationListeners>
|
|
||||||
</idea-plugin>
|
</idea-plugin>
|
||||||
|
|||||||