From 844d76bc62a7ebaf4f46305fecd63aef1d18aa1f Mon Sep 17 00:00:00 2001 From: kerwin612 Date: Mon, 28 Oct 2024 16:49:40 +0800 Subject: [PATCH 1/6] Enhance the jetbrains-gateway module to support custom download link. --- jetbrains-gateway/main.tf | 38 +++++++++++++++++++++++++++++--------- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/jetbrains-gateway/main.tf b/jetbrains-gateway/main.tf index 2bc00d39..917cfe5e 100644 --- a/jetbrains-gateway/main.tf +++ b/jetbrains-gateway/main.tf @@ -146,9 +146,29 @@ variable "jetbrains_ides" { } } +variable "releases_base_link" { + type = string + description = "" + default = "https://data.services.jetbrains.com" + validation { + condition = can(regex("^(https?:\/\/)?[0-9a-zA-Z]+\.[-_0-9a-zA-Z]+\.[0-9a-zA-Z]+$", var.releases_base_link)) + error_message = "The releases_base_link must be a valid HTTP/S address." + } +} + +variable "download_base_link" { + type = string + description = "" + default = "https://download.jetbrains.com" + validation { + condition = can(regex("^(https?:\/\/)?[0-9a-zA-Z]+\.[-_0-9a-zA-Z]+\.[0-9a-zA-Z]+$", var.download_base_link)) + error_message = "The download_base_link must be a valid HTTP/S address." + } +} + data "http" "jetbrains_ide_versions" { for_each = var.latest ? toset(var.jetbrains_ides) : toset([]) - url = "https://data.services.jetbrains.com/products/releases?code=${each.key}&latest=true&type=${var.channel}" + url = "${var.releases_base_link}/products/releases?code=${each.key}&latest=true&type=${var.channel}" } locals { @@ -158,7 +178,7 @@ locals { name = "GoLand", identifier = "GO", build_number = var.jetbrains_ide_versions["GO"].build_number, - download_link = "https://download.jetbrains.com/go/goland-${var.jetbrains_ide_versions["GO"].version}.tar.gz" + download_link = "${var.download_base_link}/go/goland-${var.jetbrains_ide_versions["GO"].version}.tar.gz" version = var.jetbrains_ide_versions["GO"].version }, "WS" = { @@ -166,7 +186,7 @@ locals { name = "WebStorm", identifier = "WS", build_number = var.jetbrains_ide_versions["WS"].build_number, - download_link = "https://download.jetbrains.com/webstorm/WebStorm-${var.jetbrains_ide_versions["WS"].version}.tar.gz" + download_link = "${var.download_base_link}/webstorm/WebStorm-${var.jetbrains_ide_versions["WS"].version}.tar.gz" version = var.jetbrains_ide_versions["WS"].version }, "IU" = { @@ -174,7 +194,7 @@ locals { name = "IntelliJ IDEA Ultimate", identifier = "IU", build_number = var.jetbrains_ide_versions["IU"].build_number, - download_link = "https://download.jetbrains.com/idea/ideaIU-${var.jetbrains_ide_versions["IU"].version}.tar.gz" + download_link = "${var.download_base_link}/idea/ideaIU-${var.jetbrains_ide_versions["IU"].version}.tar.gz" version = var.jetbrains_ide_versions["IU"].version }, "PY" = { @@ -182,7 +202,7 @@ locals { name = "PyCharm Professional", identifier = "PY", build_number = var.jetbrains_ide_versions["PY"].build_number, - download_link = "https://download.jetbrains.com/python/pycharm-professional-${var.jetbrains_ide_versions["PY"].version}.tar.gz" + download_link = "${var.download_base_link}/python/pycharm-professional-${var.jetbrains_ide_versions["PY"].version}.tar.gz" version = var.jetbrains_ide_versions["PY"].version }, "CL" = { @@ -190,7 +210,7 @@ locals { name = "CLion", identifier = "CL", build_number = var.jetbrains_ide_versions["CL"].build_number, - download_link = "https://download.jetbrains.com/cpp/CLion-${var.jetbrains_ide_versions["CL"].version}.tar.gz" + download_link = "${var.download_base_link}/cpp/CLion-${var.jetbrains_ide_versions["CL"].version}.tar.gz" version = var.jetbrains_ide_versions["CL"].version }, "PS" = { @@ -198,7 +218,7 @@ locals { name = "PhpStorm", identifier = "PS", build_number = var.jetbrains_ide_versions["PS"].build_number, - download_link = "https://download.jetbrains.com/webide/PhpStorm-${var.jetbrains_ide_versions["PS"].version}.tar.gz" + download_link = "${var.download_base_link}/webide/PhpStorm-${var.jetbrains_ide_versions["PS"].version}.tar.gz" version = var.jetbrains_ide_versions["PS"].version }, "RM" = { @@ -206,7 +226,7 @@ locals { name = "RubyMine", identifier = "RM", build_number = var.jetbrains_ide_versions["RM"].build_number, - download_link = "https://download.jetbrains.com/ruby/RubyMine-${var.jetbrains_ide_versions["RM"].version}.tar.gz" + download_link = "${var.download_base_link}/ruby/RubyMine-${var.jetbrains_ide_versions["RM"].version}.tar.gz" version = var.jetbrains_ide_versions["RM"].version } "RD" = { @@ -214,7 +234,7 @@ locals { name = "Rider", identifier = "RD", build_number = var.jetbrains_ide_versions["RD"].build_number, - download_link = "https://download.jetbrains.com/rider/JetBrains.Rider-${var.jetbrains_ide_versions["RD"].version}.tar.gz" + download_link = "${var.download_base_link}/rider/JetBrains.Rider-${var.jetbrains_ide_versions["RD"].version}.tar.gz" version = var.jetbrains_ide_versions["RD"].version } } From 0a20fe8baeda317fd4ef1cec9b0eafd8e65e5e48 Mon Sep 17 00:00:00 2001 From: kerwin612 Date: Tue, 29 Oct 2024 07:53:33 +0800 Subject: [PATCH 2/6] Add instruction --- jetbrains-gateway/README.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/jetbrains-gateway/README.md b/jetbrains-gateway/README.md index 0745fa79..9d7648b4 100644 --- a/jetbrains-gateway/README.md +++ b/jetbrains-gateway/README.md @@ -72,6 +72,22 @@ module "jetbrains_gateway" { } ``` +### Custom base link + +```tf +module "jetbrains_gateway" { + source = "registry.coder.com/modules/jetbrains-gateway/coder" + version = "1.0.21" + agent_id = coder_agent.example.id + agent_name = "example" + folder = "/home/coder/example" + jetbrains_ides = ["GO", "WS"] + releases_base_link = "https://releases.internal.site/" + download_base_link = "https://download.internal.site/" + default = "GO" +} +``` + ## Supported IDEs This module and JetBrains Gateway support the following JetBrains IDEs: From 10f73634f2954dfcc28edd6d963874e240040dda Mon Sep 17 00:00:00 2001 From: kerwin612 Date: Tue, 29 Oct 2024 07:53:57 +0800 Subject: [PATCH 3/6] Fixed lint error --- jetbrains-gateway/main.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jetbrains-gateway/main.tf b/jetbrains-gateway/main.tf index 917cfe5e..24bf4768 100644 --- a/jetbrains-gateway/main.tf +++ b/jetbrains-gateway/main.tf @@ -151,7 +151,7 @@ variable "releases_base_link" { description = "" default = "https://data.services.jetbrains.com" validation { - condition = can(regex("^(https?:\/\/)?[0-9a-zA-Z]+\.[-_0-9a-zA-Z]+\.[0-9a-zA-Z]+$", var.releases_base_link)) + condition = can(regex("^https?://.+$", var.releases_base_link)) error_message = "The releases_base_link must be a valid HTTP/S address." } } @@ -161,7 +161,7 @@ variable "download_base_link" { description = "" default = "https://download.jetbrains.com" validation { - condition = can(regex("^(https?:\/\/)?[0-9a-zA-Z]+\.[-_0-9a-zA-Z]+\.[0-9a-zA-Z]+$", var.download_base_link)) + condition = can(regex("^https?://.+$", var.download_base_link)) error_message = "The download_base_link must be a valid HTTP/S address." } } From 66911a99f60292b89a3ac0832cc7390c4f4e3745 Mon Sep 17 00:00:00 2001 From: kerwin612 Date: Tue, 29 Oct 2024 14:23:12 +0800 Subject: [PATCH 4/6] Fixed lint error --- jetbrains-gateway/README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/jetbrains-gateway/README.md b/jetbrains-gateway/README.md index 9d7648b4..31ad78a6 100644 --- a/jetbrains-gateway/README.md +++ b/jetbrains-gateway/README.md @@ -76,15 +76,15 @@ module "jetbrains_gateway" { ```tf module "jetbrains_gateway" { - source = "registry.coder.com/modules/jetbrains-gateway/coder" - version = "1.0.21" - agent_id = coder_agent.example.id - agent_name = "example" - folder = "/home/coder/example" - jetbrains_ides = ["GO", "WS"] - releases_base_link = "https://releases.internal.site/" - download_base_link = "https://download.internal.site/" - default = "GO" + source = "registry.coder.com/modules/jetbrains-gateway/coder" + version = "1.0.21" + agent_id = coder_agent.example.id + agent_name = "example" + folder = "/home/coder/example" + jetbrains_ides = ["GO", "WS"] + releases_base_link = "https://releases.internal.site/" + download_base_link = "https://download.internal.site/" + default = "GO" } ``` From 71feede1bb02619114a1efcb04f7700071d121a7 Mon Sep 17 00:00:00 2001 From: kerwin612 Date: Tue, 29 Oct 2024 14:27:14 +0800 Subject: [PATCH 5/6] Update instruction --- jetbrains-gateway/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/jetbrains-gateway/README.md b/jetbrains-gateway/README.md index 31ad78a6..24b15ead 100644 --- a/jetbrains-gateway/README.md +++ b/jetbrains-gateway/README.md @@ -74,6 +74,8 @@ module "jetbrains_gateway" { ### Custom base link +Due to the highest priority of the `ide_download_link` parameter in the `(jetbrains-gateway://...` within IDEA, the pre-configured download address will be overridden when using [IDEA's offline mode](https://www.jetbrains.com/help/idea/fully-offline-mode.html). Therefore, it is necessary to configure the `download_base_link` parameter for the `jetbrains_gateway` module to change the value of `ide_download_link`. + ```tf module "jetbrains_gateway" { source = "registry.coder.com/modules/jetbrains-gateway/coder" From f42345f2a6ce66deef8b644c9a2b17c053cadea8 Mon Sep 17 00:00:00 2001 From: kerwin612 Date: Tue, 29 Oct 2024 16:36:43 +0800 Subject: [PATCH 6/6] bump the module version --- jetbrains-gateway/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/jetbrains-gateway/README.md b/jetbrains-gateway/README.md index 24b15ead..00beb83f 100644 --- a/jetbrains-gateway/README.md +++ b/jetbrains-gateway/README.md @@ -14,7 +14,7 @@ This module adds a JetBrains Gateway Button to open any workspace with a single ```tf module "jetbrains_gateway" { source = "registry.coder.com/modules/jetbrains-gateway/coder" - version = "1.0.21" + version = "1.0.23" agent_id = coder_agent.example.id agent_name = "example" folder = "/home/coder/example" @@ -32,7 +32,7 @@ module "jetbrains_gateway" { ```tf module "jetbrains_gateway" { source = "registry.coder.com/modules/jetbrains-gateway/coder" - version = "1.0.21" + version = "1.0.23" agent_id = coder_agent.example.id agent_name = "example" folder = "/home/coder/example" @@ -46,7 +46,7 @@ module "jetbrains_gateway" { ```tf module "jetbrains_gateway" { source = "registry.coder.com/modules/jetbrains-gateway/coder" - version = "1.0.21" + version = "1.0.23" agent_id = coder_agent.example.id agent_name = "example" folder = "/home/coder/example" @@ -61,7 +61,7 @@ module "jetbrains_gateway" { ```tf module "jetbrains_gateway" { source = "registry.coder.com/modules/jetbrains-gateway/coder" - version = "1.0.21" + version = "1.0.23" agent_id = coder_agent.example.id agent_name = "example" folder = "/home/coder/example" @@ -79,7 +79,7 @@ Due to the highest priority of the `ide_download_link` parameter in the `(jetbra ```tf module "jetbrains_gateway" { source = "registry.coder.com/modules/jetbrains-gateway/coder" - version = "1.0.21" + version = "1.0.23" agent_id = coder_agent.example.id agent_name = "example" folder = "/home/coder/example"