Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 46 additions & 11 deletions drupal-core/template.tf
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,25 @@ data "coder_parameter" "install_profile" {
}
}

data "coder_parameter" "vscode_extensions" {
name = "vscode_extensions"
display_name = "VS Code Extensions"
description = "Select extensions to enable in VS Code for Web"
type = "list(string)"
form_type = "multi-select"
default = jsonencode([for e in var.vscode_extensions : e.id if e.default])
mutable = true
order = 100

dynamic "option" {
for_each = var.vscode_extensions
content {
name = option.value.name
value = option.value.id
}
}
}



# Workspace data source
Expand All @@ -148,6 +167,7 @@ locals {
# Determine workspace home path
# Sysbox Strategy: Use standard /home/coder
workspace_home = "/home/coder"
selected_extensions = jsondecode(data.coder_parameter.vscode_extensions.value)
issue_fork_clean = trimprefix(data.coder_parameter.issue_fork.value, "drupal-")
issue_url = local.issue_fork_clean != "" ? "https://www.drupal.org/project/drupal/issues/${local.issue_fork_clean}" : ""
}
Expand All @@ -165,6 +185,31 @@ locals {
workspace_image_registry_base = replace(local.registry_without_version, ":latest", "")
}

variable "vscode_extensions" {
description = "List of VS Code extensions to offer in the workspace creation UI"
type = list(object({
id = string
name = string
default = bool
}))
default = [
{ id = "xdebug.php-debug", name = "PHP Debug", default = true },
{ id = "bmewburn.vscode-intelephense-client", name = "Intelephense", default = true },
{ id = "dbaeumer.vscode-eslint", name = "ESLint", default = true },
{ id = "esbenp.prettier-vscode", name = "Prettier", default = true },
{ id = "sanderronde.phpstan-vscode", name = "PHPStan", default = true },
{ id = "streetsidesoftware.code-spell-checker", name = "Code Spell Checker", default = true },
{ id = "stylelint.vscode-stylelint", name = "Stylelint", default = true },
{ id = "valeryanm.vscode-phpsab", name = "PHPSAB", default = true },
{ id = "biati.ddev-manager", name = "DDEV Manager", default = true },
{ id = "deque-systems.vscode-axe-linter", name = "Axe Linter", default = false },
{ id = "andrewdavidblum.drupal-smart-snippets", name = "Drupal Smart Snippets", default = false },
{ id = "redhat.vscode-yaml", name = "YAML", default = false },
{ id = "sleistner.vscode-fileutils", name = "File Utils", default = false },
{ id = "GitHub.vscode-pull-request-github", name = "GitHub Pull Requests", default = false },
]
}

variable "workspace_image_registry" {
description = "Docker registry URL for the workspace base image (without tag, version is added automatically)"
type = string
Expand Down Expand Up @@ -1445,17 +1490,7 @@ module "vscode-web" {
folder = "/home/coder/drupal-core"
accept_license = true
order = 2
extensions = [
"xdebug.php-debug",
"bmewburn.vscode-intelephense-client",
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"sanderronde.phpstan-vscode",
"streetsidesoftware.code-spell-checker",
"stylelint.vscode-stylelint",
"valeryanm.vscode-phpsab",
"biati.ddev-manager",
]
extensions = local.selected_extensions
}

# DDEV Web Server (HTTP) - appears when DDEV project is running
Expand Down
58 changes: 47 additions & 11 deletions freeform/template.tf
Original file line number Diff line number Diff line change
Expand Up @@ -59,14 +59,60 @@ variable "docker_gid" {
data "coder_workspace" "me" {}
data "coder_workspace_owner" "me" {}

# Per-workspace user parameters (shown in workspace creation UI)
data "coder_parameter" "vscode_extensions" {
name = "vscode_extensions"
display_name = "VS Code Extensions"
description = "Select extensions to enable in VS Code for Web"
type = "list(string)"
form_type = "multi-select"
default = jsonencode([for e in var.vscode_extensions : e.id if e.default])
mutable = true
order = 100

dynamic "option" {
for_each = var.vscode_extensions
content {
name = option.value.name
value = option.value.id
}
}
}

locals {
workspace_home = "/home/coder"
selected_extensions = jsondecode(data.coder_parameter.vscode_extensions.value)
image_version = try(trimspace(file("${path.module}/VERSION")), var.image_version)

registry_without_version = replace(var.workspace_image_registry, ":${local.image_version}", "")
workspace_image_registry_base = replace(local.registry_without_version, ":latest", "")
}

variable "vscode_extensions" {
description = "List of VS Code extensions to offer in the workspace creation UI"
type = list(object({
id = string
name = string
default = bool
}))
default = [
{ id = "xdebug.php-debug", name = "PHP Debug", default = true },
{ id = "bmewburn.vscode-intelephense-client", name = "Intelephense", default = true },
{ id = "dbaeumer.vscode-eslint", name = "ESLint", default = true },
{ id = "esbenp.prettier-vscode", name = "Prettier", default = true },
{ id = "sanderronde.phpstan-vscode", name = "PHPStan", default = true },
{ id = "streetsidesoftware.code-spell-checker", name = "Code Spell Checker", default = true },
{ id = "stylelint.vscode-stylelint", name = "Stylelint", default = true },
{ id = "valeryanm.vscode-phpsab", name = "PHPSAB", default = true },
{ id = "biati.ddev-manager", name = "DDEV Manager", default = true },
{ id = "deque-systems.vscode-axe-linter", name = "Axe Linter", default = false },
{ id = "andrewdavidblum.drupal-smart-snippets", name = "Drupal Smart Snippets", default = false },
{ id = "redhat.vscode-yaml", name = "YAML", default = false },
{ id = "sleistner.vscode-fileutils", name = "File Utils", default = false },
{ id = "GitHub.vscode-pull-request-github", name = "GitHub Pull Requests", default = false },
]
}

variable "workspace_image_registry" {
description = "Docker registry URL for the workspace base image (without tag)"
type = string
Expand Down Expand Up @@ -347,17 +393,7 @@ module "vscode-web" {
folder = "/home/coder/${data.coder_workspace.me.name}"
accept_license = true
order = 2
extensions = [
"xdebug.php-debug",
"bmewburn.vscode-intelephense-client",
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"sanderronde.phpstan-vscode",
"streetsidesoftware.code-spell-checker",
"stylelint.vscode-stylelint",
"valeryanm.vscode-phpsab",
"biati.ddev-manager",
]
extensions = local.selected_extensions
}

# Slug matches the workspace name, which is also the DDEV project name.
Expand Down
57 changes: 46 additions & 11 deletions user-defined-web/template.tf
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,25 @@ data "coder_workspace" "me" {}

# Workspace owner data source (Coder v2+)
data "coder_workspace_owner" "me" {}
# Per-workspace user parameters (shown in workspace creation UI)
data "coder_parameter" "vscode_extensions" {
name = "vscode_extensions"
display_name = "VS Code Extensions"
description = "Select extensions to enable in VS Code for Web"
type = "list(string)"
form_type = "multi-select"
default = jsonencode([for e in var.vscode_extensions : e.id if e.default])
mutable = true
order = 100

dynamic "option" {
for_each = var.vscode_extensions
content {
name = option.value.name
value = option.value.id
}
}
}



Expand All @@ -79,6 +98,7 @@ locals {
# Determine workspace home path
# Sysbox Strategy: Use standard /home/coder
workspace_home = "/home/coder"
selected_extensions = jsondecode(data.coder_parameter.vscode_extensions.value)
}

locals {
Expand All @@ -94,6 +114,31 @@ locals {
workspace_image_registry_base = replace(local.registry_without_version, ":latest", "")
}

variable "vscode_extensions" {
description = "List of VS Code extensions to offer in the workspace creation UI"
type = list(object({
id = string
name = string
default = bool
}))
default = [
{ id = "xdebug.php-debug", name = "PHP Debug", default = true },
{ id = "bmewburn.vscode-intelephense-client", name = "Intelephense", default = true },
{ id = "dbaeumer.vscode-eslint", name = "ESLint", default = true },
{ id = "esbenp.prettier-vscode", name = "Prettier", default = true },
{ id = "sanderronde.phpstan-vscode", name = "PHPStan", default = true },
{ id = "streetsidesoftware.code-spell-checker", name = "Code Spell Checker", default = true },
{ id = "stylelint.vscode-stylelint", name = "Stylelint", default = true },
{ id = "valeryanm.vscode-phpsab", name = "PHPSAB", default = true },
{ id = "biati.ddev-manager", name = "DDEV Manager", default = true },
{ id = "deque-systems.vscode-axe-linter", name = "Axe Linter", default = false },
{ id = "andrewdavidblum.drupal-smart-snippets", name = "Drupal Smart Snippets", default = false },
{ id = "redhat.vscode-yaml", name = "YAML", default = false },
{ id = "sleistner.vscode-fileutils", name = "File Utils", default = false },
{ id = "GitHub.vscode-pull-request-github", name = "GitHub Pull Requests", default = false },
]
}

variable "workspace_image_registry" {
description = "Docker registry URL for the workspace base image (without tag, version is added automatically)"
type = string
Expand Down Expand Up @@ -525,17 +570,7 @@ module "vscode-web" {
folder = "/home/coder"
accept_license = true
order = 2
extensions = [
"xdebug.php-debug",
"bmewburn.vscode-intelephense-client",
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"sanderronde.phpstan-vscode",
"streetsidesoftware.code-spell-checker",
"stylelint.vscode-stylelint",
"valeryanm.vscode-phpsab",
"biati.ddev-manager",
]
extensions = local.selected_extensions
}

# DDEV Web Server (HTTP) - appears when DDEV project is running
Expand Down