From 1b861c511b0960ba1f03c93549312f492e7e85bd Mon Sep 17 00:00:00 2001 From: Danielle Maywood Date: Tue, 8 Apr 2025 13:13:40 +0000 Subject: [PATCH 1/4] feat: add option for workspace directory Allow specifying where code-server open --- Makefile | 3 +++ src/code-server/install.sh | 6 +++++- test/code-server/code-server-workspace.sh | 13 +++++++++++++ test/code-server/scenarios.json | 8 ++++++++ 4 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 Makefile create mode 100644 test/code-server/code-server-workspace.sh diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..144199a --- /dev/null +++ b/Makefile @@ -0,0 +1,3 @@ +.PHONY: test +test: + devcontainer features test diff --git a/src/code-server/install.sh b/src/code-server/install.sh index 04be75d..49d7acb 100644 --- a/src/code-server/install.sh +++ b/src/code-server/install.sh @@ -17,12 +17,16 @@ do code-server --install-extension "$extension" done +if [ -n "$WORKSPACE" ]; then + WORKSPACE="$_REMOTE_USER_HOME" +fi + cat > /usr/local/bin/code-server-entrypoint \ << EOF #!/usr/bin/env bash set -e -su $_REMOTE_USER -c 'code-server --bind-addr "$HOST:$PORT" \$ARGS' +su $_REMOTE_USER -c 'code-server --bind-addr "$HOST:$PORT" \$ARGS "$WORKSPACE"' EOF chmod +x /usr/local/bin/code-server-entrypoint diff --git a/test/code-server/code-server-workspace.sh b/test/code-server/code-server-workspace.sh new file mode 100644 index 0000000..b6fc5e4 --- /dev/null +++ b/test/code-server/code-server-workspace.sh @@ -0,0 +1,13 @@ +#!/bin/bash +set -e + +# Optional: Import test library bundled with the devcontainer CLI +source dev-container-features-test-lib + +# Feature-specific tests +check "code-server version" code-server --version +check "code-server running" pgrep -f 'code-server/lib/node.*/code-server' +check "code-server listening" lsof -i "@127.0.0.1:8080" + +# Report results +reportResults diff --git a/test/code-server/scenarios.json b/test/code-server/scenarios.json index f9f3cff..3a34c43 100644 --- a/test/code-server/scenarios.json +++ b/test/code-server/scenarios.json @@ -30,5 +30,13 @@ "version": "4.98.0" } } + }, + "code-server-workspace": { + "image": "mcr.microsoft.com/devcontainers/base:ubuntu", + "features": { + "code-server": { + "workspace": "/home" + } + } } } From fac790d54e439a88cd83de5e667ad940771fc99f Mon Sep 17 00:00:00 2001 From: Danielle Maywood Date: Tue, 8 Apr 2025 15:55:51 +0000 Subject: [PATCH 2/4] test: have test ensure workspace is inserted into code-server launch params --- src/code-server/install.sh | 6 ++++-- test/code-server/code-server-workspace.sh | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/code-server/install.sh b/src/code-server/install.sh index 49d7acb..521a9af 100644 --- a/src/code-server/install.sh +++ b/src/code-server/install.sh @@ -17,8 +17,10 @@ do code-server --install-extension "$extension" done +CODE_SERVER_WORKSPACE="$_REMOTE_USER_HOME" + if [ -n "$WORKSPACE" ]; then - WORKSPACE="$_REMOTE_USER_HOME" + CODE_SERVER_WORKSPACE="$WORKSPACE" fi cat > /usr/local/bin/code-server-entrypoint \ @@ -26,7 +28,7 @@ cat > /usr/local/bin/code-server-entrypoint \ #!/usr/bin/env bash set -e -su $_REMOTE_USER -c 'code-server --bind-addr "$HOST:$PORT" \$ARGS "$WORKSPACE"' +su $_REMOTE_USER -c 'code-server --bind-addr "$HOST:$PORT" $ARGS "$CODE_SERVER_WORKSPACE"' EOF chmod +x /usr/local/bin/code-server-entrypoint diff --git a/test/code-server/code-server-workspace.sh b/test/code-server/code-server-workspace.sh index b6fc5e4..45b4bae 100644 --- a/test/code-server/code-server-workspace.sh +++ b/test/code-server/code-server-workspace.sh @@ -9,5 +9,8 @@ check "code-server version" code-server --version check "code-server running" pgrep -f 'code-server/lib/node.*/code-server' check "code-server listening" lsof -i "@127.0.0.1:8080" +entrypoint=$(cat /usr/local/bin/code-server-entrypoint) +check "code-server workspace" grep $'\'code-server.*"/home"\'' <<<"$entrypoint" + # Report results reportResults From dbd1b6ff67604b60e6c843bcfd76dfbeb92dffdc Mon Sep 17 00:00:00 2001 From: Danielle Maywood Date: Wed, 9 Apr 2025 13:12:52 +0000 Subject: [PATCH 3/4] chore: make changes based on feedback --- src/code-server/install.sh | 4 ++-- test/code-server/code-server-workspace.sh | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/code-server/install.sh b/src/code-server/install.sh index 521a9af..a892b11 100644 --- a/src/code-server/install.sh +++ b/src/code-server/install.sh @@ -3,7 +3,7 @@ set -e CODE_SERVER_INSTALL_ARGS="" -if [ -n "$VERSION" ]; then +if [[ -n $VERSION ]]; then CODE_SERVER_INSTALL_ARGS="$CODE_SERVER_INSTALL_ARGS --version=\"$VERSION\"" fi @@ -19,7 +19,7 @@ done CODE_SERVER_WORKSPACE="$_REMOTE_USER_HOME" -if [ -n "$WORKSPACE" ]; then +if [[ -n $WORKSPACE ]]; then CODE_SERVER_WORKSPACE="$WORKSPACE" fi diff --git a/test/code-server/code-server-workspace.sh b/test/code-server/code-server-workspace.sh index 45b4bae..b57e334 100644 --- a/test/code-server/code-server-workspace.sh +++ b/test/code-server/code-server-workspace.sh @@ -9,8 +9,7 @@ check "code-server version" code-server --version check "code-server running" pgrep -f 'code-server/lib/node.*/code-server' check "code-server listening" lsof -i "@127.0.0.1:8080" -entrypoint=$(cat /usr/local/bin/code-server-entrypoint) -check "code-server workspace" grep $'\'code-server.*"/home"\'' <<<"$entrypoint" +check "code-server workspace" grep $'\'code-server.*"/home"\'' < /usr/local/bin/code-server-entrypoint # Report results reportResults From 4c45deb2a7a63f5fd5d7bddc1a4ccfe6a145ff88 Mon Sep 17 00:00:00 2001 From: Danielle Maywood Date: Thu, 10 Apr 2025 09:13:19 +0000 Subject: [PATCH 4/4] chore: remove args and explicitly add feature --- src/code-server/devcontainer-feature.json | 6 +++++- src/code-server/install.sh | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/code-server/devcontainer-feature.json b/src/code-server/devcontainer-feature.json index e0afe4a..b12799c 100644 --- a/src/code-server/devcontainer-feature.json +++ b/src/code-server/devcontainer-feature.json @@ -23,7 +23,11 @@ "extensions": { "type": "string", "default": "" - } + }, + "workspace": { + "type": "string", + "default": "" + } }, "entrypoint": "/usr/local/bin/code-server-entrypoint", "dependsOn": { diff --git a/src/code-server/install.sh b/src/code-server/install.sh index a892b11..3f9ff0b 100644 --- a/src/code-server/install.sh +++ b/src/code-server/install.sh @@ -28,7 +28,7 @@ cat > /usr/local/bin/code-server-entrypoint \ #!/usr/bin/env bash set -e -su $_REMOTE_USER -c 'code-server --bind-addr "$HOST:$PORT" $ARGS "$CODE_SERVER_WORKSPACE"' +su $_REMOTE_USER -c 'code-server --bind-addr "$HOST:$PORT" "$CODE_SERVER_WORKSPACE"' EOF chmod +x /usr/local/bin/code-server-entrypoint