Files
winutil/Compile.ps1
T

82 lines
2.2 KiB
PowerShell
Raw Normal View History

2024-06-10 15:24:12 -05:00
param (
[switch]$Run,
[switch]$Trace
2024-06-10 15:24:12 -05:00
)
$OFS = "`r`n"
2024-06-10 15:24:12 -05:00
function Get-WinUtilTraceStrippedContent {
param(
[Parameter(Mandatory = $true)]
[string]$Content
)
if ($Trace) {
return $Content
}
$filteredLines = $Content -split "`r?`n" | Where-Object {
$_ -notmatch '^\s*(Start-WinUtilPerformanceTrace|Stop-WinUtilPerformanceTrace|Write-WinUtilPerformanceCheckpoint)\b'
}
$filteredLines -join "`r`n"
}
2024-02-21 16:06:27 -06:00
# Variable to sync between runspaces
$sync = [Hashtable]::Synchronized(@{})
$sync.configs = @{}
+3
2023-03-07 12:28:00 -08:00
$script = (Get-Content -Path scripts\start.ps1) -replace '#{replaceme}', (Get-Date -Format 'yy.MM.dd')
$script += Get-ChildItem -Path functions -Recurse -File | ForEach-Object {
Get-WinUtilTraceStrippedContent -Content (Get-Content -Path $_.FullName -Raw)
}
if ($Trace) {
$script += Get-ChildItem -Path tools\perf -Filter *.ps1 -File | Get-Content -Raw
$script += @'
$sync.PerformanceTraceEnabled = $true
Start-WinUtilPerformanceTrace
Write-WinUtilPerformanceCheckpoint -Name "Config load start"
'@
}
+3
2023-03-07 12:28:00 -08:00
2026-05-19 20:40:02 +03:00
Get-ChildItem config | ForEach-Object {
$obj = Get-Content -Path $_.FullName -Raw | ConvertFrom-Json
2026-05-19 20:40:02 +03:00
if ($_.Name -eq "applications.json") {
$fixed = [ordered]@{}
foreach ($p in $obj.PSObject.Properties) {
$fixed["WPFInstall$($p.Name)"] = $p.Value
}
2026-05-19 20:40:02 +03:00
$obj = [pscustomobject]$fixed
}
2026-05-19 20:40:02 +03:00
$json = $obj | ConvertTo-Json -Depth 10
+1
2024-04-20 16:38:43 -05:00
2026-05-19 20:40:02 +03:00
$sync.configs[$_.BaseName] = $obj
$script += "`$sync.configs.$($_.BaseName) = @'`r`n$json`r`n'@ | ConvertFrom-Json"
if ($Trace) {
$script += "`r`nWrite-WinUtilPerformanceCheckpoint -Name `"Config $($_.BaseName) loaded`""
}
}
if ($Trace) {
$script += "`r`nWrite-WinUtilPerformanceCheckpoint -Name `"Config load complete`""
+3
2023-03-07 12:28:00 -08:00
}
$xaml = Get-Content -Path xaml\inputXML.xaml -Raw
$script += "`$inputXML = @'`r`n$xaml`r`n'@"
2024-03-21 16:58:40 -07:00
$autounattendXml = Get-Content -Path tools\autounattend.xml -Raw
$script += "`$WinUtilAutounattendXml = @'`r`n$autounattendXml`r`n'@"
2024-03-21 16:58:40 -07:00
$script += Get-WinUtilTraceStrippedContent -Content (Get-Content -Path scripts\main.ps1 -Raw)
2024-06-10 15:24:12 -05:00
2026-05-19 20:40:02 +03:00
Set-Content -Path winutil.ps1 -Value $script
2024-08-07 15:24:26 -05:00
2026-05-19 20:40:02 +03:00
if ($Run) {
.\Winutil.ps1
}