Private/Write-Files.ps1

Function Write-Files($logger, $results, $quiet) {
    <#
    .DESCRIPTION
    Interrogates the logger class. If log files should be written, then create them according to the Logger config
    .PARAMETER logger
    The logger class instance
    .PARAMETER results
    Processed files result ArrayList
    .PARAMETER quiet
    Silence verbose writing to host
    #>


    # if we don't want to write logs then gtfo
    if (-Not $logger.WriteLogs) {
        return
    }

    # create the output directory
    $null = [System.IO.Directory]::CreateDirectory("$($logger.Dir)")

    # write the text log file
    if (-Not $quiet) {
        Write-Host("")
        Write-Host("Writing log file : $($logger.LogFile())")
    }

    $stream = [System.IO.StreamWriter]::new("$($logger.LogFile())")

    $ResolutionHeader | ForEach-Object{ $stream.WriteLine($_) }

    $results | Sort-Object -Property Width | ForEach-Object { $stream.WriteLine($_.ResultLine()) }

    $NameHeader | ForEach-Object{ $stream.WriteLine($_) }

    $results | Sort-Object -Property File | ForEach-Object { $stream.WriteLine($_.ResultLine()) }

    $stream.close()

    # write the json log file
    if (-Not $quiet) {
        Write-Host("")
        Write-Host("Writing json file : $($logger.LogFile())")
    }

    $results | ConvertTo-Json -Depth 4 | Out-File "$($logger.JsonFile())"
}