Skip to content

Commit 1ed1a6a

Browse files
🪲 [Fix]: Fix module requirements where we have multiple hashtables (#66)
## Description - Fixes #65 ## 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 01bcf16 commit 1ed1a6a

File tree

4 files changed

+22
-8
lines changed

4 files changed

+22
-8
lines changed

scripts/helpers/Build/Build-PSModuleManifest.ps1

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ function Build-PSModuleManifest {
192192
$hashtable = '@\{[^}]*\}'
193193
if ($_ -match $hashtable) {
194194
Write-Verbose " - [#Requires -Modules] - [$_] - Hashtable"
195-
$capturedModules.Add((ConvertTo-Hashtable -InputString $_))
195+
$capturedModules.Add([PSCustomObject](ConvertTo-Hashtable -InputString $_))
196196
} else {
197197
Write-Verbose " - [#Requires -Modules] - [$_] - String"
198198
$capturedModules.Add($_)
@@ -213,13 +213,21 @@ function Build-PSModuleManifest {
213213
}
214214
}
215215

216-
Write-Verbose '[RequiredModules]'
217-
$manifest.RequiredModules = $capturedModules
218-
$manifest.RequiredModules | ForEach-Object { Write-Verbose "[RequiredModules] - [$_]" }
216+
Write-Verbose '[RequiredModules] - Gathered'
217+
$capturedModules | ForEach-Object { Write-Verbose " - [$_]" }
218+
$capturedModules | Sort-Object -Unique
219+
$requiredModules = @()
220+
$capturedModules | ForEach-Object {
221+
if ($_ -is [string]) {
222+
$requiredModules += $_
223+
} else {
224+
$requiredModules += ($_ | ConvertTo-Json -Depth 5 | ConvertFrom-Json -AsHashtable)
225+
}
226+
}
219227

220-
Write-Verbose '[RequiredModulesUnique]'
221-
$manifest.RequiredModules = $manifest.RequiredModules | Sort-Object -Unique
222-
$manifest.RequiredModules | ForEach-Object { Write-Verbose "[RequiredModulesUnique] - [$_]" }
228+
Write-Verbose '[RequiredModules] - Result'
229+
$manifest.RequiredModules = $requiredModules
230+
$manifest.RequiredModules | ForEach-Object { Write-Verbose "[RequiredModules] - [$_]" }
223231

224232
Write-Verbose '[PowerShellVersion]'
225233
$capturedVersions = $capturedVersions | Sort-Object -Unique -Descending

tests/src/functions/public/Get-PSModuleTest.ps1

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
#Requires -Modules Utilities
2+
#Requires -Modules @{ ModuleName = 'PSSemVer'; ModuleVersion = '1.0.0' }
3+
#Requires -Modules @{ ModuleName = 'DynamicParams'; ModuleVersion = '1.1.8' }
4+
#Requires -Modules @{ ModuleName = 'Store'; ModuleVersion = '0.3.1' }
25

36
function Get-PSModuleTest {
47
<#

tests/src/modules/OtherPSModule.psm1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Function Get-OtherPSModule {
1+
function Get-OtherPSModule {
22
<#
33
.SYNOPSIS
44
Performs tests on a module.

tests/srcWithManifest/functions/public/Get-PSModuleTest.ps1

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
#Requires -Modules Utilities
2+
#Requires -Modules @{ ModuleName = 'PSSemVer'; ModuleVersion = '1.0.0' }
3+
#Requires -Modules @{ ModuleName = 'DynamicParams'; ModuleVersion = '1.1.8' }
4+
#Requires -Modules @{ ModuleName = 'Store'; ModuleVersion = '0.3.1' }
25

36
function Get-PSModuleTest {
47
<#

0 commit comments

Comments
 (0)