From 844d76bc62a7ebaf4f46305fecd63aef1d18aa1f Mon Sep 17 00:00:00 2001 From: kerwin612 Date: Mon, 28 Oct 2024 16:49:40 +0800 Subject: [PATCH] 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 2bc00d3..917cfe5 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 } }