8000 fix(devcontainers-cli): add PNPM_HOME for pnpm package manager by defelmnq · Pull Request #433 · coder/modules · GitHub
[go: up one dir, main page]

Skip to content
This repository was archived by the owner on May 15, 2025. It is now read-only.

fix(devcontainers-cli): add PNPM_HOME for pnpm package manager #433

Merged
merged 3 commits into from
Apr 18, 2025
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Lo 8000 ading
Diff view
Diff view
Prev Previous commit
update script with maf suggestions
  • Loading branch information
defelmnq committed Apr 18, 2025
commit 5e147bb262674f9b79a16accc1f58f529d2fead8
2 changes: 1 addition & 1 deletion devcontainers-cli/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.0"
version = "1.0.1"
agent_id = coder_agent.example.id
}
```
4 changes: 2 additions & 2 deletions devcontainers-cli/main.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ describe("devcontainers-cli", async () => {
expect(output.stdout[output.stdout.length - 1]).toEqual(
"🥳 @devcontainers/cli has been installed into /usr/local/bin/devcontainer!",
);
});
}, 15000);

it("displays warning if docker is not installed", async () => {
const state = await runTerraformApply(import.meta.dir, {
Expand All @@ -126,5 +126,5 @@ describe("devcontainers-cli", async () => {
expect(output.stdout[output.stdout.length - 1]).toEqual(
"🥳 @devcontainers/cli has been installed into /usr/local/bin/devcontainer!",
);
});
}, 15000);
});
42 changes: 27 additions & 15 deletions devcontainers-cli/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,22 +23,34 @@ else
exit 1
fi

echo "Installing @devcontainers/cli using $PACKAGE_MANAGER..."

# Install @devcontainers/cli using the selected package manager
if [ "$PACKAGE_MANAGER" = "npm" ]; then
$PACKAGE_MANAGER install -g @devcontainers/cli \
&& echo "🥳 @devcontainers/cli has been installed into $(which devcontainer)!"
elif [ "$PACKAGE_MANAGER" = "pnpm" ]; then
# if PNPM_HOME is not set, set it to the bin directory of the script
if [ -z "$PNPM_HOME" ]; then
export PNPM_HOME="$CODER_SCRIPT_BIN_DIR"
install() {
echo "Installing @devcontainers/cli using $PACKAGE_MANAGER..."
if [ "$PACKAGE_MANAGER" = "npm" ]; then
npm install -g @devcontainers/cli
elif [ "$PACKAGE_MANAGER" = "pnpm" ]; then
# Check if PNPM_HOME is set, if not, set it to the script's bin directory
# pnpm needs this to be set to install binaries
# coder agent ensures this part is part of the PATH
# so that the devcontainer command is available
if [ -z "$PNPM_HOME" ]; then
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Main part of the fix, adding $PNPM_HOME if not set yet.

PNPM_HOME="$CODER_SCRIPT_BIN_DIR"
export M_HOME
fi
pnpm add -g @devcontainers/cli
elif [ "$PACKAGE_MANAGER" = "yarn" ]; then
yarn global add @devcontainers/cli
fi
$PACKAGE_MANAGER add -g @devcontainers/cli \
&& echo "🥳 @devcontainers/cli has been installed into $(which devcontainer)!"
elif [ "$PACKAGE_MANAGER" = "yarn" ]; then
$PACKAGE_MANAGER global add @devcontainers/cli \
&& echo "🥳 @devcontainers/cli has been installed into $(which devcontainer)!"
}

if ! install; then
echo "Failed to install @devcontainers/cli" >&2
exit 1
fi

if ! command -v devcontainer > /dev/null 2>&1; then
echo "Installation completed but 'devcontainer' command not found in PATH" >&2
exit 1
fi

echo "🥳 @devcontainers/cli has been installed into $(which devcontainer)!"
exit 0
0