aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoss Smith <ross-p-smith@users.noreply.github.com>2023-01-30 22:29:13 +0300
committerGitHub <noreply@github.com>2023-01-30 22:29:13 +0300
commit7763e0b7db6a16f2efececb6ffa9bd917a9eb5de (patch)
tree1a31f1916744b6e40d9a741838aa29a584f666f8
parentfbdc4556d519512736a8e2abfb3e03fcb2c9e0c7 (diff)
Install PowerShell Modules (#427)feature_powershell_1.1.0
* InstallBicep * Add test for InstallBicep * Install pwsh Modules * Script rename * Add -Command to test * Check version * Install the module for all users * Adding terminating lines to scripts * Update src/powershell/install.sh Co-authored-by: Samruddhi Khandale <skhandale@microsoft.com> * Update src/powershell/install.sh Co-authored-by: Samruddhi Khandale <skhandale@microsoft.com> * Removed comments in Readme * Remove Bicep from PowerShell install * Increased version number * Update Minor version rather than patch --------- Co-authored-by: Samruddhi Khandale <skhandale@microsoft.com>
-rw-r--r--src/powershell/devcontainer-feature.json11
-rwxr-xr-xsrc/powershell/install.sh12
-rw-r--r--test/powershell/install_modules.sh13
-rw-r--r--test/powershell/scenarios.json10
4 files changed, 43 insertions, 3 deletions
diff --git a/src/powershell/devcontainer-feature.json b/src/powershell/devcontainer-feature.json
index ef967a6..dce0575 100644
--- a/src/powershell/devcontainer-feature.json
+++ b/src/powershell/devcontainer-feature.json
@@ -1,6 +1,6 @@
{
"id": "powershell",
- "version": "1.0.6",
+ "version": "1.1.0",
"name": "PowerShell",
"documentationURL": "https://github.com/devcontainers/features/tree/main/src/powershell",
"description": "Installs PowerShell along with needed dependencies. Useful for base Dockerfiles that often are missing required install dependencies like gpg.",
@@ -14,8 +14,13 @@
],
"default": "latest",
"description": "Select or enter a version of PowerShell."
- }
- },
+ },
+ "modules": {
+ "type": "string",
+ "default": "",
+ "description": "Optional comma separated list of PowerShell modules to install."
+ }
+ },
"installsAfter": [
"ghcr.io/devcontainers/features/common-utils"
]
diff --git a/src/powershell/install.sh b/src/powershell/install.sh
index 3f19f47..b220c3a 100755
--- a/src/powershell/install.sh
+++ b/src/powershell/install.sh
@@ -13,6 +13,7 @@ set -e
rm -rf /var/lib/apt/lists/*
POWERSHELL_VERSION=${VERSION:-"latest"}
+POWERSHELL_MODULES="${MODULES}"
MICROSOFT_GPG_KEYS_URI="https://packages.microsoft.com/keys/microsoft.asc"
POWERSHELL_ARCHIVE_ARCHITECTURES="amd64"
@@ -149,6 +150,17 @@ if [ "${use_github}" = "true" ]; then
install_using_github
fi
+# If PowerShell modules are requested, loop through and install
+if [ ${#POWERSHELL_MODULES[@]} -gt 0 ]; then
+ echo "Installing PowerShell Modules: ${POWERSHELL_MODULES}"
+ modules=(`echo ${POWERSHELL_MODULES} | tr ',' ' '`)
+ for i in "${modules[@]}"
+ do
+ echo "Installing ${i}"
+ pwsh -Command "Install-Module -Name ${i} -AllowClobber -Force -Scope AllUsers" || continue
+ done
+fi
+
# Clean up
rm -rf /var/lib/apt/lists/*
diff --git a/test/powershell/install_modules.sh b/test/powershell/install_modules.sh
new file mode 100644
index 0000000..0bb0172
--- /dev/null
+++ b/test/powershell/install_modules.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+set -e
+
+# Import test library for `check` command
+source dev-container-features-test-lib
+
+# Extension-specific tests
+check "az.resources" pwsh -Command "(Get-Module -ListAvailable -Name Az.Resources).Version.ToString()"
+check "az.storage" pwsh -Command "(Get-Module -ListAvailable -Name Az.Storage).Version.ToString()"
+
+# Report result
+reportResults
diff --git a/test/powershell/scenarios.json b/test/powershell/scenarios.json
new file mode 100644
index 0000000..8ced964
--- /dev/null
+++ b/test/powershell/scenarios.json
@@ -0,0 +1,10 @@
+{
+ "install_modules": {
+ "image": "mcr.microsoft.com/devcontainers/base:jammy",
+ "features": {
+ "powershell": {
+ "modules": "az.resources, az.storage"
+ }
+ }
+ }
+}