Skip to content

Commit 2f3f6df

Browse files
committed
C#: Set proxy environment variables for sub-process invoking the NuGet CLI.
1 parent d62fae8 commit 2f3f6df

2 files changed

Lines changed: 11 additions & 4 deletions

File tree

‎csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ internal sealed partial class NugetPackageRestorer : IDisposable
1818
private readonly IFileProvider fileProvider;
1919
private readonly FileContent fileContent;
2020
private readonly IDotNet dotnet;
21+
private readonly IRegistryProxy? registryProxy;
2122
private readonly IDiagnosticsWriter diagnosticsWriter;
2223
private readonly DependencyDirectory legacyPackageDirectory;
2324
private readonly DependencyDirectory missingPackageDirectory;
@@ -40,6 +41,7 @@ public NugetPackageRestorer(
4041
this.fileProvider = fileProvider;
4142
this.fileContent = fileContent;
4243
this.dotnet = dotnet;
44+
this.registryProxy = registryProxy;
4345
this.diagnosticsWriter = diagnosticsWriter;
4446
this.logger = logger;
4547
this.compilationInfoContainer = compilationInfoContainer;
@@ -133,7 +135,7 @@ public HashSet<AssemblyLookupLocation> Restore()
133135

134136
try
135137
{
136-
var packagesConfigRestore = PackagesConfigRestoreFactory.Create(fileProvider, legacyPackageDirectory, logger, feedManager);
138+
var packagesConfigRestore = PackagesConfigRestoreFactory.Create(fileProvider, legacyPackageDirectory, logger, feedManager, registryProxy);
137139
var count = packagesConfigRestore.InstallPackages();
138140
if (packagesConfigRestore.PackageCount > 0)
139141
{

‎csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/PackagesConfigRestorer.cs‎

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,11 @@ internal interface IPackagesConfigRestore
3333
/// </summary>
3434
internal class PackagesConfigRestoreFactory
3535
{
36-
public static IPackagesConfigRestore Create(IFileProvider fileProvider, DependencyDirectory packageDirectory, Semmle.Util.Logging.ILogger logger, FeedManager feedManager)
36+
public static IPackagesConfigRestore Create(IFileProvider fileProvider, DependencyDirectory packageDirectory, Semmle.Util.Logging.ILogger logger, FeedManager feedManager, IRegistryProxy? registryProxy)
3737
{
3838
if (SystemBuildActions.Instance.IsWindows() || SystemBuildActions.Instance.IsMonoInstalled())
3939
{
40-
return new NugetExeWrapper(fileProvider, packageDirectory, logger, feedManager);
40+
return new NugetExeWrapper(fileProvider, packageDirectory, logger, feedManager, registryProxy);
4141
}
4242

4343
return new NoOpPackagesConfig(fileProvider.PackagesConfigs, logger);
@@ -52,6 +52,7 @@ private class NugetExeWrapper : IPackagesConfigRestore
5252
{
5353
private readonly string? nugetExe;
5454
private readonly Semmle.Util.Logging.ILogger logger;
55+
private readonly IRegistryProxy? registryProxy;
5556

5657
public int PackageCount => fileProvider.PackagesConfigs.Count;
5758

@@ -70,12 +71,13 @@ private class NugetExeWrapper : IPackagesConfigRestore
7071
/// <summary>
7172
/// Create the package manager for a specified source tree.
7273
/// </summary>
73-
public NugetExeWrapper(IFileProvider fileProvider, DependencyDirectory packageDirectory, Semmle.Util.Logging.ILogger logger, FeedManager feedManager)
74+
public NugetExeWrapper(IFileProvider fileProvider, DependencyDirectory packageDirectory, Semmle.Util.Logging.ILogger logger, FeedManager feedManager, IRegistryProxy? registryProxy)
7475
{
7576
this.fileProvider = fileProvider;
7677
this.packageDirectory = packageDirectory;
7778
this.logger = logger;
7879
this.feedManager = feedManager;
80+
this.registryProxy = registryProxy;
7981

8082
if (fileProvider.PackagesConfigs.Count > 0)
8183
{
@@ -209,6 +211,9 @@ private bool TryRestoreNugetPackage(string packagesConfig)
209211
UseShellExecute = false
210212
};
211213

214+
// Configure the proxy settings, if applicable.
215+
registryProxy?.SetProcessEnvironment(pi);
216+
212217
var threadId = Environment.CurrentManagedThreadId;
213218
void onOut(string s) => logger.LogDebug(s, threadId);
214219
void onError(string s) => logger.LogError(s, threadId);

0 commit comments

Comments
 (0)