HomeAssistantX.Libraries.ps1
|
# HomeAssistantX.Libraries.ps1 # Auto-generated by PowerForge. Do not edit. $LibrariesByFolder = @{ 'Core' = @( 'Lib\Core\NodaTime.dll' 'Lib\Core\TimeZoneConverter.dll' 'Lib\Core\HomeAssistantX.dll' 'Lib\Core\HomeAssistantX.PowerShell.dll' ) 'Default' = @( 'Lib\Default\System.Buffers.dll' 'Lib\Default\System.Numerics.Vectors.dll' 'Lib\Default\System.Runtime.CompilerServices.Unsafe.dll' 'Lib\Default\NodaTime.dll' 'Lib\Default\System.Memory.dll' 'Lib\Default\System.Text.Encodings.Web.dll' 'Lib\Default\System.Threading.Tasks.Extensions.dll' 'Lib\Default\Microsoft.Bcl.AsyncInterfaces.dll' 'Lib\Default\System.IO.Pipelines.dll' 'Lib\Default\System.Text.Json.dll' 'Lib\Default\System.Threading.Channels.dll' 'Lib\Default\TimeZoneConverter.dll' 'Lib\Default\HomeAssistantX.dll' 'Lib\Default\HomeAssistantX.PowerShell.dll' ) 'Standard' = @( 'Lib\Standard\System.Buffers.dll' 'Lib\Standard\System.Numerics.Vectors.dll' 'Lib\Standard\System.Runtime.CompilerServices.Unsafe.dll' 'Lib\Standard\NodaTime.dll' 'Lib\Standard\System.Memory.dll' 'Lib\Standard\System.Text.Encodings.Web.dll' 'Lib\Standard\System.Threading.Tasks.Extensions.dll' 'Lib\Standard\Microsoft.Bcl.AsyncInterfaces.dll' 'Lib\Standard\System.IO.Pipelines.dll' 'Lib\Standard\System.Text.Json.dll' 'Lib\Standard\System.Threading.Channels.dll' 'Lib\Standard\TimeZoneConverter.dll' 'Lib\Standard\HomeAssistantX.dll' 'Lib\Standard\HomeAssistantX.PowerShell.dll' ) } $LibRoot = [IO.Path]::Combine($PSScriptRoot, 'Lib') $AssemblyFolders = Get-ChildItem -LiteralPath $LibRoot -Directory -ErrorAction SilentlyContinue $Root = @(Get-ChildItem -LiteralPath $LibRoot -File -ErrorAction SilentlyContinue | Where-Object Extension -IEQ '.dll').Count -gt 0 $Default = $false $Core = $false $Standard = $false foreach ($A in $AssemblyFolders.Name) { if ($A -eq 'Default') { $Default = $true } elseif ($A -eq 'Core') { $Core = $true } elseif ($A -eq 'Standard') { $Standard = $true } } if ($Standard -and $Core -and $Default) { $FrameworkNet = 'Default' $Framework = 'Standard' } elseif ($Standard -and $Core) { $Framework = 'Standard' $FrameworkNet = 'Standard' } elseif ($Core -and $Default) { $Framework = 'Core' $FrameworkNet = 'Default' } elseif ($Standard -and $Default) { $Framework = 'Standard' $FrameworkNet = 'Default' } elseif ($Standard) { $Framework = 'Standard' $FrameworkNet = 'Standard' } elseif ($Core) { $Framework = 'Core' $FrameworkNet = '' } elseif ($Default) { $Framework = '' $FrameworkNet = 'Default' } elseif ($Root) { $Framework = '' $FrameworkNet = '' } else { #Write-Error -Message 'No assemblies found' } if ($PSEdition -eq 'Core') { $PowerForgeRuntimeVersion = [Environment]::Version $PowerForgeCoreBaselineVersion = $null if ($Core) { $PowerForgeCoreMarkerPath = [IO.Path]::Combine($LibRoot, 'Core', 'PowerForge.TargetFramework.txt') if (Test-Path -LiteralPath $PowerForgeCoreMarkerPath -PathType Leaf) { try { $PowerForgeCoreTargetFramework = [IO.File]::ReadAllText($PowerForgeCoreMarkerPath).Trim() if ($PowerForgeCoreTargetFramework -match '^net(?:coreapp)?(\d+\.\d+)$') { $PowerForgeCoreBaselineVersion = [Version]$Matches[1] } } catch { $PowerForgeCoreBaselineVersion = $null } } } $PowerForgeSelectedRuntimeVersion = [Version]'0.0' $PowerForgeSelectedRuntimeFolder = $null if ($Core -and $null -ne $PowerForgeCoreBaselineVersion -and $PowerForgeCoreBaselineVersion -le $PowerForgeRuntimeVersion) { $PowerForgeSelectedRuntimeVersion = $PowerForgeCoreBaselineVersion $PowerForgeSelectedRuntimeFolder = 'Core' } foreach ($PowerForgeRuntimeFolder in @($AssemblyFolders.Name)) { if ($PowerForgeRuntimeFolder -notmatch '^Core-(?:net|netcoreapp)(\d+\.\d+)$') { continue } try { $PowerForgeCandidateRuntimeVersion = [Version]$Matches[1] } catch { continue } if ($PowerForgeCandidateRuntimeVersion -le $PowerForgeRuntimeVersion -and $PowerForgeCandidateRuntimeVersion -gt $PowerForgeSelectedRuntimeVersion -and (Test-Path -LiteralPath ([IO.Path]::Combine($LibRoot, $PowerForgeRuntimeFolder)))) { $PowerForgeSelectedRuntimeVersion = $PowerForgeCandidateRuntimeVersion $PowerForgeSelectedRuntimeFolder = $PowerForgeRuntimeFolder } } if (-not [string]::IsNullOrWhiteSpace($PowerForgeSelectedRuntimeFolder)) { $Framework = $PowerForgeSelectedRuntimeFolder } elseif ($Core -and (-not $Standard -or ($null -ne $PowerForgeCoreBaselineVersion -and $PowerForgeCoreBaselineVersion -le $PowerForgeRuntimeVersion))) { $Framework = 'Core' } elseif ($Standard) { $Framework = 'Standard' } } if ($PSEdition -eq 'Core') { $LibFolder = $Framework } else { $LibFolder = $FrameworkNet } $LibraryFoldersToLoad = @($LibFolder) if ($null -ne $ResolvePowerForgeModuleAssembly) { $PowerForgeLibrariesRoot = [IO.Path]::GetFullPath($LibRoot) $PowerForgeLibrariesRootPrefix = $PowerForgeLibrariesRoot if (-not $PowerForgeLibrariesRootPrefix.EndsWith([IO.Path]::DirectorySeparatorChar.ToString(), [StringComparison]::Ordinal)) { $PowerForgeLibrariesRootPrefix += [IO.Path]::DirectorySeparatorChar } foreach ($PowerForgeLibraryFileName in $LibraryFileNames) { try { $PowerForgeResolvedLibrary = & $ResolvePowerForgeModuleAssembly -LibraryFileName $PowerForgeLibraryFileName } catch { Write-Verbose "Skipping preload-folder discovery for '$PowerForgeLibraryFileName'. $($_.Exception.Message)" continue } $PowerForgeResolvedLibraryDirectory = [IO.Path]::GetFullPath($PowerForgeResolvedLibrary.Directory) $PowerForgeResolvedLibraryFolder = if ($PowerForgeResolvedLibraryDirectory -ieq $PowerForgeLibrariesRoot) { '' } elseif ($PowerForgeResolvedLibraryDirectory.StartsWith($PowerForgeLibrariesRootPrefix, [StringComparison]::OrdinalIgnoreCase)) { $PowerForgeResolvedLibraryDirectory.Substring($PowerForgeLibrariesRootPrefix.Length).Replace('\\', '/').Trim('/') } if ($null -ne $PowerForgeResolvedLibraryFolder -and $LibrariesByFolder.ContainsKey($PowerForgeResolvedLibraryFolder) -and $PowerForgeResolvedLibraryFolder -notin $LibraryFoldersToLoad) { $LibraryFoldersToLoad += $PowerForgeResolvedLibraryFolder } } } $LibrariesToLoad = @( foreach ($LibraryFolderToLoad in $LibraryFoldersToLoad) { if ($LibrariesByFolder.ContainsKey($LibraryFolderToLoad)) { $LibrariesByFolder[$LibraryFolderToLoad] } } ) | Select-Object -Unique foreach ($L in $LibrariesToLoad) { try { $LibraryPathParts = @($PSScriptRoot) + @($L -split '[\\/]' | Where-Object { -not [string]::IsNullOrWhiteSpace($_) }) $LibraryPath = [IO.Path]::Combine([string[]] $LibraryPathParts) Add-Type -Path $LibraryPath -ErrorAction Stop } catch { if ($_.Exception.Message -like '*Assembly with same name is already loaded*') { Write-Warning -Message "Assembly with same name is already loaded. Ignoring '$L'." } else { throw $_ } } } |