diff --git a/src/bash-aliases/devcontainer-feature.json b/src/bash-aliases/devcontainer-feature.json index c970b3d..1eff2aa 100644 --- a/src/bash-aliases/devcontainer-feature.json +++ b/src/bash-aliases/devcontainer-feature.json @@ -1,6 +1,6 @@ { "id": "bash-aliases", - "version": "1.0.3", + "version": "1.0.4", "name": "Bash Aliases", "description": "Loads custom bash aliases from your project's `.devcontainer/etc/bash-aliases` directory.", "dependsOn": { diff --git a/src/bash-aliases/install.sh b/src/bash-aliases/install.sh index 576ac98..4d60290 100644 --- a/src/bash-aliases/install.sh +++ b/src/bash-aliases/install.sh @@ -5,6 +5,8 @@ UPDATE_RC="${UPDATE_RC:-"true"}" set -eux export DEBIAN_FRONTEND=noninteractive +FEATURE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + if [ "$(id -u)" -ne 0 ]; then echo -e 'Script must be run as root. Use sudo, su, or add "USER root" to your Dockerfile before running this script.' exit 1 @@ -22,26 +24,8 @@ updaterc() { fi } -# Bash-aliases loader -SNIPPET_CONTENT=$(cat <<'EOF' -# Only runs on terminal from inside vscode editor, or in CI -if [[ ( -t 1 && "${TERM_PROGRAM}" = "vscode" ) || "${CI}" = "true" ]]; then - ALIASES_FOLDER="$PWD/.devcontainer/etc/bash-aliases" - - # Dynamically load all *.sh files from ALIASES_FOLDER - if [ -d "$ALIASES_FOLDER" ]; then - for file in "$ALIASES_FOLDER/"*.sh; do - if [ -e "$file" ] && [ -r "$file" ]; then - source "$file" - fi - done - fi -fi -EOF -) - -# Install loader echo "Installing Loader..." -updaterc "${SNIPPET_CONTENT}" +rc_content="$(cat "${FEATURE_DIR}/scripts/rc_snippet.sh")" +updaterc "${rc_content}" echo "Done!" diff --git a/src/bash-aliases/scripts/rc_snippet.sh b/src/bash-aliases/scripts/rc_snippet.sh new file mode 100644 index 0000000..5c04459 --- /dev/null +++ b/src/bash-aliases/scripts/rc_snippet.sh @@ -0,0 +1,13 @@ +# Only runs on terminal from inside vscode editor, or in CI +if [[ ( -t 1 && "${TERM_PROGRAM}" = "vscode" ) || "${CI}" = "true" ]]; then + ALIASES_FOLDER="$PWD/.devcontainer/etc/bash-aliases" + + # Dynamically load all *.sh files from ALIASES_FOLDER + if [ -d "$ALIASES_FOLDER" ]; then + for file in "$ALIASES_FOLDER/"*.sh; do + if [ -e "$file" ] && [ -r "$file" ]; then + source "$file" + fi + done + fi +fi diff --git a/src/uv/devcontainer-feature.json b/src/uv/devcontainer-feature.json index f8c872b..9c787c6 100644 --- a/src/uv/devcontainer-feature.json +++ b/src/uv/devcontainer-feature.json @@ -1,6 +1,6 @@ { "id": "uv", - "version": "1.0.3", + "version": "1.0.4", "name": "UV", "description": "A fast Python package manager written in Rust. Replaces pip, poetry, virtualenv, and more.", "options": { diff --git a/src/uv/install.sh b/src/uv/install.sh index f3fff2c..e257107 100644 --- a/src/uv/install.sh +++ b/src/uv/install.sh @@ -5,6 +5,8 @@ USERNAME="${USERNAME:-"${_REMOTE_USER:-"automatic"}"}" UPDATE_RC="${UPDATE_RC:-"true"}" UV_INSTALL_DIR="${UV_INSTALL_DIR:-"~/.local/bin"}" +FEATURE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + set -eux export DEBIAN_FRONTEND=noninteractive @@ -66,20 +68,14 @@ if ! uv --version &> /dev/null ; then # Install dependencies check_packages curl unzip tar ca-certificates - UV_CACHE_SCRIPT="$(cat << 'EOF' -if [[ ( -t 1 && "${TERM_PROGRAM}" = "vscode" ) || "${CI}" = "true" ]]; then - export UV_CACHE_DIR="$PWD/.uv_cache" - mkdir -p "$UV_CACHE_DIR" -fi -EOF -)" - updaterc "${UV_CACHE_SCRIPT}" + rc_content="$(cat "${FEATURE_DIR}/scripts/rc_snippet.sh")" + updaterc "${rc_content}" mkdir -p $UV_INSTALL_DIR chown -R "${USERNAME}:${USERNAME}" "${UV_INSTALL_DIR}" chmod -R g+r+w "${UV_INSTALL_DIR}" - find "${UV_INSTALL_DIR}" -type d -print0 | xargs -n 1 -0 chmod g+s + echo "Installing UV..." UV_VERSION=$VERSION diff --git a/src/uv/scripts/rc_snippet.sh b/src/uv/scripts/rc_snippet.sh new file mode 100644 index 0000000..333aa3a --- /dev/null +++ b/src/uv/scripts/rc_snippet.sh @@ -0,0 +1,5 @@ +# Only runs on terminal from inside vscode editor +if [ -t 1 ] && [ "${TERM_PROGRAM}" = "vscode" ]; then + export UV_CACHE_DIR="$PWD/.uv_cache" + mkdir -p "$UV_CACHE_DIR" +fi diff --git a/test/bash-aliases/cases/00-test-setup.sh b/test/bash-aliases/cases/00-test-setup.sh index a13db37..006e3b7 100644 --- a/test/bash-aliases/cases/00-test-setup.sh +++ b/test/bash-aliases/cases/00-test-setup.sh @@ -1,4 +1,4 @@ -#!/bin/zsh +#!/bin/bash set -euo pipefail diff --git a/test/bash-aliases/cases/10-test-alias.sh b/test/bash-aliases/cases/10-test-alias.sh index ef44764..2d0eace 100644 --- a/test/bash-aliases/cases/10-test-alias.sh +++ b/test/bash-aliases/cases/10-test-alias.sh @@ -1,4 +1,4 @@ -#!/bin/zsh +#!/bin/bash set -euo pipefail diff --git a/test/bash-aliases/cases/20-test-no-aliases-folder.sh b/test/bash-aliases/cases/20-test-no-aliases-folder.sh index 357284d..015fe30 100644 --- a/test/bash-aliases/cases/20-test-no-aliases-folder.sh +++ b/test/bash-aliases/cases/20-test-no-aliases-folder.sh @@ -1,4 +1,4 @@ -#!/bin/zsh +#!/bin/bash set -euo pipefail @@ -6,14 +6,14 @@ set -euo pipefail source dev-container-features-test-lib # Tests before removing aliases directory -check "directory exists" ls -lha "$ALIASES_DIR" -check "testalias exists" zsh -ic "command -v testalias" -check "testalias works" zsh -ic "testalias" -check "testalias result" zsh -ic "test \"\$(testalias)\" = 'Hello, World!'" +check "directory exists" bash -ic "test -d '$ALIASES_DIR'" +check "testalias exists" bash -ic 'command -v testalias' +check "testalias works" bash -ic 'testalias' +check "testalias result" bash -ic 'test "$(testalias)" = "Hello, World!"' # Remove aliases directory rm -rf "$ALIASES_DIR" # Tests after removing aliases directory -check "directory should NOT exist" test ! -d "$ALIASES_DIR" -check "testalias should NOT exist" test ! -n "$(zsh -ic 'command -v testalias')" +check "directory should NOT exist" bash -ic "test ! -f '$ALIASES_DIR'" +check "testalias should NOT exist" bash -ic 'test ! "$(command -v testalias)"' diff --git a/test/bash-aliases/cases/__before.sh b/test/bash-aliases/cases/__before.sh index a3c093e..56d4686 100644 --- a/test/bash-aliases/cases/__before.sh +++ b/test/bash-aliases/cases/__before.sh @@ -1,4 +1,4 @@ -#!/bin/zsh +#!/bin/bash ## # This file runs before each test case. diff --git a/test/bash-aliases/setup.sh b/test/bash-aliases/setup.sh index d889651..8b5347b 100644 --- a/test/bash-aliases/setup.sh +++ b/test/bash-aliases/setup.sh @@ -1,4 +1,4 @@ -#!/bin/zsh +#!/bin/bash set -euo pipefail diff --git a/test/bash-aliases/test.sh b/test/bash-aliases/test.sh index 4bd85c1..3590dbb 100644 --- a/test/bash-aliases/test.sh +++ b/test/bash-aliases/test.sh @@ -1,4 +1,4 @@ -#!/bin/zsh +#!/bin/bash set -euo pipefail @@ -30,11 +30,10 @@ for file in ./cases/*.sh; do continue fi - title="$(get_title "$file")" - source ./cases/__before.sh - check "[$title]" zsh -i "$file" + title="$(get_title "$file")" + check "[$title]" bash -i "$file" done # Report result