From 043a7fc2869a386b754caae1aeb718274d93d017 Mon Sep 17 00:00:00 2001 From: Danielle Maywood Date: Fri, 2 May 2025 16:37:36 +0000 Subject: [PATCH 1/4] fix(devcontainers-cli): set yarn install prefix to be one level up Unfortunately I missed that `--prefix=/tmp/coder-script-data/bin` will install into `/tmp/coder-script-data/bin/bin`. This asks for the parent directory, resulting in `--prefix=/tmp/coder-script-data`. --- devcontainers-cli/run.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devcontainers-cli/run.sh b/devcontainers-cli/run.sh index c2543821..bd3c1b1d 100755 --- a/devcontainers-cli/run.sh +++ b/devcontainers-cli/run.sh @@ -38,7 +38,7 @@ install() { fi pnpm add -g @devcontainers/cli elif [ "$PACKAGE_MANAGER" = "yarn" ]; then - yarn global add @devcontainers/cli --prefix "$CODER_SCRIPT_BIN_DIR" + yarn global add @devcontainers/cli --prefix "$(dirname "$CODER_SCRIPT_BIN_DIR")" fi } From b0bd7141e2f95e87b1f6f126e319a5cb18966aca Mon Sep 17 00:00:00 2001 From: Danielle Maywood Date: Fri, 2 May 2025 16:38:36 +0000 Subject: [PATCH 2/4] chore: update version --- devcontainers-cli/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devcontainers-cli/README.md b/devcontainers-cli/README.md index a416bcd6..4b445073 100644 --- a/devcontainers-cli/README.md +++ b/devcontainers-cli/README.md @@ -16,7 +16,7 @@ The devcontainers-cli module provides an easy way to install [`@devcontainers/cl ```tf module "devcontainers-cli" { source = "registry.coder.com/modules/devcontainers-cli/coder" - version = "1.0.2" + version = "1.0.3" agent_id = coder_agent.example.id } ``` From 36b612d0a12bb2976b865b419b4c6f6660ea202e Mon Sep 17 00:00:00 2001 From: Danielle Maywood Date: Fri, 2 May 2025 17:05:47 +0000 Subject: [PATCH 3/4] fix: tests --- devcontainers-cli/main.test.ts | 19 +++++++++++++++++-- test.ts | 3 ++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/devcontainers-cli/main.test.ts b/devcontainers-cli/main.test.ts index 85686c46..b246785f 100644 --- a/devcontainers-cli/main.test.ts +++ b/devcontainers-cli/main.test.ts @@ -40,7 +40,21 @@ const executeScriptInContainerWithPackageManager = async ( ]); } - const resp = await execContainer(id, [shell, "-c", instance.script]); + const pathResp = await execContainer(id, [shell, "-c", "echo $PATH"]); + const path = pathResp.stdout.trim(); + + console.log(path); + + const resp = await execContainer( + id, + [shell, "-c", instance.script], + [ + "--env", + "CODER_SCRIPT_BIN_DIR=/tmp/coder-script-data/bin", + "--env", + `PATH=${path}:/tmp/coder-script-data/bin`, + ], + ); const stdout = resp.stdout.trim().split("\n"); const stderr = resp.stderr.trim().split("\n"); return { @@ -98,13 +112,14 @@ describe("devcontainers-cli", async () => { "docker:dind", "yarn", ); + console.log(output); expect(output.exitCode).toBe(0); expect(output.stdout[0]).toEqual( "Installing @devcontainers/cli using yarn...", ); expect(output.stdout[output.stdout.length - 1]).toEqual( - "🥳 @devcontainers/cli has been installed into /usr/local/bin/devcontainer!", + "🥳 @devcontainers/cli has been installed into /tmp/coder-script-data/bin/devcontainer!", ); }, 15000); diff --git a/test.ts b/test.ts index b1b8aa83..e466cb12 100644 --- a/test.ts +++ b/test.ts @@ -66,12 +66,13 @@ export const executeScriptInContainer = async ( export const execContainer = async ( id: string, cmd: string[], + args?: string[], ): Promise<{ exitCode: number; stderr: string; stdout: string; }> => { - const proc = spawn(["docker", "exec", id, ...cmd], { + const proc = spawn(["docker", "exec", ...(args ?? []), id, ...cmd], { stderr: "pipe", stdout: "pipe", }); From d4b3e84633f310c0d637cc63a00783d2b2cfd287 Mon Sep 17 00:00:00 2001 From: Danielle Maywood Date: Fri, 2 May 2025 17:06:57 +0000 Subject: [PATCH 4/4] chore: remove log --- devcontainers-cli/main.test.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/devcontainers-cli/main.test.ts b/devcontainers-cli/main.test.ts index b246785f..892d6430 100644 --- a/devcontainers-cli/main.test.ts +++ b/devcontainers-cli/main.test.ts @@ -112,7 +112,6 @@ describe("devcontainers-cli", async () => { "docker:dind", "yarn", ); - console.log(output); expect(output.exitCode).toBe(0); expect(output.stdout[0]).toEqual(