Skip to content

Commit 1188f8a

Browse files
Cleanup the install PS scripts. (#132)
1 parent 93bd41a commit 1188f8a

1 file changed

Lines changed: 30 additions & 27 deletions

File tree

  • src/Packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/tools

src/Packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/tools/common.ps1

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,14 @@ function InstallCodeDomProvider($providerDescription) {
3636
##### Add the default provider if it wasn't rehydrated above
3737
$defaultProvider = $config.xml.configuration["system.codedom"].compilers.compiler | where { $_.extension -eq $providerDescription.FileExtension }
3838
if ($defaultProvider -eq $null) { AddDefaultDeclaration $config $providerDescription }
39-
SaveConfigFile $config
39+
SaveConfigFile $config | Out-Null
4040
}
4141

4242
function UninstallCodeDomProvider($providerType) {
4343
##### Dehydrate config declarations #####
4444
$config = ReadConfigFile
4545
DehydrateDeclarations $config $providerType | Out-Null
46-
SaveConfigFile $config
46+
SaveConfigFile $config | Out-Null
4747
}
4848

4949
function GetConfigFileName() {
@@ -70,7 +70,6 @@ function ReadConfigFile() {
7070

7171
function DehydrateDeclarations($config, $typeName) {
7272
$tempFile = GetTempFileName
73-
$xml
7473
$count = 0
7574

7675
if ([io.file]::Exists($tempFile)) {
@@ -79,16 +78,15 @@ function DehydrateDeclarations($config, $typeName) {
7978
} else {
8079
$xml = New-Object System.Xml.XmlDocument
8180
$xml.PreserveWhitespace = $true
82-
$dd = $xml.CreateElement("driedDeclarations")
83-
$xml.AppendChild($dd) | Out-Null
81+
$xml.AppendChild($xml.CreateElement("driedDeclarations")) | Out-Null
8482
}
8583

8684
foreach ($rec in $config.xml.configuration["system.codedom"].compilers.compiler | where { IsSameType $_.type $typeName }) {
8785
# Remove records from config.
8886
$config.xml.configuration["system.codedom"].compilers.RemoveChild($rec) | Out-Null
8987

9088
# Add the record to the temp stash. Don't worry about duplicates.
91-
AppendChildNode $xml.ImportNode($rec, $true) $xml.DocumentElement
89+
AppendChildNode $xml.ImportNode($rec, $true) $xml.DocumentElement | Out-Null
9290
$count++
9391
}
9492

@@ -116,8 +114,9 @@ function RehydrateOldDeclarations($config, $providerDescription) {
116114
if ($existingRecord -ne $null) { continue }
117115

118116
# Bring the record back to life
119-
AppendChildNode $config.xml.ImportNode($rec, $true) $config.xml.configuration["system.codedom"]["compilers"]
117+
AppendChildNode $config.xml.ImportNode($rec, $true) $config.xml.configuration["system.codedom"]["compilers"] | Out-Null
120118
$count++
119+
Write-Host "Restored system.codedom compiler for extension '$($rec.extension)'."
121120
}
122121

123122
# Make dried record removal permanent
@@ -130,18 +129,15 @@ function UpdateDeclarations($config, $providerDescription) {
130129
$count = 0
131130

132131
foreach ($provider in $config.xml.configuration["system.codedom"].compilers.compiler | where { IsSameType $_.type ($providerDescription.TypeName + "," + $providerDescription.Assembly) }) {
133-
# Count the existing declaration as found
134-
$count++
135132

136-
# Update type
137-
$provider.type = "$($providerDescription.TypeName), $($providerDescription.Assembly), Version=$($providerDescription.Version), Culture=neutral, PublicKeyToken=31bf3856ad364e35"
133+
$failed = $false
138134

139135
# Add default attributes if they are required and not already present
140136
foreach ($p in $providerDescription.Parameters | where { ($_.IsRequired -eq $true) -and ($_.IsProviderOption -eq $false) }) {
141137
if ($provider.($p.Name) -eq $null) {
142138
if ($p.DefaultValue -eq $null) {
143-
Write-Host "Failed to add parameter to '$($provider.name)' codeDom provider: '$($p.Name)' is required, but does not have a default value."
144-
return
139+
Write-Warning "Failed to add parameter to '$($provider.name)' codeDom provider: '$($p.Name)' is required, but does not have a default value."
140+
$failed = $true
145141
}
146142
$attr = $config.xml.CreateAttribute($p.Name)
147143
$attr.Value = $p.DefaultValue
@@ -154,15 +150,21 @@ function UpdateDeclarations($config, $providerDescription) {
154150
$existing = $provider.providerOption | where { $_.name -eq $p.Name }
155151
if ($existing -eq $null) {
156152
if ($p.DefaultValue -eq $null) {
157-
Write-Host "Failed to add providerOption to '$($provider.name)' codeDom provider: '$($p.Name)' is required, but does not have a default value."
158-
return
153+
Write-Warning "Failed to add providerOption to '$($provider.name)' codeDom provider: '$($p.Name)' is required, but does not have a default value."
154+
$failed = $true
159155
}
160156
$po = $config.xml.CreateElement("providerOption")
161-
$po.SetAttribute("name", $p.Name)
162-
$po.SetAttribute("value", $p.DefaultValue)
163-
AppendChildNode $po $provider 4
157+
$po.SetAttribute("name", $p.Name) | Out-Null
158+
$po.SetAttribute("value", $p.DefaultValue) | Out-Null
159+
AppendChildNode $po $provider 4 | Out-Null
164160
}
165161
}
162+
163+
# Finally, update type. And do so with remove/add so the 'type' parameter gets put at the end
164+
$provider.RemoveAttribute("type") | Out-Null
165+
$provider.SetAttribute("type", "$($providerDescription.TypeName), $($providerDescription.Assembly), Version=$($providerDescription.Version), Culture=neutral, PublicKeyToken=31bf3856ad364e35") | Out-Null
166+
167+
if ($failed -ne $true) { $count++ }
166168
}
167169

168170
return $count
@@ -172,7 +174,7 @@ function AddDefaultDeclaration($config, $providerDescription) {
172174
$dd = $config.xml.CreateElement("compiler")
173175

174176
# file extension first
175-
$dd.SetAttribute("extension", $providerDescription.FileExtension)
177+
$dd.SetAttribute("extension", $providerDescription.FileExtension) | Out-Null
176178

177179
# everything else in the middle
178180
foreach ($p in $providerDescription.Parameters) {
@@ -184,19 +186,20 @@ function AddDefaultDeclaration($config, $providerDescription) {
184186
if ($p.DefaultValue -ne $null) {
185187
if ($p.IsProviderOption -eq $true) {
186188
$po = $config.xml.CreateElement("providerOption")
187-
$po.SetAttribute("name", $p.Name)
188-
$po.SetAttribute("value", $p.DefaultValue)
189-
AppendChildNode $po $dd 4
189+
$po.SetAttribute("name", $p.Name) | Out-Null
190+
$po.SetAttribute("value", $p.DefaultValue) | Out-Null
191+
AppendChildNode $po $dd 4 | Out-Null
190192
} else {
191-
$dd.SetAttribute($p.Name, $p.DefaultValue)
193+
$dd.SetAttribute($p.Name, $p.DefaultValue) | Out-Null
192194
}
193195
}
194196
}
195197

196198
# type last
197-
$dd.SetAttribute("type", "$($providerDescription.TypeName), $($providerDescription.Assembly), Version=$($providerDescription.Version), Culture=neutral, PublicKeyToken=31bf3856ad364e35")
199+
$dd.SetAttribute("type", "$($providerDescription.TypeName), $($providerDescription.Assembly), Version=$($providerDescription.Version), Culture=neutral, PublicKeyToken=31bf3856ad364e35") | Out-Null
198200

199-
AppendChildNode $dd $config.xml.configuration["system.codedom"]["compilers"]
201+
AppendChildNode $dd $config.xml.configuration["system.codedom"]["compilers"] | Out-Null
202+
Write-Host "Added system.codedom compiler for extension '$($dd.extension)'."
200203
}
201204

202205
function AppendChildNode($provider, $parent, $indentLevel = 3) {
@@ -215,7 +218,7 @@ function AppendChildNode($provider, $parent, $indentLevel = 3) {
215218
}
216219

217220
# Add on a new line with indents. Make sure there is no existing whitespace mucking this up.
218-
foreach ($exws in $parent.ChildNodes | where { $_ -is [System.Xml.XmlWhitespace] }) { $parent.RemoveChild($exws) }
221+
foreach ($exws in $parent.ChildNodes | where { $_ -is [System.Xml.XmlWhitespace] }) { $parent.RemoveChild($exws) | Out-Null }
219222
$parent.AppendChild($parent.OwnerDocument.CreateWhitespace("`r`n")) | Out-Null
220223
$parent.AppendChild($parent.OwnerDocument.CreateWhitespace(" " * $indentLevel)) | Out-Null
221224
$parent.AppendChild($provider) | Out-Null
@@ -224,7 +227,7 @@ function AppendChildNode($provider, $parent, $indentLevel = 3) {
224227
}
225228

226229
function SaveConfigFile($config) {
227-
$config.xml.Save($config.fileName)
230+
$config.xml.Save($config.fileName) | Out-Null
228231
}
229232

230233
function IsSameType($typeString1, $typeString2) {

0 commit comments

Comments
 (0)