aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/common-utils/devcontainer-feature.json7
-rwxr-xr-xsrc/common-utils/install.sh7
-rw-r--r--test/common-utils/configure_zsh_as_default_shell.sh12
-rw-r--r--test/common-utils/scenarios.json10
4 files changed, 35 insertions, 1 deletions
diff --git a/src/common-utils/devcontainer-feature.json b/src/common-utils/devcontainer-feature.json
index 812e5e9..d2a97d6 100644
--- a/src/common-utils/devcontainer-feature.json
+++ b/src/common-utils/devcontainer-feature.json
@@ -1,6 +1,6 @@
{
"id": "common-utils",
- "version": "1.1.6",
+ "version": "1.2.0",
"name": "Common Debian 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.",
@@ -10,6 +10,11 @@
"default": true,
"description": "Install ZSH?"
},
+ "configureZshAsDefaultShell": {
+ "type": "boolean",
+ "default": false,
+ "description": "Change default shell to ZSH?"
+ },
"installOhMyZsh": {
"type": "boolean",
"default": true,
diff --git a/src/common-utils/install.sh b/src/common-utils/install.sh
index 5530b96..eb0e624 100755
--- a/src/common-utils/install.sh
+++ b/src/common-utils/install.sh
@@ -13,6 +13,7 @@ set -e
rm -rf /var/lib/apt/lists/*
INSTALL_ZSH="${INSTALLZSH:-"true"}"
+CONFIGURE_ZSH_AS_DEFAULT_SHELL="${CONFIGUREZSHASDEFAULTSHELL:-"false"}"
INSTALL_OH_MY_ZSH="${INSTALLOHMYZSH:-"true"}"
UPGRADE_PACKAGES="${UPGRADEPACKAGES:-"true"}"
USERNAME="${USERNAME:-"${_REMOTE_USER:-"automatic"}"}"
@@ -378,6 +379,12 @@ if [ "${INSTALL_ZSH}" = "true" ]; then
ZSH_ALREADY_INSTALLED="true"
fi
+ # Change shell of determined user
+ if [[ "${CONFIGURE_ZSH_AS_DEFAULT_SHELL}" == "true" ]]; then
+ chsh --shell /bin/zsh ${USERNAME}
+ fi
+
+
# Adapted, simplified inline Oh My Zsh! install steps that adds, defaults to a codespaces theme.
# See https://github.com/ohmyzsh/ohmyzsh/blob/master/tools/install.sh for official script.
oh_my_install_dir="${user_rc_path}/.oh-my-zsh"
diff --git a/test/common-utils/configure_zsh_as_default_shell.sh b/test/common-utils/configure_zsh_as_default_shell.sh
new file mode 100644
index 0000000..e5cc89e
--- /dev/null
+++ b/test/common-utils/configure_zsh_as_default_shell.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+set -e
+
+# Optional: Import test library
+source dev-container-features-test-lib
+
+# Definition specific tests
+check "default-shell-is-zsh" bash -c "getent passwd $(whoami) | awk -F: '{ print $7 }' | grep '/bin/zsh'"
+
+# Report result
+reportResults
diff --git a/test/common-utils/scenarios.json b/test/common-utils/scenarios.json
new file mode 100644
index 0000000..aa36fcb
--- /dev/null
+++ b/test/common-utils/scenarios.json
@@ -0,0 +1,10 @@
+{
+ "configure_zsh_as_default_shell": {
+ "image": "mcr.microsoft.com/devcontainers/base:ubuntu",
+ "features": {
+ "common-utils": {
+ "configureZshAsDefaultShell": true
+ }
+ }
+ }
+}