functions/System/Invoke-HardeningHTMLReport.ps1

function Invoke-HardeningHTMLReport {
    <#
    .SYNOPSIS
    Generates HTML report from markdown documentation with module loading.

    .DESCRIPTION
    Convenience function that loads the Core module and calls New-HardeningHTMLReport
    to convert markdown documentation into a professional HTML report. Provides
    user-friendly error handling and output messages.

    .PARAMETER MarkdownFile
    Path to markdown file to convert. Default: COMPLETE_TESTING_GUIDE.md

    .PARAMETER OutputFile
    Path where HTML report will be saved.
    Default: C:\Reports\WinHarden\WinHarden_Testing_Report.html

    .PARAMETER Confirm
    Prompts for confirmation before generating the report.

    .PARAMETER WhatIf
    Shows what would happen without making changes.

    .EXAMPLE
    Invoke-HardeningHTMLReport

    Uses default paths to generate HTML report from COMPLETE_TESTING_GUIDE.md

    .EXAMPLE
    Invoke-HardeningHTMLReport -MarkdownFile "C:\Docs\Guide.md" -OutputFile "C:\Reports\Report.html"

    Generates report from custom markdown file.

    .EXAMPLE
    Invoke-HardeningHTMLReport -WhatIf

    Shows what would happen without creating the report.

    .NOTES
    - Loads Core module automatically if not already loaded
    - Calls New-HardeningHTMLReport from Core module
    - Returns FileInfo object for generated HTML file
    - Compatible with PowerShell 5.1+

    .OUTPUTS
    System.IO.FileInfo
    Returns file info object for the generated HTML report.
    #>


    [CmdletBinding(SupportsShouldProcess)]
    param(
        [string]$MarkdownFile = "C:\Repos\WinHarden\docs\testing\COMPLETE_TESTING_GUIDE.md",
        [string]$OutputFile = "C:\Reports\WinHarden\WinHarden_Testing_Report.html"
    )

    $ErrorActionPreference = 'Stop'

    try {
        # Determine Core module path
        $corePath = $null
        if (Test-Path ".\modules\Core.psm1") {
            $corePath = ".\modules\Core.psm1"
        }
        elseif (Test-Path "C:\Repos\WinHarden\modules\Core.psm1") {
            $corePath = "C:\Repos\WinHarden\modules\Core.psm1"
        }

        if ($null -eq $corePath) {
            throw "Core module not found in expected locations"
        }

        # Load Core module if not already loaded
        if (-not (Get-Module Core -ErrorAction SilentlyContinue)) {
            Import-Module $corePath -Force -ErrorAction Stop | Out-Null
            Write-Verbose "Loaded Core module from: $corePath"
        }
        else {
            Write-Verbose "Core module already loaded"
        }

        # Call New-HardeningHTMLReport function
        Write-Verbose "Invoking New-HardeningHTMLReport..."
        $result = New-HardeningHTMLReport -MarkdownFile $MarkdownFile -OutputFile $OutputFile -Confirm:$Confirm -WhatIf:$WhatIf

        if ($result) {
            Write-Output "[OK] HTML Report generated successfully"
            Write-Output "[OK] Output file: $($result.FullName)"
            Write-Output "[OK] File size: $([Math]::Round($result.Length / 1KB, 2)) KB"
        }

        return $result
    }
    catch {
        Write-Error -Message "Failed to generate HTML report: $_" -ErrorAction Stop
    }
}