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
Import-Module $ModuleFile -Force
    
$PS1Files = Get-ChildItem -Path $ModuleDirectory/Functions/ -Recurse -Filter *.ps1
$Aliases = New-Object -TypeName System.Collections.ArrayList
foreach ($File in $PS1Files) {
    try {
        $Alias = Get-Alias -Definition $File.baseName -ErrorAction Stop
        if ($Alias) {
            $Aliases.Add($Alias.Name) | Out-Null
        }
    }
    catch {
    
    }
}
    
$Params = @{
    Path              = $DataFile
    FunctionsToExport = $PS1Files.BaseName
    AliasesToExport   = $Aliases
    CmdletsToExport   = @()
    Copyright         = '(c) 2025 Akamai Technologies. All rights reserved.'
    Author            = 'Akamai Technologies Ltd.'
}
    
if ($Version) {
    $Params.ModuleVersion = $Version
}
    
Update-ModuleManifest @Params

# Finally remove all modules to force reload of new data from saved file
Remove-Module $ModuleName
Import-Module $DataFile -Force

Write-Host -ForegroundColor Green 'Process complete'