Add functions for configuration data handling and extend template merging capabilities
This commit is contained in:
49
Private/Merge-ConfigurationDataTemplateFile.ps1
Normal file
49
Private/Merge-ConfigurationDataTemplateFile.ps1
Normal file
@@ -0,0 +1,49 @@
|
||||
function Merge-ConfigurationDataTemplateFile {
|
||||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter(Mandatory=$true)]
|
||||
[string[]]
|
||||
$Path,
|
||||
|
||||
[Parameter(Mandatory=$false)]
|
||||
[switch]
|
||||
$PassThru
|
||||
)
|
||||
|
||||
$MergeFiles = @()
|
||||
$AddedFiles = @{}
|
||||
|
||||
foreach($Item in $Path){
|
||||
foreach($File in @(Get-ConfigurationDataTemplateMergeFile -Path $Item)){
|
||||
if(-not $AddedFiles.ContainsKey($File)){
|
||||
$MergeFiles += $File
|
||||
$AddedFiles[$File] = $true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$MergedConfigurationData = $null
|
||||
foreach($File in $MergeFiles){
|
||||
$TemplateData = Import-PowerShellDataFile -Path $File
|
||||
if($null -eq $MergedConfigurationData){
|
||||
$MergedConfigurationData = Copy-ConfigurationDataValue -Value $TemplateData
|
||||
if($MergedConfigurationData -is [System.Collections.IDictionary] -and (Test-ConfigurationDataDictionaryKey -Dictionary $MergedConfigurationData -Key "Metadata")){
|
||||
$MergedConfigurationData.Remove("Metadata")
|
||||
}
|
||||
}else{
|
||||
$MergedConfigurationData = Merge-DSCConfigurationData -Template $MergedConfigurationData -Deployment $TemplateData
|
||||
if($MergedConfigurationData -is [System.Collections.IDictionary] -and (Test-ConfigurationDataDictionaryKey -Dictionary $MergedConfigurationData -Key "Metadata")){
|
||||
$MergedConfigurationData.Remove("Metadata")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($PassThru){
|
||||
return [PSCustomObject]@{
|
||||
Files = $MergeFiles
|
||||
ConfigurationData = $MergedConfigurationData
|
||||
}
|
||||
}
|
||||
|
||||
return $MergedConfigurationData
|
||||
}
|
||||
Reference in New Issue
Block a user