mirror of
https://github.com/actions/runner.git
synced 2025-12-28 12:27:48 +08:00
GitHub Actions Runner
This commit is contained in:
99
src/Trim-Sdk.ps1
Normal file
99
src/Trim-Sdk.ps1
Normal file
@@ -0,0 +1,99 @@
|
||||
$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
|
||||
}
|
||||
Reference in New Issue
Block a user