Compare commits
85 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
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 | ||
|
a4f1c21295 | ||
|
292c8e0ed6 | ||
|
e5e5af44a3 | ||
|
fa099ff446 | ||
|
0474c03f14 | ||
|
01234410a3 | ||
|
0fe4d27ea9 | ||
|
f3bc69268f | ||
|
a9e9c97c41 | ||
|
2340290cb2 | ||
|
a2e31af6e2 | ||
|
a362a06048 | ||
|
a05cf9961b | ||
|
79bea43e25 | ||
|
af9a2b4c33 | ||
|
0a59020482 | ||
|
0999d97fe5 | ||
|
b4ff5e14a9 | ||
|
51cac269b1 | ||
|
767bea0f5a | ||
|
8c641e4966 | ||
|
f83b2a7dd4 | ||
|
22f70af698 | ||
|
87a8cd9930 | ||
|
7202bfac40 | ||
|
240e06cc53 | ||
|
38a12bf912 | ||
|
a53b879b23 | ||
|
bbaabfe294 | ||
|
da699e9dbf | ||
|
aca1a500bc | ||
|
c7799095f6 | ||
|
be87c6b2b2 | ||
|
a746a36063 | ||
|
2fd14cda2e | ||
|
a23f859ba7 | ||
|
16168ba7e8 |
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 |
15
.github/template-cleanup/README.md
vendored
@ -1,17 +1,17 @@
|
||||
# %NAME%
|
||||
|
||||

|
||||
[](https://plugins.jetbrains.com/plugin/PLUGIN_ID)
|
||||
[](https://plugins.jetbrains.com/plugin/PLUGIN_ID)
|
||||
[](https://plugins.jetbrains.com/plugin/MARKETPLACE_ID)
|
||||
[](https://plugins.jetbrains.com/plugin/MARKETPLACE_ID)
|
||||
|
||||
## Template ToDo list
|
||||
- [x] Create a new [IntelliJ Platform Plugin Template][template] project.
|
||||
- [ ] Get familiar with the [template documentation][template].
|
||||
- [ ] Adjust the [pluginGroup](./gradle.properties), [plugin ID](./src/main/resources/META-INF/plugin.xml) and [sources package](./src/main/kotlin).
|
||||
- [ ] Adjust the [pluginGroup](./gradle.properties) and [pluginName](./gradle.properties), as well as the [id](./src/main/resources/META-INF/plugin.xml) and [sources package](./src/main/kotlin).
|
||||
- [ ] 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).
|
||||
- [ ] [Publish a plugin manually](https://plugins.jetbrains.com/docs/intellij/publishing-plugin.html?from=IJPluginTemplate) for the first time.
|
||||
- [ ] Set the `PLUGIN_ID` in the above README badges.
|
||||
- [ ] 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 [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.
|
||||
@ -31,6 +31,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>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:
|
||||
|
||||
Download the [latest release](https://github.com/%REPOSITORY%/releases/latest) and install it manually using
|
||||
|
10
.github/template-cleanup/gradle.properties
vendored
@ -7,19 +7,21 @@ pluginRepositoryUrl = https://github.com/%REPOSITORY%
|
||||
pluginVersion = 0.0.1
|
||||
|
||||
# Supported build number ranges and IntelliJ Platform versions -> https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html
|
||||
pluginSinceBuild = 232
|
||||
pluginSinceBuild = 233
|
||||
pluginUntilBuild = 242.*
|
||||
|
||||
# IntelliJ Platform Properties -> https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#configuration-intellij-extension
|
||||
platformType = IC
|
||||
platformVersion = 2023.2.6
|
||||
platformVersion = 2023.3.8
|
||||
|
||||
# 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 =
|
||||
# Example: platformBundledPlugins = com.intellij.java
|
||||
platformBundledPlugins =
|
||||
|
||||
# Gradle Releases -> https://github.com/gradle/gradle/releases
|
||||
gradleVersion = 8.7
|
||||
gradleVersion = 8.10.2
|
||||
|
||||
# Opt-out flag for bundling Kotlin standard library -> https://jb.gg/intellij-platform-kotlin-stdlib
|
||||
kotlin.stdlib.default.dependency = false
|
||||
|
31
.github/workflows/build.yml
vendored
@ -36,7 +36,7 @@ jobs:
|
||||
pluginVerifierHomeDir: ${{ steps.properties.outputs.pluginVerifierHomeDir }}
|
||||
steps:
|
||||
|
||||
# Check out current repository
|
||||
# Check out the current repository
|
||||
- name: Fetch Sources
|
||||
uses: actions/checkout@v4
|
||||
|
||||
@ -53,9 +53,7 @@ jobs:
|
||||
|
||||
# Setup Gradle
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@v3
|
||||
with:
|
||||
gradle-home-cache-cleanup: true
|
||||
uses: gradle/actions/setup-gradle@v4
|
||||
|
||||
# Set environment variables
|
||||
- name: Export Properties
|
||||
@ -73,8 +71,6 @@ jobs:
|
||||
echo "$CHANGELOG" >> $GITHUB_OUTPUT
|
||||
echo "EOF" >> $GITHUB_OUTPUT
|
||||
|
||||
./gradlew listProductsReleases # prepare list of IDEs for Plugin Verifier
|
||||
|
||||
# Build plugin
|
||||
- name: Build plugin
|
||||
run: ./gradlew buildPlugin
|
||||
@ -104,7 +100,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
|
||||
# Check out current repository
|
||||
# Check out the current repository
|
||||
- name: Fetch Sources
|
||||
uses: actions/checkout@v4
|
||||
|
||||
@ -117,9 +113,7 @@ jobs:
|
||||
|
||||
# Setup Gradle
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@v3
|
||||
with:
|
||||
gradle-home-cache-cleanup: true
|
||||
uses: gradle/actions/setup-gradle@v4
|
||||
|
||||
# Run tests
|
||||
- name: Run Tests
|
||||
@ -157,9 +151,12 @@ jobs:
|
||||
tool-cache: false
|
||||
large-packages: false
|
||||
|
||||
# Check out current repository
|
||||
# Check out the current repository
|
||||
- name: Fetch Sources
|
||||
uses: actions/checkout@v4
|
||||
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
|
||||
- name: Setup Java
|
||||
@ -170,7 +167,7 @@ jobs:
|
||||
|
||||
# Run Qodana inspections
|
||||
- name: Qodana - Code Inspection
|
||||
uses: JetBrains/qodana-action@v2024.1.5
|
||||
uses: JetBrains/qodana-action@v2024.2
|
||||
with:
|
||||
cache-default-branch-only: true
|
||||
|
||||
@ -188,7 +185,7 @@ jobs:
|
||||
tool-cache: false
|
||||
large-packages: false
|
||||
|
||||
# Check out current repository
|
||||
# Check out the current repository
|
||||
- name: Fetch Sources
|
||||
uses: actions/checkout@v4
|
||||
|
||||
@ -201,9 +198,7 @@ jobs:
|
||||
|
||||
# Setup Gradle
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@v3
|
||||
with:
|
||||
gradle-home-cache-cleanup: true
|
||||
uses: gradle/actions/setup-gradle@v4
|
||||
|
||||
# Cache Plugin Verifier IDEs
|
||||
- name: Setup Plugin Verifier IDEs Cache
|
||||
@ -214,7 +209,7 @@ jobs:
|
||||
|
||||
# Run Verify Plugin task and IntelliJ Plugin Verifier tool
|
||||
- name: Run Plugin Verification tasks
|
||||
run: ./gradlew runPluginVerifier -Dplugin.verifier.home.dir=${{ needs.build.outputs.pluginVerifierHomeDir }}
|
||||
run: ./gradlew verifyPlugin -Dplugin.verifier.home.dir=${{ needs.build.outputs.pluginVerifierHomeDir }}
|
||||
|
||||
# Collect Plugin Verifier Result
|
||||
- name: Collect Plugin Verifier Result
|
||||
@ -235,7 +230,7 @@ jobs:
|
||||
contents: write
|
||||
steps:
|
||||
|
||||
# Check out current repository
|
||||
# Check out the current repository
|
||||
- name: Fetch Sources
|
||||
uses: actions/checkout@v4
|
||||
|
||||
|
8
.github/workflows/release.yml
vendored
@ -18,7 +18,7 @@ jobs:
|
||||
pull-requests: write
|
||||
steps:
|
||||
|
||||
# Check out current repository
|
||||
# Check out the current repository
|
||||
- name: Fetch Sources
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
@ -33,9 +33,7 @@ jobs:
|
||||
|
||||
# Setup Gradle
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@v3
|
||||
with:
|
||||
gradle-home-cache-cleanup: true
|
||||
uses: gradle/actions/setup-gradle@v4
|
||||
|
||||
# Set environment variables
|
||||
- name: Export Properties
|
||||
@ -51,7 +49,7 @@ jobs:
|
||||
echo "$CHANGELOG" >> $GITHUB_OUTPUT
|
||||
echo "EOF" >> $GITHUB_OUTPUT
|
||||
|
||||
# Update Unreleased section with the current release note
|
||||
# Update the Unreleased section with the current release note
|
||||
- name: Patch Changelog
|
||||
if: ${{ steps.properties.outputs.changelog != '' }}
|
||||
env:
|
||||
|
6
.github/workflows/run-ui-tests.yml
vendored
@ -31,7 +31,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
|
||||
# Check out current repository
|
||||
# Check out the current repository
|
||||
- name: Fetch Sources
|
||||
uses: actions/checkout@v4
|
||||
|
||||
@ -44,9 +44,7 @@ jobs:
|
||||
|
||||
# Setup Gradle
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@v3
|
||||
with:
|
||||
gradle-home-cache-cleanup: true
|
||||
uses: gradle/actions/setup-gradle@v4
|
||||
|
||||
# Run IDEA prepared for UI testing
|
||||
- name: Run IDE
|
||||
|
3
.github/workflows/template-cleanup.yml
vendored
@ -17,7 +17,7 @@ jobs:
|
||||
contents: write
|
||||
steps:
|
||||
|
||||
# Check out current repository
|
||||
# Check out the current repository
|
||||
- name: Fetch Sources
|
||||
uses: actions/checkout@v4
|
||||
|
||||
@ -61,7 +61,6 @@ jobs:
|
||||
.idea/icon.png \
|
||||
src/main/kotlin/org \
|
||||
src/test/kotlin/org \
|
||||
src/main/resources/META-INF/pluginIcon.svg \
|
||||
CODE_OF_CONDUCT.md \
|
||||
LICENSE
|
||||
|
||||
|
2
.github/workflows/template-verify.yml
vendored
@ -21,7 +21,7 @@ jobs:
|
||||
changelog: ${{ steps.properties.outputs.changelog }}
|
||||
steps:
|
||||
|
||||
# Check out current repository
|
||||
# Check out the current repository
|
||||
- name: Fetch Sources
|
||||
uses: actions/checkout@v4
|
||||
|
||||
|
1
.gitignore
vendored
@ -1,4 +1,5 @@
|
||||
.gradle
|
||||
.idea
|
||||
.intellijPlatform
|
||||
.qodana
|
||||
build
|
||||
|
@ -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">
|
||||
<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>
|
||||
<option name="executionName" />
|
||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||
@ -19,6 +19,7 @@
|
||||
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
|
||||
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
|
||||
<DebugAllEnabled>false</DebugAllEnabled>
|
||||
<RunAsTest>false</RunAsTest>
|
||||
<method v="2" />
|
||||
</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 name="taskNames">
|
||||
<list>
|
||||
<option value="runPluginVerifier" />
|
||||
<option value="verifyPlugin" />
|
||||
</list>
|
||||
</option>
|
||||
<option name="vmOptions" value="" />
|
||||
@ -19,8 +19,7 @@
|
||||
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
|
||||
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
|
||||
<DebugAllEnabled>false</DebugAllEnabled>
|
||||
<method v="2">
|
||||
<option name="Gradle.BeforeRunTask" enabled="true" tasks="clean" externalProjectPath="$PROJECT_DIR$" vmOptions="" scriptParameters="" />
|
||||
</method>
|
||||
<RunAsTest>false</RunAsTest>
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
</component>
|
70
CHANGELOG.md
@ -6,6 +6,63 @@
|
||||
|
||||
### 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
|
||||
|
||||
- Upgrade Gradle Wrapper to `8.9`
|
||||
|
||||
### Removed
|
||||
|
||||
- Remove default plugin icon (`pluginIcon.svg`)
|
||||
|
||||
## [1.14.1] - 2024-06-19
|
||||
|
||||
### Changed
|
||||
|
||||
- Update `platformVersion` to `2023.2.7`
|
||||
- Upgrade Gradle Wrapper to `8.8`
|
||||
- Dependencies - upgrade `org.jetbrains.intellij` to `1.17.4`
|
||||
- Dependencies - downgrade `org.jetbrains.kotlin.jvm` to `1.9.24`
|
||||
- Dependencies - upgrade `org.jetbrains.kotlinx.kover` to `0.8.1`
|
||||
|
||||
## [1.14.0] - 2024-05-30
|
||||
|
||||
### Changed
|
||||
|
||||
- Update `platformVersion` to `2023.2.6`
|
||||
- Change since/until build to `232-242.*` (2023.2-2024.2.*)
|
||||
- Upgrade Gradle Wrapper to `8.7`
|
||||
@ -25,7 +82,7 @@
|
||||
|
||||
- Dependencies - upgrade `org.jetbrains.kotlin.jvm` to `1.9.23`
|
||||
- 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 `codecov/codecov-action` to `4`
|
||||
- Dependencies (GitHub Actions) - upgrade `gradle/wrapper-validation-action` to `2`
|
||||
@ -712,7 +769,12 @@
|
||||
- GitHub Actions to automate testing and deployment
|
||||
- Kotlin support
|
||||
|
||||
[Unreleased]: https://github.com/JetBrains/intellij-platform-plugin-template/compare/v1.13.0...HEAD
|
||||
[Unreleased]: https://github.com/JetBrains/intellij-platform-plugin-template/compare/v2.0.1...HEAD
|
||||
[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.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.12.0]: https://github.com/JetBrains/intellij-platform-plugin-template/compare/v1.11.3...v1.12.0
|
||||
[1.11.3]: https://github.com/JetBrains/intellij-platform-plugin-template/compare/v1.11.2...v1.11.3
|
||||
@ -751,5 +813,5 @@
|
||||
[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.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.1]: https://github.com/JetBrains/intellij-platform-plugin-template/commits
|
||||
[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/v0.0.1
|
||||
|
133
README.md
@ -8,8 +8,7 @@
|
||||
![IntelliJ Platform Plugin Template][file:intellij-platform-plugin-template-dark]
|
||||
![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.
|
||||
|
||||
<!-- Plugin description -->
|
||||
@ -22,8 +21,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]
|
||||
|
||||
> **Note**
|
||||
>
|
||||
> [!NOTE]
|
||||
> Click the <kbd>Watch</kbd> button on the top to be notified about releases containing new features and fixes.
|
||||
|
||||
### Table of contents
|
||||
@ -48,7 +46,7 @@ In this README, we will highlight the following elements of template-project cre
|
||||
- [Changelog maintenance](#changelog-maintenance) with the Gradle Changelog Plugin
|
||||
- [Release flow](#release-flow) using GitHub Releases
|
||||
- [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)
|
||||
- [Useful links](#useful-links)
|
||||
|
||||
@ -79,25 +77,23 @@ The next step, after opening your project in IntelliJ IDEA, is to set the proper
|
||||
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.
|
||||
|
||||
> **Note**
|
||||
>
|
||||
> [!NOTE]
|
||||
> To use Java in your plugin, create the `/src/main/java` directory.
|
||||
|
||||
|
||||
## 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 `gradle-intellij-plugin` makes it possible to run the IDE with your plugin and publish your plugin to JetBrains Marketplace.
|
||||
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 IntelliJ Platform Gradle Plugin makes it possible to run the IDE with your plugin and publish your plugin to JetBrains Marketplace.
|
||||
|
||||
> **Note**
|
||||
>
|
||||
> Make sure to always upgrade to the latest version of `gradle-intellij-plugin`.
|
||||
> [!NOTE]
|
||||
> Make sure to always upgrade to the latest version of IntelliJ Platform Gradle Plugin.
|
||||
|
||||
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.
|
||||
|
||||
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].
|
||||
- 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.
|
||||
@ -109,20 +105,21 @@ For more details regarding Kotlin integration, please see [Kotlin for Plugin Dev
|
||||
|
||||
The project-specific configuration file [`gradle.properties`][file:gradle.properties] contains:
|
||||
|
||||
| Property name | Description |
|
||||
|-----------------------|-----------------------------------------------------------------------------------------------------------|
|
||||
| `pluginGroup` | Package name - after *using* the template, this will be set to `com.github.username.repo`. |
|
||||
| `pluginName` | Plugin name displayed in JetBrains Marketplace. |
|
||||
| `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. |
|
||||
| `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. |
|
||||
| `platformPlugins` | Comma-separated list of dependencies to the bundled IDE plugins and plugins from the Plugin Repositories. |
|
||||
| `gradleVersion` | Version of Gradle used for plugin development. |
|
||||
| Property name | Description |
|
||||
|--------------------------|------------------------------------------------------------------------------------------------------|
|
||||
| `pluginGroup` | Package name - after *using* the template, this will be set to `com.github.username.repo`. |
|
||||
| `pluginName` | Plugin name displayed in JetBrains Marketplace. |
|
||||
| `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. |
|
||||
| `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. |
|
||||
| `platformPlugins` | Comma-separated list of dependencies to the plugins from the Plugin Repositories. |
|
||||
| `platformBundledPlugins` | Comma-separated list of dependencies to the bundled IDE plugins. |
|
||||
| `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:
|
||||
|
||||
@ -136,7 +133,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.
|
||||
|
||||
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).
|
||||
|
||||
@ -149,7 +146,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.
|
||||
|
||||
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]
|
||||
|
||||
@ -186,8 +183,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].
|
||||
|
||||
> **Note**
|
||||
>
|
||||
> [!NOTE]
|
||||
> To use Java in your plugin, create the `/src/main/java` directory.
|
||||
|
||||
|
||||
@ -239,15 +235,16 @@ These files are located in `src/main/kotlin`.
|
||||
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.
|
||||
|
||||
> [!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.
|
||||
|
||||
> **Warning**
|
||||
>
|
||||
> Don't forget to remove all non-needed sample code files with their corresponding registration entries in `plugin.xml`.
|
||||
> [!WARNING]
|
||||
> Remember 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.
|
||||
|
||||
|
||||
## 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.
|
||||
@ -258,10 +255,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.
|
||||
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.
|
||||
|
||||
### Code coverage
|
||||
@ -279,9 +275,8 @@ If your plugin provides complex user interfaces, you should consider covering th
|
||||
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.
|
||||
|
||||
> **Note**
|
||||
>
|
||||
> 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.
|
||||
> [!NOTE]
|
||||
> Run IDE for UI tests 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].
|
||||
|
||||
@ -315,8 +310,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.
|
||||
|
||||
> **Note**
|
||||
>
|
||||
> [!NOTE]
|
||||
> 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.
|
||||
@ -332,16 +326,13 @@ Within the default project structure, there is a `.run` directory provided conta
|
||||
|
||||
![Run/Debug configurations][file:run-debug-configurations.png]
|
||||
|
||||
| Configuration name | Description |
|
||||
|----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| Run Plugin | Runs [`:runIde`][gh:gradle-intellij-plugin-runIde] Gradle IntelliJ 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 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 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`. |
|
||||
| Configuration name | Description |
|
||||
|--------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| Run Plugin | Runs [`:runIde`][gh:intellij-platform-gradle-plugin-runIde] IntelliJ Platform Gradle Plugin task. Use the *Debug* icon for plugin debugging. |
|
||||
| Run Tests | Runs [`:test`][gradle:lifecycle-tasks] Gradle task. |
|
||||
| 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. |
|
||||
|
||||
> **Note**
|
||||
>
|
||||
> [!NOTE]
|
||||
> You can find the logs from the running task in the `idea.log` tab.
|
||||
>
|
||||
> ![Run/Debug configuration logs][file:run-logs.png]
|
||||
@ -386,8 +377,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.
|
||||
|
||||
> **Note**
|
||||
>
|
||||
> [!NOTE]
|
||||
> To add a new dependency to the project, in the `dependencies { ... }` block, add:
|
||||
>
|
||||
> ```kotlin
|
||||
@ -409,8 +399,7 @@ Keeping the project in good shape and having all the dependencies up-to-date req
|
||||
|
||||
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.
|
||||
> Check the [Gradle Releases][gradle:releases] page and update your `gradle.properties` file with:
|
||||
> ```properties
|
||||
@ -430,13 +419,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:
|
||||
- the [CHANGELOG.md](./CHANGELOG.md) file,
|
||||
- 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.
|
||||
|
||||
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 [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 start with an almost empty changelog:
|
||||
@ -468,7 +457,7 @@ GitHub Actions will swap it and provide you an empty section for the next releas
|
||||
- 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
|
||||
|
||||
@ -497,25 +486,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.
|
||||
|
||||
> **Note**
|
||||
>
|
||||
> [!NOTE]
|
||||
> Remember to encode your secret environment variables using `base64` encoding to avoid issues with multi-line values.
|
||||
|
||||
### Publishing the plugin
|
||||
|
||||
Releasing a plugin to JetBrains Marketplace is a straightforward operation that uses the `publishPlugin` Gradle task provided by the [gradle-intellij-plugin][gh:gradle-intellij-plugin-docs].
|
||||
> [!TIP]
|
||||
> 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 [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.
|
||||
|
||||
> **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].
|
||||
|
||||
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.
|
||||
|
||||
> **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.
|
||||
> Please follow the [Publishing a Plugin][docs:publishing] instructions.
|
||||
|
||||
@ -533,7 +522,7 @@ You can still replace it or add the `/src/main/java` directory to start working
|
||||
Since February 2021, GitHub Actions [support 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.
|
||||
|
||||
### 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.
|
||||
That approach gives more possibilities for testing and debugging pre-releases, for example, in your local environment.
|
||||
@ -541,7 +530,7 @@ That approach gives more possibilities for testing and debugging pre-releases, f
|
||||
## Useful links
|
||||
|
||||
- [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]
|
||||
- [JetBrains Marketplace Quality Guidelines][jb:quality-guidelines]
|
||||
- [IntelliJ Platform UI Guidelines][jb:ui-guidelines]
|
||||
@ -591,10 +580,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-pr]: https://github.com/JetBrains/intellij-platform-plugin-template/pull/73
|
||||
[gh:gradle-changelog-plugin]: https://github.com/JetBrains/gradle-changelog-plugin
|
||||
[gh:gradle-intellij-plugin]: https://github.com/JetBrains/gradle-intellij-plugin
|
||||
[gh:gradle-intellij-plugin-docs]: https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html
|
||||
[gh:gradle-intellij-plugin-runIde]: https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#tasks-runide
|
||||
[gh:gradle-intellij-plugin-runPluginVerifier]: https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#tasks-runpluginverifier
|
||||
[gh:intellij-platform-gradle-plugin]: https://github.com/JetBrains/intellij-platform-gradle-plugin
|
||||
[gh:intellij-platform-gradle-plugin-docs]: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin.html
|
||||
[gh:intellij-platform-gradle-plugin-runIde]: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-tasks.html#runIde
|
||||
[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:intellij-ui-test-robot]: https://github.com/JetBrains/intellij-ui-test-robot
|
||||
[gh:kover]: https://github.com/Kotlin/kotlinx-kover
|
||||
|
192
build.gradle.kts
@ -1,50 +1,117 @@
|
||||
import org.jetbrains.changelog.Changelog
|
||||
import org.jetbrains.changelog.markdownToHTML
|
||||
|
||||
fun properties(key: String) = providers.gradleProperty(key)
|
||||
fun environment(key: String) = providers.environmentVariable(key)
|
||||
import org.jetbrains.intellij.platform.gradle.TestFrameworkType
|
||||
|
||||
plugins {
|
||||
id("java") // Java 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.qodana) // Gradle Qodana Plugin
|
||||
alias(libs.plugins.kover) // Gradle Kover Plugin
|
||||
}
|
||||
|
||||
group = properties("pluginGroup").get()
|
||||
version = properties("pluginVersion").get()
|
||||
|
||||
// Configure project's dependencies
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
// Dependencies are managed with Gradle version catalog - read more: https://docs.gradle.org/current/userguide/platforms.html#sub:version-catalog
|
||||
dependencies {
|
||||
// implementation(libs.exampleLibrary)
|
||||
}
|
||||
group = providers.gradleProperty("pluginGroup").get()
|
||||
version = providers.gradleProperty("pluginVersion").get()
|
||||
|
||||
// Set the JVM language level used to build the project.
|
||||
kotlin {
|
||||
jvmToolchain(17)
|
||||
}
|
||||
|
||||
// Configure Gradle IntelliJ Plugin - read more: https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html
|
||||
intellij {
|
||||
pluginName = properties("pluginName")
|
||||
version = properties("platformVersion")
|
||||
type = properties("platformType")
|
||||
// Configure project's dependencies
|
||||
repositories {
|
||||
mavenCentral()
|
||||
|
||||
// Plugin Dependencies. Uses `platformPlugins` property from the gradle.properties file.
|
||||
plugins = properties("platformPlugins").map { it.split(',').map(String::trim).filter(String::isNotEmpty) }
|
||||
// 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 {
|
||||
testImplementation(libs.junit)
|
||||
|
||||
// IntelliJ Platform Gradle Plugin Dependencies Extension - read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-dependencies-extension.html
|
||||
intellijPlatform {
|
||||
create(providers.gradleProperty("platformType"), providers.gradleProperty("platformVersion"))
|
||||
|
||||
// Plugin Dependencies. Uses `platformBundledPlugins` property from the gradle.properties file for bundled IntelliJ Platform plugins.
|
||||
bundledPlugins(providers.gradleProperty("platformBundledPlugins").map { it.split(',') })
|
||||
|
||||
// Plugin Dependencies. Uses `platformPlugins` property from the gradle.properties file for plugin from JetBrains Marketplace.
|
||||
plugins(providers.gradleProperty("platformPlugins").map { it.split(',') })
|
||||
|
||||
instrumentationTools()
|
||||
pluginVerifier()
|
||||
zipSigner()
|
||||
testFramework(TestFrameworkType.Platform)
|
||||
}
|
||||
}
|
||||
|
||||
// Configure IntelliJ Platform Gradle Plugin - read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-extension.html
|
||||
intellijPlatform {
|
||||
pluginConfiguration {
|
||||
version = providers.gradleProperty("pluginVersion")
|
||||
|
||||
// Extract the <!-- Plugin description --> section from README.md and provide for the plugin's manifest
|
||||
description = providers.fileContents(layout.projectDirectory.file("README.md")).asText.map {
|
||||
val start = "<!-- Plugin description -->"
|
||||
val end = "<!-- Plugin description end -->"
|
||||
|
||||
with(it.lines()) {
|
||||
if (!containsAll(listOf(start, end))) {
|
||||
throw GradleException("Plugin description section not found in README.md:\n$start ... $end")
|
||||
}
|
||||
subList(indexOf(start) + 1, indexOf(end)).joinToString("\n").let(::markdownToHTML)
|
||||
}
|
||||
}
|
||||
|
||||
val changelog = project.changelog // local variable for configuration cache compatibility
|
||||
// Get the latest available change notes from the changelog file
|
||||
changeNotes = providers.gradleProperty("pluginVersion").map { pluginVersion ->
|
||||
with(changelog) {
|
||||
renderItem(
|
||||
(getOrNull(pluginVersion) ?: getUnreleased())
|
||||
.withHeader(false)
|
||||
.withEmptySections(false),
|
||||
Changelog.OutputType.HTML,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
ideaVersion {
|
||||
sinceBuild = providers.gradleProperty("pluginSinceBuild")
|
||||
untilBuild = providers.gradleProperty("pluginUntilBuild")
|
||||
}
|
||||
}
|
||||
|
||||
signing {
|
||||
certificateChain = providers.environmentVariable("CERTIFICATE_CHAIN")
|
||||
privateKey = providers.environmentVariable("PRIVATE_KEY")
|
||||
password = providers.environmentVariable("PRIVATE_KEY_PASSWORD")
|
||||
}
|
||||
|
||||
publishing {
|
||||
token = providers.environmentVariable("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
|
||||
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 = properties("pluginRepositoryUrl")
|
||||
repositoryUrl = providers.gradleProperty("pluginRepositoryUrl")
|
||||
}
|
||||
|
||||
// Configure Gradle Kover Plugin - read more: https://github.com/Kotlin/kotlinx-kover#configuration
|
||||
@ -60,62 +127,31 @@ kover {
|
||||
|
||||
tasks {
|
||||
wrapper {
|
||||
gradleVersion = properties("gradleVersion").get()
|
||||
}
|
||||
|
||||
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
|
||||
pluginDescription = providers.fileContents(layout.projectDirectory.file("README.md")).asText.map {
|
||||
val start = "<!-- Plugin description -->"
|
||||
val end = "<!-- Plugin description end -->"
|
||||
|
||||
with(it.lines()) {
|
||||
if (!containsAll(listOf(start, end))) {
|
||||
throw GradleException("Plugin description section not found in README.md:\n$start ... $end")
|
||||
}
|
||||
subList(indexOf(start) + 1, indexOf(end)).joinToString("\n").let(::markdownToHTML)
|
||||
}
|
||||
}
|
||||
|
||||
val changelog = project.changelog // local variable for configuration cache compatibility
|
||||
// Get the latest available change notes from the changelog file
|
||||
changeNotes = properties("pluginVersion").map { pluginVersion ->
|
||||
with(changelog) {
|
||||
renderItem(
|
||||
(getOrNull(pluginVersion) ?: getUnreleased())
|
||||
.withHeader(false)
|
||||
.withEmptySections(false),
|
||||
Changelog.OutputType.HTML,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Configure UI tests plugin
|
||||
// Read more: https://github.com/JetBrains/intellij-ui-test-robot
|
||||
runIdeForUiTests {
|
||||
systemProperty("robot-server.port", "8082")
|
||||
systemProperty("ide.mac.message.dialogs.as.sheets", "false")
|
||||
systemProperty("jb.privacy.policy.text", "<!--999.999-->")
|
||||
systemProperty("jb.consents.confirmation.enabled", "false")
|
||||
}
|
||||
|
||||
signPlugin {
|
||||
certificateChain = environment("CERTIFICATE_CHAIN")
|
||||
privateKey = environment("PRIVATE_KEY")
|
||||
password = environment("PRIVATE_KEY_PASSWORD")
|
||||
gradleVersion = providers.gradleProperty("gradleVersion").get()
|
||||
}
|
||||
|
||||
publishPlugin {
|
||||
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
|
||||
channels = properties("pluginVersion").map { listOf(it.substringAfter('-', "").substringBefore('.').ifEmpty { "default" }) }
|
||||
dependsOn(patchChangelog)
|
||||
}
|
||||
}
|
||||
|
||||
intellijPlatformTesting {
|
||||
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()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -4,22 +4,24 @@ pluginGroup = org.jetbrains.plugins.template
|
||||
pluginName = IntelliJ Platform Plugin Template
|
||||
pluginRepositoryUrl = https://github.com/JetBrains/intellij-platform-plugin-template
|
||||
# SemVer format -> https://semver.org
|
||||
pluginVersion = 1.14.0
|
||||
pluginVersion = 2.0.2
|
||||
|
||||
# Supported build number ranges and IntelliJ Platform versions -> https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html
|
||||
pluginSinceBuild = 232
|
||||
pluginSinceBuild = 233
|
||||
pluginUntilBuild = 242.*
|
||||
|
||||
# IntelliJ Platform Properties -> https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#configuration-intellij-extension
|
||||
platformType = IC
|
||||
platformVersion = 2023.2.6
|
||||
platformVersion = 2023.3.8
|
||||
|
||||
# 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 =
|
||||
# Example: platformBundledPlugins = com.intellij.java
|
||||
platformBundledPlugins =
|
||||
|
||||
# Gradle Releases -> https://github.com/gradle/gradle/releases
|
||||
gradleVersion = 8.7
|
||||
gradleVersion = 8.10.2
|
||||
|
||||
# Opt-out flag for bundling Kotlin standard library -> https://jb.gg/intellij-platform-kotlin-stdlib
|
||||
kotlin.stdlib.default.dependency = false
|
||||
|
@ -1,20 +1,20 @@
|
||||
[versions]
|
||||
# libraries
|
||||
exampleLibrary = "24.1.0"
|
||||
junit = "4.13.2"
|
||||
|
||||
# plugins
|
||||
kotlin = "2.0.0"
|
||||
changelog = "2.2.0"
|
||||
gradleIntelliJPlugin = "1.17.3"
|
||||
qodana = "2024.1.5"
|
||||
kover = "0.8.0"
|
||||
changelog = "2.2.1"
|
||||
intelliJPlatform = "2.1.0"
|
||||
kotlin = "1.9.25"
|
||||
kover = "0.8.3"
|
||||
qodana = "2024.2.3"
|
||||
|
||||
[libraries]
|
||||
exampleLibrary = { group = "com.example", name = "exampleLibrary", version.ref = "exampleLibrary" }
|
||||
junit = { group = "junit", name = "junit", version.ref = "junit" }
|
||||
|
||||
[plugins]
|
||||
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" }
|
||||
kover = { id = "org.jetbrains.kotlinx.kover", version.ref = "kover" }
|
||||
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
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip
|
||||
networkTimeout=10000
|
||||
validateDistributionUrl=true
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
|
7
gradlew
vendored
@ -15,6 +15,8 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
||||
##############################################################################
|
||||
#
|
||||
@ -55,7 +57,7 @@
|
||||
# Darwin, MinGW, and NonStop.
|
||||
#
|
||||
# (3) This script is generated from the Groovy template
|
||||
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||
# within the Gradle project.
|
||||
#
|
||||
# You can find Gradle at https://github.com/gradle/gradle/.
|
||||
@ -84,7 +86,8 @@ done
|
||||
# shellcheck disable=SC2034
|
||||
APP_BASE_NAME=${0##*/}
|
||||
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
|
||||
APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
|
||||
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
|
||||
' "$PWD" ) || exit
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD=maximum
|
||||
|
2
gradlew.bat
vendored
@ -13,6 +13,8 @@
|
||||
@rem See the License for the specific language governing permissions and
|
||||
@rem limitations under the License.
|
||||
@rem
|
||||
@rem SPDX-License-Identifier: Apache-2.0
|
||||
@rem
|
||||
|
||||
@if "%DEBUG%"=="" @echo off
|
||||
@rem ##########################################################################
|
||||
|
@ -2,7 +2,7 @@
|
||||
# https://www.jetbrains.com/help/qodana/qodana-yaml.html
|
||||
|
||||
version: 1.0
|
||||
linter: jetbrains/qodana-jvm-community:latest
|
||||
linter: jetbrains/qodana-jvm-community:2024.2
|
||||
projectJDK: "17"
|
||||
profile:
|
||||
name: qodana.recommended
|
||||
|
@ -1,5 +1,5 @@
|
||||
rootProject.name = "IntelliJ Platform Plugin Template"
|
||||
|
||||
plugins {
|
||||
id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0"
|
||||
}
|
||||
|
||||
rootProject.name = "IntelliJ Platform Plugin Template"
|
||||
|
@ -1,11 +0,0 @@
|
||||
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M32.0845 7.94025V4H24.0203V7.9896H16.029V4H7.91553V7.94025H4V36H16.0044V32.0045C16.0058 30.9457 16.4274 29.9308 17.1766 29.1826C17.9258 28.4345 18.9412 28.0143 20 28.0143C21.0588 28.0143 22.0743 28.4345 22.8234 29.1826C23.5726 29.9308 23.9942 30.9457 23.9956 32.0045V36H36V7.94025H32.0845Z"
|
||||
fill="url(#paint0_linear)"/>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear" x1="2.94192" y1="4.89955" x2="37.7772" y2="39.7345" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0.15937" stop-color="#3BEA62"/>
|
||||
<stop offset="0.5404" stop-color="#3C99CC"/>
|
||||
<stop offset="0.93739" stop-color="#6B57FF"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
Before Width: | Height: | Size: 795 B |