CodeIssuesDiscussionsWikiPull RequestsProjectsCommitsActionsReleasesContributorsPulse● GatesSecuritySettingsDeploymentsPipelineInsightsAgents✨ Explain✨ Ask AI✨ Workspace✨ Spec✨ Tests▓ Debt Map✨ NL Search🏛 Archaeology
Blame · Line-by-line history
CONTRIBUTING.md
Each line is annotated with the commit that last touched it. Click any SHA to jump to that commit and see the surrounding change.
| 1ab8ace | 1 | # Contributing — Gluecron JetBrains plugin |
| 2 | ||
| 3 | ## Prerequisites | |
| 4 | ||
| 5 | - **JDK 17** (Temurin / Zulu / Oracle — any will do). | |
| 6 | - The IntelliJ Platform Gradle Plugin downloads its own IDE distribution | |
| 7 | during the build, so you don't need to install IntelliJ separately. | |
| 8 | - **Gradle is NOT pinned in this repo** — use the wrapper that gradle | |
| 9 | generates for you, or invoke an installed `gradle` from the JetBrains | |
| 10 | Toolbox / SDKMan. The dev container intentionally does not preinstall it. | |
| 11 | ||
| 12 | ## Build the plugin .zip | |
| 13 | ||
| 14 | ```bash | |
| 15 | cd editor-extensions/jetbrains | |
| 16 | ./gradlew buildPlugin | |
| 17 | ``` | |
| 18 | ||
| 19 | Output lands at: | |
| 20 | ||
| 21 | ``` | |
| 22 | build/distributions/gluecron-jetbrains-0.1.0.zip | |
| 23 | ``` | |
| 24 | ||
| 25 | Drop the zip into IDEA via **Settings → Plugins → ⚙ → Install Plugin from | |
| 26 | Disk…** to test locally. | |
| 27 | ||
| 28 | ## Run the plugin in a sandbox IDE | |
| 29 | ||
| 30 | ```bash | |
| 31 | ./gradlew runIde | |
| 32 | ``` | |
| 33 | ||
| 34 | Spins up an IntelliJ IDEA Community sandbox with the plugin pre-installed. | |
| 35 | Useful for clicking through the actions without restarting your daily IDE. | |
| 36 | ||
| 37 | ## Publish to the JetBrains Marketplace | |
| 38 | ||
| 39 | ```bash | |
| 40 | # 1. Get a publish token from https://plugins.jetbrains.com/author/me/tokens | |
| 41 | export JETBRAINS_MARKETPLACE_TOKEN=... | |
| 42 | ||
| 43 | # 2. Optional — push to a non-default channel ("eap" / "nightly" / etc.) | |
| 44 | export JETBRAINS_PUBLISH_CHANNEL=default | |
| 45 | ||
| 46 | # 3. Build + upload | |
| 47 | ./gradlew publishPlugin | |
| 48 | ``` | |
| 49 | ||
| 50 | `publishPlugin` re-runs `buildPlugin`, signs nothing extra (the marketplace | |
| 51 | takes unsigned plugins), and uploads via the documented REST API. | |
| 52 | ||
| 53 | ## Source layout | |
| 54 | ||
| 55 | ``` | |
| 56 | editor-extensions/jetbrains/ | |
| 57 | build.gradle.kts ← IntelliJ Platform plugin + ktor + serialization | |
| 58 | settings.gradle.kts | |
| 59 | gradle.properties | |
| 60 | src/main/kotlin/com/gluecron/plugin/ | |
| 61 | GluecronPlugin.kt ← post-startup activity / constants | |
| 62 | auth/AuthService.kt ← PasswordSafe-backed PAT storage | |
| 63 | api/GluecronClient.kt ← ktor HTTP client for /api/v2 | |
| 64 | git/RepoResolver.kt ← git remote → owner/repo | |
| 65 | actions/ ← all menu actions | |
| 66 | toolwindow/GluecronToolWindow.kt | |
| 67 | src/main/resources/ | |
| 68 | META-INF/plugin.xml | |
| 69 | META-INF/pluginIcon.svg ← marketplace icon | |
| 70 | icons/toolWindowIcon.svg | |
| 71 | icons/commitMessageIcon.svg | |
| 72 | ``` | |
| 73 | ||
| 74 | ## Code style | |
| 75 | ||
| 76 | - Kotlin official style (matches `kotlin.code.style=official` in | |
| 77 | `gradle.properties`). | |
| 78 | - Keep new actions narrow: one file each, with a doc-block explaining | |
| 79 | what menu they live in and why. | |
| 80 | - Don't add new server endpoints from here — talk to the existing | |
| 81 | `/api/v2/*` surface so the VS Code, CLI, and JetBrains extensions | |
| 82 | stay in sync. |