Atif Ali d64851774b
fix(jetbrains): update Terraform version requirement to 1.9+ (#513)
## Summary

- Updated `required_version` constraint from `>= 1.0` to `>= 1.9` in
jetbrains module
- Added inline comment explaining the cross-variable validation
requirement
- Bumped module version from `1.1.0` to `1.1.1` (patch version)

## Issue

The jetbrains module uses cross-variable validation at line 169-171
where `var.options` is referenced within the `var.ide_config` validation
block:

```tf
validation {
  condition = alltrue([
    for code in var.options : contains(keys(var.ide_config), code)
  ])
  error_message = "The ide_config must be a superset of var.options."
}
```

This pattern requires Terraform 1.9+ and fails on earlier versions with:
```
Error: Invalid reference in variable validation
The condition for variable "ide_config" can only refer to the variable itself, using var.ide_config.
```

## References

- Terrafomr release blog that talks abut this feature:
https://www.hashicorp.com/en/blog/terraform-1-9-enhances-input-variable-validations
- Terraform PR that added this feature:
https://github.com/hashicorp/terraform/pull/34955
- HashiCorp Support Article:
https://support.hashicorp.com/hc/en-us/articles/43291233547027

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: DevCats <christofer@coder.com>
2025-10-27 08:36:19 -05:00
..

display_name description icon verified tags
JetBrains Toolbox Add JetBrains IDE integrations to your Coder workspaces with configurable options. ../../../../.icons/jetbrains.svg true
ide
jetbrains
parameter

JetBrains IDEs

This module adds JetBrains IDE buttons to launch IDEs directly from the dashboard by integrating with the JetBrains Toolbox.

module "jetbrains" {
  count    = data.coder_workspace.me.start_count
  source   = "registry.coder.com/coder/jetbrains/coder"
  version  = "1.1.1"
  agent_id = coder_agent.example.id
  folder   = "/home/coder/project"
  # tooltip  = "You need to [Install Coder Desktop](https://coder.com/docs/user-guides/desktop#install-coder-desktop) to use this button."  # Optional
}

JetBrains IDEs list

Important

This module requires Coder version 2.24+ and JetBrains Toolbox version 2.7 or higher.

Warning

JetBrains recommends a minimum of 4 CPU cores and 8GB of RAM. Consult the JetBrains documentation to confirm other system requirements.

Examples

Pre-configured Mode (Direct App Creation)

When default contains IDE codes, those IDEs are created directly without user selection:

module "jetbrains" {
  count    = data.coder_workspace.me.start_count
  source   = "registry.coder.com/coder/jetbrains/coder"
  version  = "1.1.1"
  agent_id = coder_agent.example.id
  folder   = "/home/coder/project"
  default  = ["PY", "IU"] # Pre-configure GoLand and IntelliJ IDEA
}

User Choice with Limited Options

module "jetbrains" {
  count    = data.coder_workspace.me.start_count
  source   = "registry.coder.com/coder/jetbrains/coder"
  version  = "1.1.1"
  agent_id = coder_agent.example.id
  folder   = "/home/coder/project"
  # Show parameter with limited options
  options = ["IU", "PY"] # Only these IDEs are available for selection
}

Early Access Preview (EAP) Versions

module "jetbrains" {
  count         = data.coder_workspace.me.start_count
  source        = "registry.coder.com/coder/jetbrains/coder"
  version       = "1.1.1"
  agent_id      = coder_agent.example.id
  folder        = "/home/coder/project"
  default       = ["IU", "PY"]
  channel       = "eap"    # Use Early Access Preview versions
  major_version = "2025.2" # Specific major version
}

Custom IDE Configuration

module "jetbrains" {
  count    = data.coder_workspace.me.start_count
  source   = "registry.coder.com/coder/jetbrains/coder"
  version  = "1.1.1"
  agent_id = coder_agent.example.id
  folder   = "/workspace/project"

  # Custom IDE metadata (display names and icons)
  ide_config = {
    "IU" = {
      name  = "IntelliJ IDEA"
      icon  = "/custom/icons/intellij.svg"
      build = "251.26927.53"
    }
    "PY" = {
      name  = "PyCharm"
      icon  = "/custom/icons/pycharm.svg"
      build = "251.23774.211"
    }
  }
}

Single IDE for Specific Use Case

module "jetbrains_pycharm" {
  count    = data.coder_workspace.me.start_count
  source   = "registry.coder.com/coder/jetbrains/coder"
  version  = "1.1.1"
  agent_id = coder_agent.example.id
  folder   = "/workspace/project"

  default = ["PY"] # Only PyCharm

  # Specific version for consistency
  major_version = "2025.1"
  channel       = "release"
}

Custom Tooltip

Add helpful tooltip text that appears when users hover over the IDE app buttons:

module "jetbrains" {
  count    = data.coder_workspace.me.start_count
  source   = "registry.coder.com/coder/jetbrains/coder"
  version  = "1.1.1"
  agent_id = coder_agent.example.id
  folder   = "/home/coder/project"
  default  = ["IU", "PY"]
  tooltip  = "You need to [Install Coder Desktop](https://coder.com/docs/user-guides/desktop#install-coder-desktop) to use this button."
}

Behavior

Parameter vs Direct Apps

  • default = [] (empty): Creates a coder_parameter allowing users to select IDEs from options
  • default with values: Skips parameter and directly creates coder_app resources for the specified IDEs

Version Resolution

  • Build numbers are fetched from the JetBrains API for the latest compatible versions when internet access is available
  • If the API is unreachable (air-gapped environments), the module automatically falls back to build numbers from ide_config
  • major_version and channel control which API endpoint is queried (when API access is available)

Tooltip

  • tooltip: Optional markdown text displayed when hovering over IDE app buttons
  • If not specified, no tooltip is shown
  • Supports markdown formatting for rich text (bold, italic, links, etc.)
  • All IDE apps created by this module will show the same tooltip text

Supported IDEs

All JetBrains IDEs with remote development capabilities: