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


$code = "Get-PSModuleSummary -ModuleName .\PSModuleQuantityAnalyzer.psd1"
Write-Syntax -Code $code

$code = " Get-PSModuleQuantity -ModuleName PSModuleQuantityAnalyzer | Where-Object {`$_.Type -eq 'Private' -and `$_.References -eq 0} | ft"
Write-Syntax -Code $code
$code = " Get-PSModuleUnusedPrivateFunctions -ModuleName PSModuleQuantityAnalyzer | Select-Object Function, TotalLines, ModificationDate, PartOfFile | ft"
Write-Syntax -Code $code
$code = " Get-PSModuleDuplicateFunctions -ModuleName PSModuleQuantityAnalyzer | Select-Object Function, TotalLines, DuplicateCount, PartOfFile | ft"
Write-Syntax -Code $code
$code = " Get-PSModuleUsedVerbs -ModuleName '.\as2go.psd1' | Select-object Verb, Count | Sort-object Verb"
Write-Syntax -Code $code
$code = " Export-PSModuleMarkdownReport -ModuleName PSModuleQuantityAnalyzer"
Write-Syntax -Code $code

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