SPMigrator.psm1

#Requires -Version 7.4
<#
    Chargeur du module SPMigrator.

    Convention : tout fichier de Private/ est interne, tout fichier de Public/
    définit exactement une fonction exportée portant le nom du fichier.
#>


Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'

$private = @(Get-ChildItem -Path (Join-Path $PSScriptRoot 'Private') -Filter '*.ps1' -ErrorAction SilentlyContinue | Sort-Object Name)
$public = @(Get-ChildItem -Path (Join-Path $PSScriptRoot 'Public') -Filter '*.ps1' -ErrorAction SilentlyContinue | Sort-Object Name)

foreach ($file in @($private + $public)) {
    try {
        . $file.FullName
    }
    catch {
        throw "Échec du chargement de $($file.Name) : $($_.Exception.Message)"
    }
}

# Fonctions du socle réutilisées par les scripts historiques et les tests :
# elles font partie du contrat public du module.
$coreExports = @(
    'Set-SPMConfiguration'
    'Get-SPMConfiguration'
    'Get-SPMStatistics'
    'Write-SPMLog'
    'Get-SPMRetryDecision'
    'Get-SPMRetryAfterSeconds'
    'Invoke-SPMWithRetry'
    'Connect-SPMSite'
    'Get-SPMSiteConnection'
    'Disconnect-SPMAllSites'
    'Get-SPMListItemByPath'
    'Test-SPMPathExists'
    'Test-SPMPrerequisite'
)

Export-ModuleMember -Function (@($public.BaseName) + $coreExports)