This IntelliJ plugin provides support for https://github.com/lets-cli/lets task runner.
Plugin on JetBrains Marketplace
File type recognition for lets.yaml
and lets.*.yaml
configs
- Completion
- Complete keywords
- Complete command
options
with code snippet - Complete commands in
depends
with code snippet
- Complete command
- Complete keywords
- Go To Definition
- Navigate to definitions of
mixins
files
- Navigate to definitions of
-
Using IDE built-in plugin system:
Preferences > Plugins > Marketplace > Search for "lets" > Install Plugin
-
Manually:
Download the latest release and install it manually using Preferences > Plugins > ⚙️ > Install plugin from disk...
Plugin based on the IntelliJ Platform Plugin Template.
Releases flow:
-
add new features to CHANGELOG.md to
[Unreleased]
section -
when ready to update version, go to
gradle.properties
and bumppluginVersion
-
merge to master
-
gitlab action will create a draft release with:
- version from
gradle.properties
- changelog from
[Unreleased]
section
- version from
-
when ready - publish draft release
-
add new section to CHANGELOG.md with new published version
We are using Keep a Changelog format for changelog. This is the reason we
have [Unreleased]
section in CHANGELOG.md
. We must keep it up to date with every change we make. After release,
CI automatically moves all changes from [Unreleased]
to new section with version number.
If plugin needs to use some new feature from IDE, we need to update pluginSinceBuild
in gradle.properties
to new IDE version.
When new IDE version is released we need to release new lets
plugin version.
We do not restrict maximum IDE version, so plugin should work with all future versions of IDE.
If our plugin happens to be incompatible with future version of IDE because of some backward-incompatible changes, we have two options:
- Fix incompatibility in plugin code in a way that still keeps support for all versions specified by
pluginSinceBuild
and all future versions. - Set
pluginUntilBuild
ingradle.properties
to new IDE version and release new plugin version. Use this option only if there is no other way to fix incompatibility.
We never set
pluginUntilBuild
ingradle.properties
to new IDE version, because if we do so, this will force us to release new version of plugin every time new IDE version is released.
- Open
gradle.properties
- maybe change
pluginSinceBuild
to new ide version - maybe change
platformVersion
- maybe change
pluginVerifierIdeVersions
- increment
pluginVersion
- Open
CHANGELOG.md
- Add info to
Unreleased
section.
- Create new branch, merge into main.
- GitHub will run tests and verification on master, and create new draft tag with version from
pluginVersion
- Open new draft tag and publish it.
- GitHub will run an action for that published tag and:
- will publish lets plugin to JetBrains Marketplace
- update CHANGELOG.md
Project uses several tools to maintain code quality
See https://detekt.github.io/detekt/ Rule Sets to get more info about detekt
failed rules.
- add highlighting for shell script in cmd - https://plugins.jetbrains.com/docs/intellij/file-view-providers.html
- read mixins - https://plugins.jetbrains.com/docs/intellij/psi-cookbook.html#how-do-i-find-a-file-if-i-know-its-name-but-don-t-know-the-path
- insert not padded strings, but yaml elements