Skip to content

Commit 86f3b8d

Browse files
🪲 [Fix]: Load prereqs before Publish-PSResource (#28)
## Description - Load prereqs before `Publish-PSResource` ## Type of change <!-- Use the check-boxes [x] on the options that are relevant. --> - [ ] 📖 [Docs] - [x] 🪲 [Fix] - [ ] 🩹 [Patch] - [ ] ⚠️ [Security fix] - [ ] 🚀 [Feature] - [ ] 🌟 [Breaking change] ## Checklist <!-- Use the check-boxes [x] on the options that are relevant. --> - [x] I have performed a self-review of my own code - [x] I have commented my code, particularly in hard-to-understand areas
1 parent 649bcc5 commit 86f3b8d

File tree

2 files changed

+66
-0
lines changed

2 files changed

+66
-0
lines changed

scripts/helpers/Publish-PSModule.ps1

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,12 @@ function Publish-PSModule {
310310
Stop-LogGroup
311311
#endregion Update module manifest
312312

313+
#region Install Prerequsites
314+
Start-LogGroup 'Install module dependencies'
315+
Resolve-PSModuleDependency -ManifestFilePath $manifestFilePath
316+
Stop-LogGroup
317+
#endregion Install Prerequsites
318+
313319
#region Create releases
314320
if ($createPrerelease -or $createRelease -or $whatIf) {
315321
#region Publish-ToPSGallery
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
function Resolve-PSModuleDependency {
2+
<#
3+
.SYNOPSIS
4+
Resolve dependencies for a module based on the manifest file.
5+
6+
.DESCRIPTION
7+
Resolve dependencies for a module based on the manifest file, following PSModuleInfo structure
8+
9+
.EXAMPLE
10+
Resolve-PSModuleDependency -Path 'C:\MyModule\MyModule.psd1'
11+
12+
Installs all modules defined in the manifest file, following PSModuleInfo structure.
13+
14+
.NOTES
15+
Should later be adapted to support both pre-reqs, and dependencies.
16+
Should later be adapted to take 4 parameters sets: specific version ("requiredVersion" | "GUID"), latest version ModuleVersion,
17+
and latest version within a range MinimumVersion - MaximumVersion.
18+
#>
19+
[Alias('Resolve-PSModuleDependencies')]
20+
[CmdletBinding()]
21+
param(
22+
# The path to the manifest file.
23+
[Parameter(Mandatory)]
24+
[string] $ManifestFilePath
25+
)
26+
27+
Write-Verbose 'Resolving dependencies'
28+
29+
$manifest = Import-PowerShellDataFile -Path $ManifestFilePath
30+
Write-Verbose "Reading [$ManifestFilePath]"
31+
Write-Verbose "Found [$($manifest.RequiredModules.Count)] modules to install"
32+
33+
foreach ($requiredModule in $manifest.RequiredModules) {
34+
$installParams = @{}
35+
36+
if ($requiredModule -is [string]) {
37+
$installParams.Name = $requiredModule
38+
} else {
39+
$installParams.Name = $requiredModule.ModuleName
40+
$installParams.MinimumVersion = $requiredModule.ModuleVersion
41+
$installParams.RequiredVersion = $requiredModule.RequiredVersion
42+
$installParams.MaximumVersion = $requiredModule.MaximumVersion
43+
}
44+
$installParams.Force = $true
45+
$installParams.Verbose = $false
46+
47+
Write-Verbose "[$($installParams.Name)] - Installing module"
48+
$VerbosePreferenceOriginal = $VerbosePreference
49+
$VerbosePreference = 'SilentlyContinue'
50+
Install-Module @installParams -AllowPrerelease:$false
51+
$VerbosePreference = $VerbosePreferenceOriginal
52+
Write-Verbose "[$($installParams.Name)] - Importing module"
53+
$VerbosePreferenceOriginal = $VerbosePreference
54+
$VerbosePreference = 'SilentlyContinue'
55+
Import-Module @installParams
56+
$VerbosePreference = $VerbosePreferenceOriginal
57+
Write-Verbose "[$($installParams.Name)] - Done"
58+
}
59+
Write-Verbose 'Resolving dependencies - Done'
60+
}

0 commit comments

Comments
 (0)