tools/build.ps1
|
<#
.SYNOPSIS Build the module .DESCRIPTION Polls functions directory and builds out the necessary module manifest params .PARAMETER Version Module version #> param( [Parameter()] $Version ) $ModuleDirectory = "$PSScriptRoot/../" $ModuleName = (Get-Item "$PSScriptRoot/../").Name # Clear previously loaded modules. if ( (Get-Module $ModuleName) ) { Remove-Module $ModuleName } Write-Host -ForegroundColor Cyan "Building module $ModuleName" $ModuleFile = Get-ChildItem $ModuleDirectory/*.psm1 $DataFile = Get-ChildItem $ModuleDirectory/*.psd1 $PrivateFiles = Get-ChildItem -Path $PSScriptRoot/../Functions/Private -Recurse -Filter *.ps1 $PublicFiles = Get-ChildItem -Path $PSScriptRoot/../Functions/Public -Recurse -Filter *.ps1 $Aliases = New-Object -TypeName System.Collections.ArrayList # Collate all funtions into one file $PSM1Content = '' $PrivateFiles | ForEach-Object { $PSM1Content += Get-Content -Raw $_.FullName $PSM1Content += "`n" } $PublicFiles | ForEach-Object { $PSM1Content += Get-Content -Raw $_.FullName $PSM1Content += "`n" } # Write psm1 content to new file $PSM1Content | Set-Content -Path $ModuleFile -NoNewline -Force -Encoding UTF8 # Dot source the module file to get aliases Get-Content -Raw $ModuleFile | Invoke-Expression foreach ($File in $PublicFiles) { try { $Alias = Get-Alias -Definition $File.baseName -ErrorAction Stop if ($Alias) { $Aliases.Add($Alias.Name) | Out-Null } } catch { } } $Params = @{ Path = $DataFile FunctionsToExport = $PublicFiles.BaseName AliasesToExport = $Aliases CmdletsToExport = @() Copyright = '(c) 2026 Stuart Macleod. All rights reserved.' Author = 'Stuart Macleod' RequiredModules = @( @{ModuleName = 'WriteColour'; GUID = '704cd14a-5f5e-46ae-887e-70dd29378136'; ModuleVersion = '0.7.0'; } ) } if ($Version) { $Params.ModuleVersion = $Version } Update-ModuleManifest @Params # Finally remove all modules to force reload of new data from saved file $ModuleLoaded = Get-Module $ModuleName if ($ModuleLoaded) { Remove-Module $ModuleName } Import-Module $ModuleFile -Force Write-Host -ForegroundColor Green 'Process complete' |