IntuneHydrationKit.psm1

#Requires -Version 7.0

<#
.SYNOPSIS
    Root module for IntuneHydrationKit
.DESCRIPTION
    Hydrates Microsoft Intune tenants with best-practice baseline configurations.
#>


# Module-level variables
$script:ModuleRoot = $PSScriptRoot
$script:TemplatesPath = Join-Path -Path $script:ModuleRoot -ChildPath 'Templates'
$script:HydrationState = @{
    Connected = $false
    TenantId = $null
    Results = @{
        Groups = @()
        Policies = @()
        Baselines = @()
        Profiles = @()
        ConditionalAccess = @()
        Errors = @()
        Warnings = @()
    }
}

# Module-level state for logging
$script:LogPath = $null
$script:VerboseLogging = $false
$script:CurrentLogFile = $null

# Import private functions
$privatePath = Join-Path -Path $script:ModuleRoot -ChildPath 'Private'
if (Test-Path -Path $privatePath) {
    $privateFiles = Get-ChildItem -Path $privatePath -Filter '*.ps1' -File
    foreach ($file in $privateFiles) {
        try {
            . $file.FullName
            Write-Verbose "Imported private function: $($file.BaseName)"
        }
        catch {
            Write-Error "Failed to import private function $($file.FullName): $_"
        }
    }
}

# Import public functions
$publicPath = Join-Path -Path $script:ModuleRoot -ChildPath 'Public'
if (Test-Path -Path $publicPath) {
    $publicFiles = Get-ChildItem -Path $publicPath -Filter '*.ps1' -File
    foreach ($file in $publicFiles) {
        try {
            . $file.FullName
            Write-Verbose "Imported public function: $($file.BaseName)"
        }
        catch {
            Write-Error "Failed to import public function $($file.FullName): $_"
        }
    }
}

# Define public functions to export (must match FunctionsToExport in .psd1)
$publicFunctions = @(
    # Core hydration functions
    'Connect-IntuneHydration',
    'Test-IntunePrerequisites',
    # Import functions
    'New-IntuneDynamicGroup',
    'Get-OpenIntuneBaseline',
    'Import-IntuneBaseline',
    'Import-IntuneCompliancePolicy',
    'Import-IntuneAppProtectionPolicy',
    'Import-IntuneNotificationTemplate',
    'Import-IntuneEnrollmentProfile',
    'Import-IntuneDeviceFilter',
    'Import-IntuneConditionalAccessPolicy',
    # Helper functions
    'Initialize-HydrationLogging',
    'Write-HydrationLog',
    'Import-HydrationSettings',
    # Result helpers (used by orchestrator)
    'New-HydrationResult',
    'Get-ResultSummary',
    'Get-GraphErrorMessage',
    # Safety helpers (used by orchestrator for deletion safety checks)
    'Test-HydrationKitObject'
)

# Export functions
Export-ModuleMember -Function $publicFunctions