97 lines
2.7 KiB
PowerShell
97 lines
2.7 KiB
PowerShell
Param(
|
|
[string]$configPath
|
|
)
|
|
function InitConfiguration($savePath = $configurationXmlPath)
|
|
{
|
|
$configInfo = [xml](Get-Content "$configurationTemplatePath")
|
|
if ($env:PROCESSOR_ARCHITECTURE -eq "x86")
|
|
{
|
|
$x64info = $configInfo.Configuration.x64
|
|
$x64info.libpq.include = ""
|
|
$x64info.libpq.lib = ""
|
|
$x64info.libpq.bin = ""
|
|
}
|
|
$configInfo.save("$savePath")
|
|
|
|
return $configInfo
|
|
}
|
|
|
|
function global:GetConfiguration($loadPath = $configurationXmlPath)
|
|
{
|
|
$configInfo = [xml] (Get-Content "$loadPath")
|
|
set-variable -name xmlFormatVersion -value "0.4" -option constant
|
|
if ($configInfo.Configuration.formatVersion -ne $xmlFormatVersion)
|
|
{
|
|
$xmlDoc2 = [xml](Get-Content "$configurationTemplatePath")
|
|
$root2 = $XmlDoc2.get_DocumentElement()
|
|
$root1 = $configInfo.get_DocumentElement()
|
|
unifyNodes $root1 $root2
|
|
|
|
$root1.formatVersion = $xmlFormatVersion
|
|
$configInfo.save("$loadPath")
|
|
}
|
|
|
|
return $configInfo
|
|
}
|
|
|
|
function global:SaveConfiguration($configInfo, $savePath = $configurationXmlPath)
|
|
{
|
|
$configInfo.save("$savePath")
|
|
}
|
|
|
|
function global:unifyNodes($node1, $node2)
|
|
{
|
|
$attributes2 = $node2.get_Attributes()
|
|
if ($attributes2.Count -gt 0)
|
|
{
|
|
$attributes1 = $node1.get_Attributes()
|
|
foreach ($attrib in $attributes2)
|
|
{
|
|
$attribname = $attrib.name
|
|
if (($attributes1.Count -eq 0) -or ($attributes1.GetNamedItem($attribname) -eq $null))
|
|
{
|
|
Write-Debug " Adding attribute=$attribname"
|
|
$addattr = $node1.OwnerDocument.ImportNode($attrib, $true)
|
|
$added = $attributes1.Append($addattr)
|
|
}
|
|
}
|
|
}
|
|
if (!$node2.get_HasChildNodes()) {
|
|
return;
|
|
}
|
|
foreach ($child2 in $node2.get_ChildNodes())
|
|
{
|
|
$nodename = $child2.get_Name()
|
|
if ($nodename -eq "#text"){
|
|
continue
|
|
}
|
|
$matchnode = $node1.SelectSingleNode($nodename)
|
|
if ($matchnode -eq $null)
|
|
{
|
|
Write-Debug "Adding node=$nodename"
|
|
$addnode = $node1.OwnerDocument.ImportNode($child2, $true)
|
|
$added = $node1.AppendChild($addnode)
|
|
continue
|
|
}
|
|
unifyNodes $matchnode $child2
|
|
}
|
|
}
|
|
|
|
Write-Debug "configPath=$configPath"
|
|
$global:LIBPQ_VERSION="9.3"
|
|
$scriptPath = [System.IO.Path]::GetDirectoryName($myInvocation.MyCommand.Definition)
|
|
$global:configurationTemplatePath = "$scriptPath\configuration_template.xml"
|
|
$global:configurationXmlPath = $configPath
|
|
if ($configurationXmlPath -eq "") {
|
|
$global:configurationXmlPath = "$scriptPath\configuration.xml"
|
|
}
|
|
if (!(Test-Path -path $configurationXmlPath))
|
|
{
|
|
InitConfiguration
|
|
}
|
|
else
|
|
{
|
|
GetConfiguration
|
|
}
|
|
Return
|