|
|
@ -25,6 +25,7 @@ variable "project_directory" {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
variable "default" {
|
|
|
|
variable "default" {
|
|
|
|
|
|
|
|
default = null
|
|
|
|
type = string
|
|
|
|
type = string
|
|
|
|
description = "Default IDE"
|
|
|
|
description = "Default IDE"
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -40,6 +41,16 @@ variable "jetbrains_ides" {
|
|
|
|
)
|
|
|
|
)
|
|
|
|
error_message = "The jetbrains_ides must be a list of valid product codes. https://plugins.jetbrains.com/docs/marketplace/product-codes.html"
|
|
|
|
error_message = "The jetbrains_ides must be a list of valid product codes. https://plugins.jetbrains.com/docs/marketplace/product-codes.html"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
# check if the list is empty
|
|
|
|
|
|
|
|
validation {
|
|
|
|
|
|
|
|
condition = length(var.jetbrains_ides) > 0
|
|
|
|
|
|
|
|
error_message = "The jetbrains_ides must not be empty."
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#ccheck if the list contains duplicates
|
|
|
|
|
|
|
|
validation {
|
|
|
|
|
|
|
|
condition = length(var.jetbrains_ides) == length(set(var.jetbrains_ides))
|
|
|
|
|
|
|
|
error_message = "The jetbrains_ides must not contain duplicates."
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
locals {
|
|
|
|
locals {
|
|
|
@ -108,7 +119,8 @@ data "coder_parameter" "jetbrains_ide" {
|
|
|
|
display_name = "JetBrains IDE"
|
|
|
|
display_name = "JetBrains IDE"
|
|
|
|
icon = "/icon/gateway.svg"
|
|
|
|
icon = "/icon/gateway.svg"
|
|
|
|
mutable = true
|
|
|
|
mutable = true
|
|
|
|
default = var.default != null && var.default != "" ? local.jetbrains_ides[var.default].value : null
|
|
|
|
# check if default is in the jet_brains_ides list and if it is not empty or null otherwise set it to null
|
|
|
|
|
|
|
|
default = contains(var.jetbrains_ides.keys, var.default) && var.default != null && var.default != "" ? var.default : null
|
|
|
|
|
|
|
|
|
|
|
|
dynamic "option" {
|
|
|
|
dynamic "option" {
|
|
|
|
for_each = { for key, value in local.jetbrains_ides : key => value if contains(var.jetbrains_ides, key) }
|
|
|
|
for_each = { for key, value in local.jetbrains_ides : key => value if contains(var.jetbrains_ides, key) }
|
|
|
@ -126,9 +138,26 @@ resource "coder_app" "gateway" {
|
|
|
|
agent_id = var.agent_id
|
|
|
|
agent_id = var.agent_id
|
|
|
|
display_name = data.coder_parameter.jetbrains_ide.option[index(data.coder_parameter.jetbrains_ide.option.*.value, data.coder_parameter.jetbrains_ide.value)].name
|
|
|
|
display_name = data.coder_parameter.jetbrains_ide.option[index(data.coder_parameter.jetbrains_ide.option.*.value, data.coder_parameter.jetbrains_ide.value)].name
|
|
|
|
slug = "gateway"
|
|
|
|
slug = "gateway"
|
|
|
|
url = "jetbrains-gateway://connect#type=coder&workspace=${data.coder_workspace.me.name}&agent=${var.agent_name}&folder=${var.project_directory}&url=${data.coder_workspace.me.access_url}&token=${data.coder_workspace.me.owner_session_token}&ide_product_code=${jsondecode(data.coder_parameter.jetbrains_ide.value)[0]}&ide_build_number=${jsondecode(data.coder_parameter.jetbrains_ide.value)[1]}&ide_download_link=${jsondecode(data.coder_parameter.jetbrains_ide.value)[2]}"
|
|
|
|
|
|
|
|
icon = data.coder_parameter.jetbrains_ide.option[index(data.coder_parameter.jetbrains_ide.option.*.value, data.coder_parameter.jetbrains_ide.value)].icon
|
|
|
|
icon = data.coder_parameter.jetbrains_ide.option[index(data.coder_parameter.jetbrains_ide.option.*.value, data.coder_parameter.jetbrains_ide.value)].icon
|
|
|
|
external = true
|
|
|
|
external = true
|
|
|
|
|
|
|
|
url = join("", [
|
|
|
|
|
|
|
|
"jetbrains-gateway://connect#type=coder&workspace=",
|
|
|
|
|
|
|
|
data.coder_workspace.me.name,
|
|
|
|
|
|
|
|
"&agent=",
|
|
|
|
|
|
|
|
var.agent_name,
|
|
|
|
|
|
|
|
"&folder=",
|
|
|
|
|
|
|
|
var.project_directory,
|
|
|
|
|
|
|
|
"&url=",
|
|
|
|
|
|
|
|
data.coder_workspace.me.access_url,
|
|
|
|
|
|
|
|
"&token=",
|
|
|
|
|
|
|
|
"$SESSION_TOKEN",
|
|
|
|
|
|
|
|
"&ide_product_code=",
|
|
|
|
|
|
|
|
jsondecode(data.coder_parameter.jetbrains_ide.value)[0],
|
|
|
|
|
|
|
|
"&ide_build_number=",
|
|
|
|
|
|
|
|
jsondecode(data.coder_parameter.jetbrains_ide.value)[1],
|
|
|
|
|
|
|
|
"&ide_download_link=",
|
|
|
|
|
|
|
|
jsondecode(data.coder_parameter.jetbrains_ide.value)[2]
|
|
|
|
|
|
|
|
])
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
output "jetbrains_ides" {
|
|
|
|
output "jetbrains_ides" {
|
|
|
|