PSModuleQuantityAnalyzer.psm1

#
# ROOT Module for module 'PSModuleQuantityAnalyzer'
#
# Generated by: Holger Zimmermann
#
# Generated on: 2026-03-22
#

$Script:FGCIInfo = [System.ConsoleColor]::Magenta    # Additional info / side details
$Script:FGCMInfo = [System.ConsoleColor]::Yellow       # Main info (instead of Yellow → modern, easy to read)
$Script:FGCSInfo = [System.ConsoleColor]::Gray   # Secondary info / less important
$Script:FGCCommand = [System.ConsoleColor]::Green      # Commands / executions
$Script:FGCQuestion = [System.ConsoleColor]::Cyan
$Script:FGCQuestion2 = [System.ConsoleColor]::Cyan     # Questions / user input
$Script:FGCHighLight = [System.ConsoleColor]::Magenta      # Clear highlight text
$Script:FGCWarning = [System.ConsoleColor]::DarkYellow     # Warnings (classic Yellow)
$Script:FGCError = [System.ConsoleColor]::Red        # Errors (bright red tone, more visible)
$Script:FGCSuccess = [System.ConsoleColor]::Green

$Script:ConsoleBGColor = [System.ConsoleColor]::Black    # Background remains black
$Script:ConsoleFGColor = [System.ConsoleColor]::Gray     # Default text gray

$Script:DateFormatLog = "yyyy-MM-dd HH:mm:ss.fff"
$Script:DateFormatSA = "yyyy-MM-dd HH:mm:ss"

$SAModulePath = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent
$SAModuleName = $MyInvocation.MyCommand.ScriptBlock.Module.Name
$SAModuleManifest = (Test-ModuleManifest -Path $(join-path $SAModulePath -ChildPath "\$SAModuleName.psd1"))
$SAModuleLastUpdate = $SAModuleManifest.PrivateData.PSData.LastUpdate

$Script:SAModuleLog = Join-Path -Path $SAModulePath -ChildPath "$SAModuleName.log"

$PublicFunctions = Get-ChildItem -Path "$PSScriptRoot/Public/*.ps1" -ErrorAction SilentlyContinue
$PrivateFunctions = Get-ChildItem -Path "$PSScriptRoot/Private/*.ps1" -ErrorAction SilentlyContinue

foreach ($file in $PrivateFunctions) {
    . $file.FullName
}

foreach ($file in $PublicFunctions) {
    . $file.FullName
}

Export-ModuleMember -Function $PublicFunctions.BaseName

if ($PSVersionTable.PSEdition -eq 'Core') {
    $PSStyle.Formatting.TableHeader = "`e[90m"
}

$PixelPath = Join-Path -Path $SAModulePath -ChildPath "Assets\PSModuleQA.piskel"
Show-PiskelFile -AddShadow -PiskelPath $PixelPath
Write-Host " Description: $($SAModuleManifest.Description) " -ForegroundColor Gray
Write-Host " Version: $($SAModuleManifest.Version) | Last Update: $SAModuleLastUpdate | Author: $($SAModuleManifest.Author) " -ForegroundColor Gray
Write-Host "`n Quick Start: " -ForegroundColor Gray -NoNewline

Write-Syntax -Segment @(
    @{ LineOption = 'Command'; Text = "Get-PSModuleSummary " }
    @{ LineOption = 'Parameter'; Text = "-ModuleName " }
    @{ LineOption = 'Value'; Text = ".\PSModuleQuantityAnalyzer.psd1" }
)

Write-Syntax -Segment @(
    @{ LineOption = 'Command'; Text = " Get-PSModuleQuantity " }
    @{ LineOption = 'Parameter'; Text = "-ModuleName " }
    @{ LineOption = 'Value'; Text = "PSModuleQuantityAnalyzer " }
    @{ LineOption = 'WordDelimiters'; Text = "| " }
    @{ LineOption = 'ScriptBlockArguments'; Text = "Where-Object " }
    @{ LineOption = 'Member'; Text = "{" }
    @{ LineOption = 'Variable'; Text = "`$_" }
    @{ LineOption = 'Member'; Text = ".Type " }
    @{ LineOption = 'Operator'; Text = "-eq " }
    @{ LineOption = 'ValueQuoted'; Text = "'Private' " } 
    @{ LineOption = 'Operator'; Text = "-and " }
    @{ LineOption = 'Variable'; Text = "`$_" }
    @{ LineOption = 'Member'; Text = ".References " }
    @{ LineOption = 'Operator'; Text = "-eq " }
    @{ LineOption = 'Number'; Text = "0" }
    @{ LineOption = 'Member'; Text = "} " }
    @{ LineOption = 'WordDelimiters'; Text = "| " }
    @{ LineOption = 'ScriptBlockArguments'; Text = "ft" }
)

Write-Syntax -Segment @(
    @{ LineOption = 'Command'; Text = " Export-PSModuleMarkdownReport " }
    @{ LineOption = 'Parameter'; Text = "-ModuleName " }
    @{ LineOption = 'Value'; Text = "PSModuleQuantityAnalyzer " }
)

Write-host "`n"
$host.ui.RawUI.WindowTitle = "$SAModuleName - $($SAModuleManifest.Version)"