mirror of
https://github.com/actions/runner.git
synced 2025-12-28 12:27:48 +08:00
99 lines
3.4 KiB
PowerShell
99 lines
3.4 KiB
PowerShell
$ErrorActionPreference = "Stop"
|
|
|
|
# Push-Location -Path .\Sdk
|
|
try
|
|
{
|
|
# Generate Namespaces.cs
|
|
Write-Host 'Generating Namespaces.cs'
|
|
Remove-Item -Path Sdk\Namespaces.cs -ErrorAction Ignore
|
|
$namespaces = New-Object System.Collections.Generic.HashSet[string]
|
|
$output = findstr /snir /c:"^namespace " Sdk\*.cs
|
|
foreach ($outputLine in ($output.Trim().Replace("`r", "").Split("`n")))
|
|
{
|
|
$namespace = $outputLine.Trim().Split(':')[-1].Split(' ')[-1]
|
|
$namespaces.Add($namespace) | Out-Null
|
|
}
|
|
|
|
$namespaces = New-Object System.Collections.Generic.List[string]($namespaces)
|
|
$namespaces.Sort()
|
|
$content = New-Object System.Text.StringBuilder
|
|
foreach ($namespace in $namespaces)
|
|
{
|
|
$content.AppendLine("namespace $namespace") | Out-Null
|
|
$content.AppendLine("{") | Out-Null
|
|
$content.AppendLine("}") | Out-Null
|
|
$content.AppendLine("") | Out-Null
|
|
}
|
|
[System.IO.File]::WriteAllText("$pwd\Sdk\Namespaces.cs", $content.ToString(), (New-Object System.Text.UTF8Encoding($false)))
|
|
|
|
# Gather whitelist of files not to delete
|
|
Write-Host 'Gathering whitelist of files not to delete'
|
|
$whitelist = New-Object System.Collections.Generic.HashSet[string]
|
|
$whitelist.Add(((Resolve-Path -Path Sdk\Namespaces.cs).Path)) | Out-Null
|
|
foreach ($file in (Get-ChildItem -Path Sdk\DTExpressions -Recurse -Filter *.cs))
|
|
{
|
|
$whitelist.Add($file.FullName) | Out-Null
|
|
}
|
|
foreach ($file in (Get-ChildItem -Path Sdk\DTLogging -Recurse -Filter *.cs))
|
|
{
|
|
$whitelist.Add($file.FullName) | Out-Null
|
|
}
|
|
foreach ($file in (Get-ChildItem -Path Sdk\DTObjectTemplating -Recurse -Filter *.cs))
|
|
{
|
|
$whitelist.Add($file.FullName) | Out-Null
|
|
}
|
|
foreach ($file in (Get-ChildItem -Path Sdk\DTPipelines\Pipelines\ContextData -Recurse -Filter *.cs))
|
|
{
|
|
$whitelist.Add($file.FullName) | Out-Null
|
|
}
|
|
foreach ($file in (Get-ChildItem -Path Sdk\DTPipelines\Pipelines\ObjectTemplating -Recurse -Filter *.cs))
|
|
{
|
|
$whitelist.Add($file.FullName) | Out-Null
|
|
}
|
|
|
|
# Gather candidate files to delete
|
|
Write-Host 'Gathering candidate files to delete'
|
|
$candidatePaths = New-Object System.Collections.Generic.List[string]
|
|
$deletedPaths = New-Object System.Collections.Generic.List[string]
|
|
foreach ($candidateFile in (Get-ChildItem -Path Sdk -Recurse -Filter *.cs))
|
|
{
|
|
if (!$whitelist.Contains($candidateFile.FullName) -and (($candidateFile.FullName.IndexOf('\obj\')) -le 0))
|
|
{
|
|
$candidatePaths.Add($candidateFile.FullName)
|
|
}
|
|
}
|
|
|
|
while ($true)
|
|
{
|
|
$found = $false
|
|
for ($i = 0; $i -lt $candidatePaths.Count; )
|
|
{
|
|
$candidatePath = $candidatePaths[$i]
|
|
Write-Host "Checking $candidatePath"
|
|
Remove-Item -Path $candidatePath
|
|
.\dev.cmd build
|
|
if ($LASTEXITCODE -eq 0)
|
|
{
|
|
$deletedPaths.Add($candidatePath)
|
|
$candidatePaths.RemoveAt($i)
|
|
Write-Host "Successfully deleted $candidatePath"
|
|
$found = $true
|
|
}
|
|
else
|
|
{
|
|
Write-Host "Undeleting $candidatePath"
|
|
git checkout -- $candidatePath
|
|
$i++
|
|
}
|
|
}
|
|
|
|
if (!$found)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
finally
|
|
{
|
|
# Pop-Location
|
|
} |