Skip to content

Commit e7eab97

Browse files
committed
Merge branch 'se-Build-Install-Dependencies' of https://github.com/SamErde/entra-powershell into se-Build-Install-Dependencies
2 parents 97016f4 + 855d81b commit e7eab97

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

build/Install-Dependencies.ps1

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ param(
1919
$Force
2020
)
2121

22+
<<<<<<< HEAD
2223
# Get module settings from the relevant ModuleSettings.json file or a file that is manually specified.
2324
if ($ModuleSettingsPath) {
2425
$SettingsPath = $ModuleSettingsPath
@@ -73,5 +74,56 @@ foreach ($DestinationModuleName in $ModuleSettings.destinationModuleName) {
7374
} catch {
7475
Write-Warning "Failed to update module '$DestinationModuleName' to version ${RequiredVersion}. Error: $_"
7576
}
77+
=======
78+
try {
79+
# Review: are the common functions required for this script? There does not seem to be any dependencies on them [yet?].
80+
. "$PSScriptRoot/common-functions.ps1"
81+
} catch {
82+
Write-Error -Message "Failed to load common-functions.ps1. Error: $_" -RecommendedAction "This script should be run from the 'build' folder. Ensure 'common-functions.ps1' exists and is accessible."
83+
}
84+
85+
# Get module settings from the relevant ModuleSettings.json file.
86+
if ($ModuleSettingsPath) {
87+
$SettingsPath = $ModuleSettingsPath
88+
} else {
89+
$SettingsPath = "$PSScriptRoot/../module/$ModuleName/config/ModuleSettings.json"
90+
}
91+
$ModuleSettings = Get-Content -Path $SettingsPath | ConvertFrom-Json
92+
$RequiredVersion = $ModuleSettings.destinationModuleVersion
93+
94+
# Do not check for installed modules if -Force is specified.
95+
if ($Force) {
96+
Write-Verbose 'Skipping the check for installed prerequisites. Forcing the installation of all required modules.'
97+
} else {
98+
Write-Verbose 'Checking installed modules for required dependencies.'
99+
$InstalledModules = Get-Module -ListAvailable -Verbose:$false | Group-Object -Property Name
100+
}
101+
102+
# Install the AzureAD module.
103+
$SourceModule = $ModuleSettings.sourceModule
104+
if (($InstalledModules.Name -contains $SourceModule) -and -not $Force) {
105+
Write-Verbose "The $SourceModule module is already installed."
106+
} else {
107+
Write-Verbose("Installing Module: $sourceModule")
108+
try {
109+
Install-Module $sourceModule -Scope CurrentUser -Force -AllowClobber
110+
} catch {
111+
Write-Error "Failed to install the $sourceModule module. Error: $_"
112+
}
113+
}
114+
115+
# Install the required module dependencies if missing the required version or if -Force.
116+
foreach ($moduleName in $ModuleSettings.destinationModuleName) {
117+
$InstalledModuleReference = $InstalledModules.Where({ $_.Name -eq $moduleName })
118+
if (-not $InstalledModuleReference -or $Force) {
119+
Write-Verbose "Installing version $RequiredVersion of $moduleName"
120+
try {
121+
Install-Module $moduleName -Scope CurrentUser -RequiredVersion $RequiredVersion -Force -AllowClobber
122+
} catch {
123+
Write-Error "Failed to install module $moduleName ${RequiredVersion}. Error: $_"
124+
}
125+
} elseif ($InstalledModuleReference.Group.Version -contains $RequiredVersion) {
126+
Write-Verbose "Found version $RequiredVersion of $moduleName"
127+
>>>>>>> 855d81b2524df83594183471a1a410d437b80b2a
76128
}
77129
}

0 commit comments

Comments
 (0)