C#: Rely on CLI to cleanup scratch dir

This commit is contained in:
Tom Hvitved
2023-09-26 09:15:19 +02:00
parent 5adacb8477
commit ef699e5195

View File

@@ -32,6 +32,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
private readonly FileContent fileContent;
private readonly TemporaryDirectory packageDirectory;
private readonly TemporaryDirectory tempWorkingDirectory;
private readonly bool cleanupTempWorkingDirectory;
/// <summary>
/// Performs C# dependency fetching.
@@ -59,7 +60,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
this.progressMonitor.FindingFiles(srcDir);
packageDirectory = new TemporaryDirectory(ComputeTempDirectory(sourceDir.FullName));
tempWorkingDirectory = new TemporaryDirectory(GetTemporaryWorkingDirectory());
tempWorkingDirectory = new TemporaryDirectory(GetTemporaryWorkingDirectory(out cleanupTempWorkingDirectory));
var allFiles = GetAllFiles();
var binaryFileExtensions = new HashSet<string>(new[] { ".dll", ".exe" }); // TODO: add more binary file extensions.
@@ -285,8 +286,9 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
return Path.Combine(Path.GetTempPath(), "GitHub", "packages", sb.ToString());
}
private static string GetTemporaryWorkingDirectory()
private static string GetTemporaryWorkingDirectory(out bool cleanupTempWorkingDirectory)
{
cleanupTempWorkingDirectory = false;
var tempFolder = EnvironmentVariables.GetScratchDirectory();
if (string.IsNullOrEmpty(tempFolder))
@@ -294,6 +296,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
var tempPath = Path.GetTempPath();
var name = Guid.NewGuid().ToString("N").ToUpper();
tempFolder = Path.Combine(tempPath, "GitHub", name);
cleanupTempWorkingDirectory = true;
}
return tempFolder;
@@ -574,7 +577,8 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
public void Dispose()
{
packageDirectory?.Dispose();
tempWorkingDirectory?.Dispose();
if (cleanupTempWorkingDirectory)
tempWorkingDirectory?.Dispose();
}
}
}