TireFire.psm1
# Dot source public/private functions $public = @(Get-ChildItem -Path (Join-Path -Path $PSScriptRoot -ChildPath 'public/*.ps1') -Recurse -ErrorAction Stop) $private = @(Get-ChildItem -Path (Join-Path -Path $PSScriptRoot -ChildPath 'private/*.ps1') -Recurse -ErrorAction Stop) foreach ($import in @($public + $private)) { try { . $import.FullName } catch { throw "Unable to dot source [$($import.FullName)]" } } $TireFireConfig = @{ Backend = 'File' BackendConfig = @{ } BackendPath = [string[]]'Default' } # Append default to end if specified if($TireFireConfig.BackendPath -notcontains 'Default'){ $TireFireConfig.BackendPath += 'Default' } [array]::reverse($TireFireConfig.BackendPath) $BackendHash = @{} foreach($Path in $TireFireConfig.BackendPath){ if($Path -eq 'Default'){ $Path = Join-Path $PSScriptRoot Backends } Write-Verbose "Checking $Path for Backend scripts" $Directories = @(Get-ChildItem -Path $Path -Directory) foreach($Backend in $Directories){ if(-not $BackendHash.ContainsKey($Backend.BaseName)){ Write-Verbose "Adding [$($Backend.Fullname)] backend from path [$SPath]" $BackendScripts = @{} 'New', 'Get', 'Set', 'Remove' | ForEach-Object { $ExpectedFileName = "{0}{1}.ps1" -f $_, $Backend.BaseName $ExpectedScript = Join-Path $Backend.FullName $ExpectedFileName if(-not (Test-Path $ExpectedScript -ErrorAction SilentlyContinue)){ Write-Warning "[$($Backend.BaseName)] backend does not contain expected [$_] script at [$($ExpectedScript.Fullname)]" } else { $BackendScripts.add($_, $ExpectedScript) } } $BackendHash.add($Backend.BaseName, $BackendScripts) } else { Write-Verbose "Skipping [$($Backend.Fullname)]. Change BackendPath precedence if needed" } } } Export-ModuleMember -Function $public.Basename |