Skip to content

Commit 4e64a46

Browse files
committed
Finish removing Autofac
1 parent 8e9897b commit 4e64a46

4 files changed

Lines changed: 37 additions & 99 deletions

File tree

‎Directory.Packages.props‎

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,13 @@
1717
<!-- Silk.NET.Core -->
1818
<PackageVersion Include="Fody" Version="6.9.3" PrivateAssets="all" />
1919
<PackageVersion Include="InlineIL.Fody" Version="1.10.2" PrivateAssets="all" />
20-
<PackageVersion Include="Microsoft.CodeAnalysis.PublicApiAnalyzers" Version="5.0.0-1.25277.114" />
20+
<PackageVersion
21+
Include="Microsoft.CodeAnalysis.PublicApiAnalyzers"
22+
Version="5.0.0-1.25277.114"
23+
/>
2124
<!-- Analyzers -->
2225
<PackageVersion Include="Microsoft.CodeAnalysis.Analyzers" Version="5.3.0" />
2326
<!-- SilkTouch -->
24-
<PackageVersion Include="Autofac" Version="9.3.4" />
25-
<PackageVersion Include="Autofac.Extensions.DependencyInjection" Version="11.0.2" />
2627
<PackageVersion Include="ClangSharp.PInvokeGenerator" Version="22.1.8" />
2728
<PackageVersion Include="CSharpier.Core" Version="1.3.0" />
2829
<PackageVersion Include="Humanizer.Core" Version="2.14.1" />
@@ -34,11 +35,17 @@
3435
<PackageVersion Include="Microsoft.CodeAnalysis.Workspaces.MSBuild" Version="5.3.0" />
3536
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="10.0.9" />
3637
<PackageVersion Include="Microsoft.Extensions.Configuration.CommandLine" Version="10.0.9" />
37-
<PackageVersion Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="10.0.9" />
38+
<PackageVersion
39+
Include="Microsoft.Extensions.Configuration.EnvironmentVariables"
40+
Version="10.0.9"
41+
/>
3842
<PackageVersion Include="Microsoft.Extensions.Configuration.Json" Version="10.0.9" />
3943
<PackageVersion Include="Microsoft.Extensions.FileSystemGlobbing" Version="10.0.9" />
4044
<PackageVersion Include="Microsoft.Extensions.Logging.Console" Version="10.0.9" />
41-
<PackageVersion Include="Microsoft.VisualStudio.Setup.Configuration.Interop" Version="3.14.2075" />
45+
<PackageVersion
46+
Include="Microsoft.VisualStudio.Setup.Configuration.Interop"
47+
Version="3.14.2075"
48+
/>
4249
<PackageVersion Include="System.CommandLine" Version="2.0.0-beta4.22272.1" />
4350
<PackageVersion Include="System.Configuration.ConfigurationManager" Version="10.0.9" />
4451
<PackageVersion Include="System.IO.Hashing" Version="10.0.9" />

‎sources/SilkTouch/SilkTouch/Silk.NET.SilkTouch.csproj‎

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
</PropertyGroup>
77

88
<ItemGroup>
9-
<PackageReference Include="Autofac" />
10-
<PackageReference Include="Autofac.Extensions.DependencyInjection" />
119
<PackageReference Include="ClangSharp.PInvokeGenerator" />
1210
<PackageReference Include="CSharpier.Core" />
1311
<PackageReference Include="Humanizer.Core" />

‎sources/SilkTouch/SilkTouch/SilkTouchHost.cs‎

Lines changed: 20 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,13 @@
44
using System.CommandLine;
55
using System.CommandLine.Invocation;
66
using System.Diagnostics.CodeAnalysis;
7-
using Autofac;
8-
using Autofac.Extensions.DependencyInjection;
97
using Microsoft.Build.Locator;
108
using Microsoft.Extensions.DependencyInjection;
119
using Microsoft.Extensions.Logging;
1210
using Microsoft.Extensions.Logging.Console;
1311
using Silk.NET.SilkTouch.Caching;
1412
using Silk.NET.SilkTouch.Clang;
1513
using Silk.NET.SilkTouch.Mods;
16-
using Silk.NET.SilkTouch.Mods.Bakery;
1714
using Silk.NET.SilkTouch.Sources;
1815

1916
namespace Silk.NET.SilkTouch;
@@ -102,10 +99,10 @@ public async Task RunAsync(string[] args)
10299
// Register MSBuild
103100
MSBuildLocator.RegisterDefaults();
104101

105-
// Build container
106-
var builder = new ContainerBuilder();
107-
Configure(builder, ctx);
108-
await using ILifetimeScope container = builder.Build();
102+
// Build service provider
103+
var services = new ServiceCollection();
104+
Configure(services, ctx);
105+
await using var provider = services.BuildServiceProvider();
109106

110107
var jobKeysToRun = new HashSet<string>(
111108
ctx.ParseResult.GetValueForOption(OnlyOption) ?? [],
@@ -127,7 +124,7 @@ public async Task RunAsync(string[] args)
127124
return jobKeysToRun.Count == 0 || jobKeysToRun.Contains(job.Key);
128125
});
129126

130-
var logger = container.Resolve<ILogger<SilkTouchHost>>();
127+
var logger = provider.GetRequiredService<ILogger<SilkTouchHost>>();
131128
try
132129
{
133130
await Parallel.ForEachAsync(
@@ -143,10 +140,7 @@ await Parallel.ForEachAsync(
143140
jobKvp.Value.Config,
144141
services =>
145142
{
146-
ConfigureForward(
147-
new AutofacServiceProvider(container),
148-
services
149-
);
143+
ConfigureForward(provider, services);
150144
jobKvp.Value.Configure.Invoke(services.SilkTouch());
151145
}
152146
);
@@ -182,9 +176,9 @@ private static void Exit(int exitCode) =>
182176
/// Dependencies defined here are only accessible to the host.
183177
/// Make them available to the jobs by using <see cref="ConfigureForward"/>.
184178
/// </summary>
185-
private void Configure(ContainerBuilder builder, InvocationContext ctx)
179+
private void Configure(IServiceCollection services, InvocationContext ctx)
186180
{
187-
var services = new ServiceCollection()
181+
services
188182
.AddLogging(builder =>
189183
{
190184
builder.AddSimpleConsole(opts =>
@@ -200,8 +194,6 @@ private void Configure(ContainerBuilder builder, InvocationContext ctx)
200194
})
201195
.AddOptions();
202196

203-
builder.Populate(services);
204-
205197
{
206198
// Create config
207199
var config = new SilkTouchHostConfiguration()
@@ -217,49 +209,25 @@ private void Configure(ContainerBuilder builder, InvocationContext ctx)
217209
);
218210
}
219211

220-
builder.RegisterInstance(config).SingleInstance();
221-
222-
builder
223-
.RegisterType<MSBuildModContextFactory>()
224-
.As<IModContextFactory>()
225-
.SingleInstance();
226-
227-
builder.RegisterType<ResponseFileHandler>().SingleInstance();
228-
229-
builder
230-
.RegisterType<DefaultBakeStrategy>()
231-
.AsSelf()
232-
.AsImplementedInterfaces()
233-
.SingleInstance();
234-
235-
builder.RegisterType<FileSystemCacheProvider>().As<ICacheProvider>().SingleInstance();
236-
237-
builder.RegisterType<GitInputSource>().As<IInputSource>().SingleInstance();
212+
services.AddSingleton(config);
238213

239-
builder.RegisterType<NuGetInputSource>().As<IInputSource>().SingleInstance();
240-
241-
builder.RegisterType<UriBasedInputResolver>().As<IInputResolver>().SingleInstance();
214+
services.AddSingleton<IModContextFactory, MSBuildModContextFactory>();
215+
services.AddSingleton<ICacheProvider, FileSystemCacheProvider>();
216+
services.AddSingleton<IInputSource, GitInputSource>();
217+
services.AddSingleton<IInputSource, NuGetInputSource>();
218+
services.AddSingleton<IInputResolver, UriBasedInputResolver>();
242219

243220
if (OperatingSystem.IsWindows())
244221
{
245-
builder
246-
.RegisterType<WindowsStdIncludeResolver>()
247-
.As<IStdIncludeResolver>()
248-
.SingleInstance();
222+
services.AddSingleton<IStdIncludeResolver, WindowsStdIncludeResolver>();
249223
}
250224
else if (OperatingSystem.IsMacOS())
251225
{
252-
builder
253-
.RegisterType<MacOSStdIncludeResolver>()
254-
.As<IStdIncludeResolver>()
255-
.SingleInstance();
226+
services.AddSingleton<IStdIncludeResolver, MacOSStdIncludeResolver>();
256227
}
257228
else
258229
{
259-
builder
260-
.RegisterType<UnixStdIncludeResolver>()
261-
.As<IStdIncludeResolver>()
262-
.SingleInstance();
230+
services.AddSingleton<IStdIncludeResolver, UnixStdIncludeResolver>();
263231
}
264232
}
265233
}
@@ -273,50 +241,11 @@ private void ConfigureForward(IServiceProvider host, IServiceCollection services
273241
services.AddSingleton(host.GetRequiredService<ILoggerFactory>());
274242
services.AddSingleton(typeof(ILogger<>), typeof(Logger<>));
275243

276-
services.AddSingleton(host.GetRequiredService<IInputResolver>());
277-
278244
services.AddSingleton(host.GetRequiredService<SilkTouchHostConfiguration>());
279245
services.AddSingleton(host.GetRequiredService<IModContextFactory>());
280-
281-
builder.RegisterType<MSBuildModContextFactory>().As<IModContextFactory>().SingleInstance();
282-
283-
builder.RegisterType<ResponseFileHandler>().SingleInstance();
284-
285-
builder
286-
.RegisterType<DefaultBakeStrategy>()
287-
.AsSelf()
288-
.AsImplementedInterfaces()
289-
.SingleInstance();
290-
291-
builder.RegisterType<FileSystemCacheProvider>().As<ICacheProvider>().SingleInstance();
292-
293-
builder.RegisterType<GitInputSource>().As<IInputSource>().SingleInstance();
294-
295-
builder.RegisterType<NuGetInputSource>().As<IInputSource>().SingleInstance();
296-
297-
builder.RegisterType<UriBasedInputResolver>().As<IInputResolver>().SingleInstance();
298-
299-
if (OperatingSystem.IsWindows())
300-
{
301-
builder
302-
.RegisterType<WindowsStdIncludeResolver>()
303-
.As<IStdIncludeResolver>()
304-
.SingleInstance();
305-
}
306-
else if (OperatingSystem.IsMacOS())
307-
{
308-
builder
309-
.RegisterType<MacOSStdIncludeResolver>()
310-
.As<IStdIncludeResolver>()
311-
.SingleInstance();
312-
}
313-
else
314-
{
315-
builder
316-
.RegisterType<UnixStdIncludeResolver>()
317-
.As<IStdIncludeResolver>()
318-
.SingleInstance();
319-
}
246+
services.AddSingleton(host.GetRequiredService<ICacheProvider>());
247+
services.AddSingleton(host.GetRequiredService<IInputResolver>());
248+
services.AddSingleton(host.GetRequiredService<IStdIncludeResolver>());
320249
}
321250

322251
private record JobDefinition(

‎sources/SilkTouch/SilkTouch/SilkTouchJob.cs‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
using System.Diagnostics;
55
using Microsoft.Extensions.DependencyInjection;
66
using Microsoft.Extensions.Logging;
7+
using Silk.NET.SilkTouch.Clang;
78
using Silk.NET.SilkTouch.Mods;
9+
using Silk.NET.SilkTouch.Mods.Bakery;
810
using Silk.NET.SilkTouch.Mods.Transformation;
911
using Silk.NET.SilkTouch.Sources;
1012
using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
@@ -61,6 +63,8 @@ Action<IServiceCollection> configure
6163
// Register default dependencies
6264
services.AddSingleton<DocumentFactory>();
6365
services.AddSingleton<FunctionTransformer>();
66+
services.AddSingleton<ResponseFileHandler>();
67+
services.AddSingleton<IBakeStrategy, DefaultBakeStrategy>();
6468

6569
// Register user defined dependencies
6670
configure.Invoke(services);
@@ -71,7 +75,7 @@ Action<IServiceCollection> configure
7175
_inputResolver = _provider.GetRequiredService<IInputResolver>();
7276
_modContextFactory = _provider.GetRequiredService<IModContextFactory>();
7377
_documentFactory = _provider.GetRequiredService<DocumentFactory>();
74-
Mods = _provider.GetRequiredService<IMod[]>();
78+
Mods = _provider.GetRequiredService<IEnumerable<IMod>>().ToArray();
7579
}
7680

7781
/// <summary>

0 commit comments

Comments
 (0)