Skip to content

Commit

Permalink
Avoid unexpected shell expansion (#645)
Browse files Browse the repository at this point in the history
* Avoid unexpected shell expansion

* Add install Node with ZSH as default test

* Fix LTS only work on >bionic

* Bump Node feature version

* Remove huge universal image on scenarios
  • Loading branch information
shikanime authored Aug 9, 2023
1 parent f2594c5 commit 9e75db9
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 23 deletions.
4 changes: 2 additions & 2 deletions src/node/devcontainer-feature.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"id": "node",
"version": "1.2.0",
"version": "1.2.1",
"name": "Node.js (via nvm), yarn and pnpm",
"documentationURL": "https://github.com/devcontainers/features/tree/main/src/node",
"description": "Installs Node.js, nvm, yarn, pnpm, and needed dependencies.",
Expand Down Expand Up @@ -49,4 +49,4 @@
"installsAfter": [
"ghcr.io/devcontainers/features/common-utils"
]
}
}
24 changes: 12 additions & 12 deletions src/node/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

export NODE_VERSION="${VERSION:-"lts"}"
export NVM_VERSION="${NVMVERSION:-"0.39.2"}"
export NVM_DIR=${NVMINSTALLPATH:-"/usr/local/share/nvm"}
export NVM_DIR="${NVMINSTALLPATH:-"/usr/local/share/nvm"}"
INSTALL_TOOLS_FOR_NODE_GYP="${NODEGYPDEPENDENCIES:-true}"

# Comma-separated list of node versions to be installed (with nvm)
Expand Down Expand Up @@ -118,10 +118,10 @@ set -e
umask 0002
# Do not update profile - we'll do this manually
export PROFILE=/dev/null
curl -so- https://raw.githubusercontent.com/nvm-sh/nvm/v${NVM_VERSION}/install.sh | bash
source ${NVM_DIR}/nvm.sh
curl -so- "https://raw.githubusercontent.com/nvm-sh/nvm/v${NVM_VERSION}/install.sh" | bash
source "${NVM_DIR}/nvm.sh"
if [ "${NODE_VERSION}" != "" ]; then
nvm alias default ${NODE_VERSION}
nvm alias default "${NODE_VERSION}"
fi
EOF
)"
Expand Down Expand Up @@ -149,9 +149,9 @@ usermod -a -G nvm ${USERNAME}
umask 0002
if [ ! -d "${NVM_DIR}" ]; then
# Create nvm dir, and set sticky bit
mkdir -p ${NVM_DIR}
chown "${USERNAME}:nvm" ${NVM_DIR}
chmod g+rws ${NVM_DIR}
mkdir -p "${NVM_DIR}"
chown "${USERNAME}:nvm" "${NVM_DIR}"
chmod g+rws "${NVM_DIR}"
su ${USERNAME} -c "${nvm_install_snippet}" 2>&1
# Update rc files
if [ "${UPDATE_RC}" = "true" ]; then
Expand All @@ -160,11 +160,11 @@ if [ ! -d "${NVM_DIR}" ]; then
else
echo "NVM already installed."
if [ "${NODE_VERSION}" != "" ]; then
su ${USERNAME} -c "umask 0002 && . $NVM_DIR/nvm.sh && nvm install ${NODE_VERSION} && nvm alias default ${NODE_VERSION}"
su ${USERNAME} -c "umask 0002 && . '$NVM_DIR/nvm.sh' && nvm install '${NODE_VERSION}' && nvm alias default '${NODE_VERSION}'"
fi
fi

# Additional node versions to be installed but not be set as
# Additional node versions to be installed but not be set as
# default we can assume the nvm is the group owner of the nvm
# directory and the sticky bit on directories so any installed
# files will have will have the correct ownership (nvm)
Expand All @@ -173,12 +173,12 @@ if [ ! -z "${ADDITIONAL_VERSIONS}" ]; then
IFS=","
read -a additional_versions <<< "$ADDITIONAL_VERSIONS"
for ver in "${additional_versions[@]}"; do
su ${USERNAME} -c "umask 0002 && . $NVM_DIR/nvm.sh && nvm install ${ver}"
su ${USERNAME} -c "umask 0002 && . '$NVM_DIR/nvm.sh' && nvm install '${ver}'"
done

# Ensure $NODE_VERSION is on the $PATH
if [ "${NODE_VERSION}" != "" ]; then
su ${USERNAME} -c "umask 0002 && . $NVM_DIR/nvm.sh && nvm use default"
su ${USERNAME} -c "umask 0002 && . '$NVM_DIR/nvm.sh' && nvm use default"
fi
IFS=$OLDIFS
fi
Expand Down Expand Up @@ -218,7 +218,7 @@ fi


# Clean up
su ${USERNAME} -c "umask 0002 && . $NVM_DIR/nvm.sh && nvm clear-cache"
su ${USERNAME} -c "umask 0002 && . '$NVM_DIR/nvm.sh' && nvm clear-cache"
rm -rf /var/lib/apt/lists/*

# Ensure privs are correct for installed node versions. Unfortunately the
Expand Down
20 changes: 11 additions & 9 deletions test/node/scenarios.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,21 +17,23 @@
}
}
},
"version_none": {
"image": "mcr.microsoft.com/devcontainers/base",
"remoteUser": "vscode",
"zsh_default": {
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
"features": {
"node": {
"version": "none"
"version": "lts"
},
"common-utils": {
"configureZshAsDefaultShell": true
}
}
},
"install_node_on_universal_image": {
"image": "mcr.microsoft.com/devcontainers/universal",
"remoteUser": "codespace",
"version_none": {
"image": "mcr.microsoft.com/devcontainers/base",
"remoteUser": "vscode",
"features": {
"node": {
"version": "19.1.0"
"version": "none"
}
}
},
Expand All @@ -43,4 +45,4 @@
}
}
}
}
}
12 changes: 12 additions & 0 deletions test/node/zsh_default.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/bin/bash

set -e

# Optional: Import test library
source dev-container-features-test-lib

# Definition specific tests
check "nvm" bash -c ". /usr/local/share/nvm/nvm.sh && nvm install 10"

# Report result
reportResults

0 comments on commit 9e75db9

Please sign in to comment.