From 58f25986b0efa60f62e4687d941f25bfdcc92590 Mon Sep 17 00:00:00 2001 From: Michael Brewer Date: Thu, 14 Mar 2024 21:44:12 -0700 Subject: [PATCH 1/3] feat(vscode-web): add support for settings Currently saves to `~/.vscode-server/data/Machine/settings.json` as `~/.vscode-server/data/User/settings.json` does not seem to work. --- vscode-web/README.md | 17 +++++++++++++++++ vscode-web/main.tf | 8 ++++++++ vscode-web/run.sh | 7 +++++++ 3 files changed, 32 insertions(+) diff --git a/vscode-web/README.md b/vscode-web/README.md index d16a0eb0..e0080aec 100644 --- a/vscode-web/README.md +++ b/vscode-web/README.md @@ -48,3 +48,20 @@ module "vscode-web" { accept_license = true } ``` + +### Pre-configure Settings + +Configure VS Code's [settings.json](https://code.visualstudio.com/docs/getstarted/settings#_settingsjson) file: + +```tf +module "vscode-web" { + source = "registry.coder.com/modules/vscode-web/coder" + version = "1.0.8" + agent_id = coder_agent.example.id + extensions = ["dracula-theme.theme-dracula"] + settings = { + "workbench.colorTheme" = "Dracula" + } + accept_license = true +} +``` diff --git a/vscode-web/main.tf b/vscode-web/main.tf index 955cab47..41ffd638 100644 --- a/vscode-web/main.tf +++ b/vscode-web/main.tf @@ -91,6 +91,12 @@ variable "order" { default = null } +variable "settings" { + type = map(string) + description = "A map of settings to apply to code-server." + default = {} +} + resource "coder_script" "vscode-web" { agent_id = var.agent_id display_name = "VS Code Web" @@ -101,6 +107,8 @@ resource "coder_script" "vscode-web" { INSTALL_PREFIX : var.install_prefix, EXTENSIONS : join(",", var.extensions), TELEMETRY_LEVEL : var.telemetry_level, + // This is necessary otherwise the quotes are stripped! + SETTINGS : replace(jsonencode(var.settings), "\"", "\\\""), }) run_on_start = true } diff --git a/vscode-web/run.sh b/vscode-web/run.sh index 5977440a..d1009e56 100755 --- a/vscode-web/run.sh +++ b/vscode-web/run.sh @@ -44,6 +44,13 @@ for extension in "$${EXTENSIONLIST[@]}"; do fi done +# Check if the settings file exists... +if [ ! -f ~/.vscode-server/data/Machine/settings.json ]; then + echo "⚙️ Creating settings file..." + mkdir -p ~/.vscode-server/data/Machine + echo "${SETTINGS}" > ~/.vscode-server/data/Machine/settings.json +fi + echo "👷 Running ${INSTALL_PREFIX}/bin/code-server serve-local --port ${PORT} --accept-server-license-terms serve-local --without-connection-token --telemetry-level ${TELEMETRY_LEVEL} in the background..." echo "Check logs at ${LOG_PATH}!" "${INSTALL_PREFIX}/bin/code-server" serve-local --port "${PORT}" --accept-server-license-terms serve-local --without-connection-token --telemetry-level "${TELEMETRY_LEVEL}" > "${LOG_PATH}" 2>&1 & From bb313a2154de339fa7f56a8fadaeb6767a57696a Mon Sep 17 00:00:00 2001 From: Michael Brewer Date: Thu, 14 Mar 2024 21:59:38 -0700 Subject: [PATCH 2/3] feat: use silent flag for curl` --- vscode-web/run.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vscode-web/run.sh b/vscode-web/run.sh index d1009e56..250c6514 100755 --- a/vscode-web/run.sh +++ b/vscode-web/run.sh @@ -19,8 +19,8 @@ case "$ARCH" in ;; esac -HASH=$(curl https://update.code.visualstudio.com/api/commits/stable/server-linux-$ARCH-web | cut -d '"' -f 2) -output=$(curl -sL 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) +HASH=$(curl -fsSL https://update.code.visualstudio.com/api/commits/stable/server-linux-$ARCH-web | cut -d '"' -f 2) +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) if [ $? -ne 0 ]; then echo "Failed to install Microsoft Visual Studio Code Server: $output" From ed7f985db0dfa8c7ee829de514b116d2dc582191 Mon Sep 17 00:00:00 2001 From: Michael Brewer Date: Fri, 15 Mar 2024 14:32:01 -0700 Subject: [PATCH 3/3] chore: correct doc Co-authored-by: Asher --- vscode-web/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vscode-web/main.tf b/vscode-web/main.tf index 41ffd638..dd2ab3b4 100644 --- a/vscode-web/main.tf +++ b/vscode-web/main.tf @@ -93,7 +93,7 @@ variable "order" { variable "settings" { type = map(string) - description = "A map of settings to apply to code-server." + description = "A map of settings to apply to VS Code web." default = {} }