scripts/Load-Config.ps1
function Load-Config { [CmdletBinding()] param ( [Parameter(Position = 0, Mandatory = $true, ValueFromPipeline = $true)] [string]$YamlPath ) process { $config = $YamlPath | Normalize-Yaml | Normalize-Config $config.attributes.pwshake_path = "$(Split-Path $YamlPath -Resolve)" $config.attributes.pwshake_log_path = (Join-Path -Path $config.attributes.pwshake_path -ChildPath "$((Resolve-Path $YamlPath | Get-Item).BaseName).log").ToString() $config.attributes.pwshake_module_path = "$(Split-Path $PSScriptRoot -Parent)" $config.attributes.pwshake_version = (Invoke-Expression (Get-Content $PSScriptRoot\..\pwshake.psd1 -Raw)).ModuleVersion $config.attributes.work_dir = "$(Get-Location)" if (-not $config.attributes.pwshake_verbosity) { $config.attributes.pwshake_verbosity = ${pwshake-context}.verbosity } if (-not $config.scripts_directories) { $config.scripts_directories = @('.') } if (($config.scripts_directories.Count) -and (-not $config.scripts_directories.Contains('.'))) { $config.scripts_directories += '.' } if (Test-Path $config.attributes.pwshake_log_path) { Remove-Item -Path $config.attributes.pwshake_log_path -Force } return $config } } |