PS.Tools.DataSet.psm1

# Load module helper functions
.(Join-Path -Path $PSScriptRoot -ChildPath '\include\ModuleHelperFunctions.ps1')

Initialize-ModuleConfiguration
Initialize-PSLogSettings

# Import public and private functions files
Get-ChildItem -Path (Get-ModuleConfiguration).ModuleRootPath -Directory | Where-Object { $_.name -eq 'public' -or $_.name -eq 'private' } | ForEach-Object {
    Get-ChildItem -Path $_.FullName -Include '*.ps1' -Recurse -Exclude '*.Tests.*' | ForEach-Object {
        . $_.FullName
    }
}

# Evaluate compatible powershell editions
$Continue = $true
$ManifestContent = (Get-ModuleConfiguration).ModuleManifest
if ($ManifestContent.ContainsKey('CompatiblePSEditions')) {
    if (-not ($ManifestContent.CompatiblePSEditions.Contains($PSVersionTable.PSEdition))) {
        throw ('This module does not support the current PSEdition: [{0}]' -f $PSVersionTable.PSEdition)
        $Continue = $false
    }
}

if ($Continue) {
    # Test script hash
    $ModuleRootPath = (Get-ModuleConfiguration).ModuleRootPath
    $IncludeDirectory = (Get-ModuleConfiguration).ModuleFolders.Include
    $AllScriptFilesCases = Get-ChildItem -Path $ModuleRootPath -Include "*.ps1", "*.psm1", "*.psd1" -Recurse | Where-Object { $_.fullname -notlike ('{0}\*' -f $IncludeDirectory) }
    $Passing = $true
    $AllScriptFilesCases | foreach-object {
        $AuthResult = Get-AuthenticodeSignature -FilePath $PSItem.FullName | Select-Object -ExpandProperty Status
        if ($AuthResult -eq 'HashMismatch') {
            $Passing = $false
            Write-CheckListItem -Message ('Hash validation failed: {0}' -f $PSItem.Name)
        }
    }
    if ($Passing -eq $false) {
        break
    }
}