C#: Propagate DependabotProxy instance down from DependencyManager

This commit is contained in:
Michael B. Gale
2024-12-02 14:18:24 +00:00
parent e999ec1ecf
commit 984091d4a4
5 changed files with 13 additions and 7 deletions

View File

@@ -6,7 +6,7 @@ using Semmle.Util.Logging;
namespace Semmle.Extraction.CSharp.DependencyFetching namespace Semmle.Extraction.CSharp.DependencyFetching
{ {
internal class DependabotProxy public class DependabotProxy
{ {
private readonly string? host; private readonly string? host;
private readonly string? port; private readonly string? port;

View File

@@ -27,6 +27,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
private readonly ILogger logger; private readonly ILogger logger;
private readonly IDiagnosticsWriter diagnosticsWriter; private readonly IDiagnosticsWriter diagnosticsWriter;
private readonly NugetPackageRestorer nugetPackageRestorer; private readonly NugetPackageRestorer nugetPackageRestorer;
private readonly DependabotProxy dependabotProxy;
private readonly IDotNet dotnet; private readonly IDotNet dotnet;
private readonly FileContent fileContent; private readonly FileContent fileContent;
private readonly FileProvider fileProvider; private readonly FileProvider fileProvider;
@@ -106,9 +107,11 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
return BuildScript.Success; return BuildScript.Success;
}).Run(SystemBuildActions.Instance, startCallback, exitCallback); }).Run(SystemBuildActions.Instance, startCallback, exitCallback);
dependabotProxy = new DependabotProxy(logger, tempWorkingDirectory);
try try
{ {
this.dotnet = DotNet.Make(logger, dotnetPath, tempWorkingDirectory); this.dotnet = DotNet.Make(logger, dotnetPath, tempWorkingDirectory, dependabotProxy);
runtimeLazy = new Lazy<Runtime>(() => new Runtime(dotnet)); runtimeLazy = new Lazy<Runtime>(() => new Runtime(dotnet));
} }
catch catch
@@ -117,7 +120,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
throw; throw;
} }
nugetPackageRestorer = new NugetPackageRestorer(fileProvider, fileContent, dotnet, diagnosticsWriter, logger, this); nugetPackageRestorer = new NugetPackageRestorer(fileProvider, fileContent, dotnet, dependabotProxy, diagnosticsWriter, logger, this);
var dllLocations = fileProvider.Dlls.Select(x => new AssemblyLookupLocation(x)).ToHashSet(); var dllLocations = fileProvider.Dlls.Select(x => new AssemblyLookupLocation(x)).ToHashSet();
dllLocations.UnionWith(nugetPackageRestorer.Restore()); dllLocations.UnionWith(nugetPackageRestorer.Restore());

View File

@@ -27,11 +27,11 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
Info(); Info();
} }
private DotNet(ILogger logger, string? dotNetPath, TemporaryDirectory tempWorkingDirectory) : this(new DotNetCliInvoker(logger, Path.Combine(dotNetPath ?? string.Empty, "dotnet"), tempWorkingDirectory), logger, tempWorkingDirectory) { } private DotNet(ILogger logger, string? dotNetPath, TemporaryDirectory tempWorkingDirectory, DependabotProxy dependabotProxy) : this(new DotNetCliInvoker(logger, Path.Combine(dotNetPath ?? string.Empty, "dotnet"), dependabotProxy), logger, tempWorkingDirectory) { }
internal static IDotNet Make(IDotNetCliInvoker dotnetCliInvoker, ILogger logger) => new DotNet(dotnetCliInvoker, logger); internal static IDotNet Make(IDotNetCliInvoker dotnetCliInvoker, ILogger logger) => new DotNet(dotnetCliInvoker, logger);
public static IDotNet Make(ILogger logger, string? dotNetPath, TemporaryDirectory tempWorkingDirectory) => new DotNet(logger, dotNetPath, tempWorkingDirectory); public static IDotNet Make(ILogger logger, string? dotNetPath, TemporaryDirectory tempWorkingDirectory, DependabotProxy dependabotProxy) => new DotNet(logger, dotNetPath, tempWorkingDirectory, dependabotProxy);
private void Info() private void Info()
{ {

View File

@@ -16,10 +16,10 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
public string Exec { get; } public string Exec { get; }
public DotNetCliInvoker(ILogger logger, string exec, TemporaryDirectory tempWorkingDirectory) public DotNetCliInvoker(ILogger logger, string exec, DependabotProxy dependabotProxy)
{ {
this.logger = logger; this.logger = logger;
this.proxy = new DependabotProxy(logger, tempWorkingDirectory); this.proxy = dependabotProxy;
this.Exec = exec; this.Exec = exec;
logger.LogInfo($"Using .NET CLI executable: '{Exec}'"); logger.LogInfo($"Using .NET CLI executable: '{Exec}'");
} }

View File

@@ -20,6 +20,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
private readonly FileProvider fileProvider; private readonly FileProvider fileProvider;
private readonly FileContent fileContent; private readonly FileContent fileContent;
private readonly IDotNet dotnet; private readonly IDotNet dotnet;
private readonly DependabotProxy dependabotProxy;
private readonly IDiagnosticsWriter diagnosticsWriter; private readonly IDiagnosticsWriter diagnosticsWriter;
private readonly TemporaryDirectory legacyPackageDirectory; private readonly TemporaryDirectory legacyPackageDirectory;
private readonly TemporaryDirectory missingPackageDirectory; private readonly TemporaryDirectory missingPackageDirectory;
@@ -32,6 +33,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
FileProvider fileProvider, FileProvider fileProvider,
FileContent fileContent, FileContent fileContent,
IDotNet dotnet, IDotNet dotnet,
DependabotProxy dependabotProxy,
IDiagnosticsWriter diagnosticsWriter, IDiagnosticsWriter diagnosticsWriter,
ILogger logger, ILogger logger,
ICompilationInfoContainer compilationInfoContainer) ICompilationInfoContainer compilationInfoContainer)
@@ -39,6 +41,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
this.fileProvider = fileProvider; this.fileProvider = fileProvider;
this.fileContent = fileContent; this.fileContent = fileContent;
this.dotnet = dotnet; this.dotnet = dotnet;
this.dependabotProxy = dependabotProxy;
this.diagnosticsWriter = diagnosticsWriter; this.diagnosticsWriter = diagnosticsWriter;
this.logger = logger; this.logger = logger;
this.compilationInfoContainer = compilationInfoContainer; this.compilationInfoContainer = compilationInfoContainer;