From 719901a1b4751d5d9864d9700f56b6ecf80cc4f4 Mon Sep 17 00:00:00 2001 From: Samruddhi Khandale Date: Fri, 27 Oct 2023 15:47:26 -0700 Subject: [PATCH] [common-utils] Bug fix: zsh missing rc snippet (#736) * [common-utils] Bug fix: zsp missing rc snippet * condion rc snippet * fix bug * remove debugging step --- src/common-utils/devcontainer-feature.json | 2 +- src/common-utils/main.sh | 7 ++++++- test/common-utils/configure_zsh_as_default_shell.sh | 1 + test/common-utils/scenarios.json | 6 ++++-- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/common-utils/devcontainer-feature.json b/src/common-utils/devcontainer-feature.json index 181e54594..dc54e6918 100644 --- a/src/common-utils/devcontainer-feature.json +++ b/src/common-utils/devcontainer-feature.json @@ -1,6 +1,6 @@ { "id": "common-utils", - "version": "2.2.0", + "version": "2.3.0", "name": "Common Utilities", "documentationURL": "https://github.com/devcontainers/features/tree/main/src/common-utils", "description": "Installs a set of common command line utilities, Oh My Zsh!, and sets up a non-root user.", diff --git a/src/common-utils/main.sh b/src/common-utils/main.sh index 71422465c..d1a977f9c 100644 --- a/src/common-utils/main.sh +++ b/src/common-utils/main.sh @@ -421,6 +421,7 @@ fi # Restore user .bashrc / .profile / .zshrc defaults from skeleton file if it doesn't exist or is empty possible_rc_files=( ".bashrc" ".profile" ) [ "$INSTALL_OH_MY_ZSH_CONFIG" == "true" ] && possible_rc_files+=('.zshrc') +[ "$INSTALL_ZSH" == "true" ] && possible_rc_files+=('.zprofile') for rc_file in "${possible_rc_files[@]}"; do if [ -f "/etc/skel/${rc_file}" ]; then if [ ! -e "${user_home}/${rc_file}" ] || [ ! -s "${user_home}/${rc_file}" ]; then @@ -456,13 +457,17 @@ fi # Optionally configure zsh and Oh My Zsh! if [ "${INSTALL_ZSH}" = "true" ]; then + if [ ! -f "${user_home}/.zprofile" ] || ! grep -Fxq 'source $HOME/.profile' "${user_home}/.zprofile" ; then + echo 'source $HOME/.profile' >> "${user_home}/.zprofile" + fi + if [ "${ZSH_ALREADY_INSTALLED}" != "true" ]; then if [ "${ADJUSTED_ID}" = "rhel" ]; then global_rc_path="/etc/zshrc" else global_rc_path="/etc/zsh/zshrc" fi - cat "${FEATURE_DIR}/scripts/rc_snippet.sh" >> /etc/zshrc + cat "${FEATURE_DIR}/scripts/rc_snippet.sh" >> ${global_rc_path} ZSH_ALREADY_INSTALLED="true" fi diff --git a/test/common-utils/configure_zsh_as_default_shell.sh b/test/common-utils/configure_zsh_as_default_shell.sh index 6a569a990..01d15227e 100644 --- a/test/common-utils/configure_zsh_as_default_shell.sh +++ b/test/common-utils/configure_zsh_as_default_shell.sh @@ -9,6 +9,7 @@ source dev-container-features-test-lib check "default-shell-is-zsh" bash -c "getent passwd $(whoami) | awk -F: '{ print $7 }' | grep '/bin/zsh'" # check it overrides the ~/.zshrc with default dev containers template check "default-zshrc-is-dev-container-template" bash -c "cat ~/.zshrc | grep ZSH_THEME | grep devcontainers" +check "zsh-path-contains-local-bin" zsh -l -c "echo $PATH | grep '/home/devcontainer/.local/bin'" # Report result reportResults diff --git a/test/common-utils/scenarios.json b/test/common-utils/scenarios.json index bb65874e1..c1ee18dde 100644 --- a/test/common-utils/scenarios.json +++ b/test/common-utils/scenarios.json @@ -108,12 +108,14 @@ } }, "configure_zsh_as_default_shell": { - "image": "mcr.microsoft.com/devcontainers/base:ubuntu", + "image": "ubuntu", "features": { "common-utils": { + "installZsh": true, "configureZshAsDefaultShell": true } - } + }, + "remoteUser": "devcontainer" }, "configure_zsh_no_template_second_step": { "image": "mcr.microsoft.com/devcontainers/base:ubuntu",