feat(vscode-web): add platform settings option (#94)

This commit is contained in:
Anas 2025-05-19 21:34:56 +07:00 committed by GitHub
parent 55c9829a27
commit 04669ec2fa
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 29 additions and 7 deletions

View File

@ -15,7 +15,7 @@ Automatically install [Visual Studio Code Server](https://code.visualstudio.com/
module "vscode-web" { module "vscode-web" {
count = data.coder_workspace.me.start_count count = data.coder_workspace.me.start_count
source = "registry.coder.com/coder/vscode-web/coder" source = "registry.coder.com/coder/vscode-web/coder"
version = "1.0.30" version = "1.1.0"
agent_id = coder_agent.example.id agent_id = coder_agent.example.id
accept_license = true accept_license = true
} }
@ -31,7 +31,7 @@ module "vscode-web" {
module "vscode-web" { module "vscode-web" {
count = data.coder_workspace.me.start_count count = data.coder_workspace.me.start_count
source = "registry.coder.com/coder/vscode-web/coder" source = "registry.coder.com/coder/vscode-web/coder"
version = "1.0.30" version = "1.1.0"
agent_id = coder_agent.example.id agent_id = coder_agent.example.id
install_prefix = "/home/coder/.vscode-web" install_prefix = "/home/coder/.vscode-web"
folder = "/home/coder" folder = "/home/coder"
@ -45,7 +45,7 @@ module "vscode-web" {
module "vscode-web" { module "vscode-web" {
count = data.coder_workspace.me.start_count count = data.coder_workspace.me.start_count
source = "registry.coder.com/coder/vscode-web/coder" source = "registry.coder.com/coder/vscode-web/coder"
version = "1.0.30" version = "1.1.0"
agent_id = coder_agent.example.id agent_id = coder_agent.example.id
extensions = ["github.copilot", "ms-python.python", "ms-toolsai.jupyter"] extensions = ["github.copilot", "ms-python.python", "ms-toolsai.jupyter"]
accept_license = true accept_license = true
@ -60,7 +60,7 @@ Configure VS Code's [settings.json](https://code.visualstudio.com/docs/getstarte
module "vscode-web" { module "vscode-web" {
count = data.coder_workspace.me.start_count count = data.coder_workspace.me.start_count
source = "registry.coder.com/coder/vscode-web/coder" source = "registry.coder.com/coder/vscode-web/coder"
version = "1.0.30" version = "1.1.0"
agent_id = coder_agent.example.id agent_id = coder_agent.example.id
extensions = ["dracula-theme.theme-dracula"] extensions = ["dracula-theme.theme-dracula"]
settings = { settings = {
@ -78,7 +78,7 @@ By default, this module installs the latest. To pin a specific version, retrieve
module "vscode-web" { module "vscode-web" {
count = data.coder_workspace.me.start_count count = data.coder_workspace.me.start_count
source = "registry.coder.com/coder/vscode-web/coder" source = "registry.coder.com/coder/vscode-web/coder"
version = "1.0.30" version = "1.1.0"
agent_id = coder_agent.example.id agent_id = coder_agent.example.id
commit_id = "e54c774e0add60467559eb0d1e229c6452cf8447" commit_id = "e54c774e0add60467559eb0d1e229c6452cf8447"
accept_license = true accept_license = true

View File

@ -136,6 +136,16 @@ variable "subdomain" {
default = true default = true
} }
variable "platform" {
type = string
description = "The platform to use for the VS Code Web."
default = ""
validation {
condition = var.platform == "" || var.platform == "linux" || var.platform == "darwin" || var.platform == "alpine" || var.platform == "win32"
error_message = "Incorrect value. Please set either 'linux', 'darwin', or 'alpine' or 'win32'."
}
}
data "coder_workspace_owner" "me" {} data "coder_workspace_owner" "me" {}
data "coder_workspace" "me" {} data "coder_workspace" "me" {}
@ -158,6 +168,7 @@ resource "coder_script" "vscode-web" {
AUTO_INSTALL_EXTENSIONS : var.auto_install_extensions, AUTO_INSTALL_EXTENSIONS : var.auto_install_extensions,
SERVER_BASE_PATH : local.server_base_path, SERVER_BASE_PATH : local.server_base_path,
COMMIT_ID : var.commit_id, COMMIT_ID : var.commit_id,
PLATFORM : var.platform,
}) })
run_on_start = true run_on_start = true

View File

@ -59,15 +59,26 @@ case "$ARCH" in
;; ;;
esac esac
# Detect the platform
if [ -n "${PLATFORM}" ]; then
DETECTED_PLATFORM="${PLATFORM}"
elif [ -f /etc/alpine-release ] || grep -qi 'ID=alpine' /etc/os-release 2>/dev/null || command -v apk > /dev/null 2>&1; then
DETECTED_PLATFORM="alpine"
elif [ "$(uname -s)" = "Darwin" ]; then
DETECTED_PLATFORM="darwin"
else
DETECTED_PLATFORM="linux"
fi
# Check if a specific VS Code Web commit ID was provided # Check if a specific VS Code Web commit ID was provided
if [ -n "${COMMIT_ID}" ]; then if [ -n "${COMMIT_ID}" ]; then
HASH="${COMMIT_ID}" HASH="${COMMIT_ID}"
else else
HASH=$(curl -fsSL https://update.code.visualstudio.com/api/commits/stable/server-linux-$ARCH-web | cut -d '"' -f 2) HASH=$(curl -fsSL https://update.code.visualstudio.com/api/commits/stable/server-$DETECTED_PLATFORM-$ARCH-web | cut -d '"' -f 2)
fi fi
printf "$${BOLD}VS Code Web commit id version $HASH.\n" printf "$${BOLD}VS Code Web commit id version $HASH.\n"
output=$(curl -fsSL "https://vscode.download.prss.microsoft.com/dbazure/download/stable/$HASH/vscode-server-linux-$ARCH-web.tar.gz" | tar -xz -C "${INSTALL_PREFIX}" --strip-components 1) output=$(curl -fsSL "https://vscode.download.prss.microsoft.com/dbazure/download/stable/$HASH/vscode-server-$DETECTED_PLATFORM-$ARCH-web.tar.gz" | tar -xz -C "${INSTALL_PREFIX}" --strip-components 1)
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
echo "Failed to install Microsoft Visual Studio Code Server: $output" echo "Failed to install Microsoft Visual Studio Code Server: $output"