src/Public/Import-Configuration.ps1

function Import-Configuration {
    <#
        .SYNOPSIS
            Loads all *.psd1 Configuration Files and Imports settings.
 
        .DESCRIPTION
            Loads and Initializes *.psd1 Configuration File(s) for Scripts/Modules.
  
        .PARAMETER ConfigRoot
            Specifies the path to a directory containing the relevant *.psd1 Configuration file(s).
 
        .EXAMPLE
            PS C:\> Import-Configuration -ConfigRoot "C:\lib\powershell\config"
 
        .LINK
            https://github.com/SupernautSFX/PS.Config
 
        .NOTES
            Filename: 'Import-Configuration.ps1'
            Version: 0.5.0
            Author: N.W.P.
            CreatedOn: 09/14/21
    #>


    [CmdletBinding()]

    param(
        [Parameter(
            Mandatory = $true,
            Position = 0,
            HelpMessage = "Specify the Root Directory containing your configuration file(s)."
        )]
        [String]$ConfigRoot
    )

    BEGIN {
        Write-Verbose "[+] [SETUP]: Loading Configuration Files & Settings..."
        $ConfigFiles = Get-ChildItem $ConfigRoot -Include *.psd1 -Recurse 
        $Config = New-Object hashtable
    }

    PROCESS {
        ForEach ($ConfigFile in $ConfigFiles) {
            TRY {
                $BaseName = $ConfigFile.Name.Split('.')[0]
                $Config.BaseName = (Import-PowerShellDataFile -Path $ConfigFile.FullName)
            }

            CATCH {
                Write-Error -Message "Failed to Import or Convert PowerShell Data File: $($ConfigFile.FullName): $_" -ErrorId "LOAD-ERROR-01"
                EXIT
            }
        }
    }

    END {
        Write-Verbose "[+] [SETUP]: Finished Loading Configuration."
    }
}