using Autofac; using Autofac.Extras.Ordering; using Recyclarr.Common; using Recyclarr.Common.FluentValidation; using Recyclarr.Json; using Recyclarr.TrashLib.ApiServices; using Recyclarr.TrashLib.Compatibility; using Recyclarr.TrashLib.Http; using Recyclarr.TrashLib.Repo; using Recyclarr.TrashLib.Repo.VersionControl; using Recyclarr.TrashLib.Settings; using Recyclarr.TrashLib.Startup; namespace Recyclarr.TrashLib; public class TrashLibAutofacModule : Module { protected override void Load(ContainerBuilder builder) { base.Load(builder); RegisterAppPaths(builder); CommonRegistrations(builder); // Needed for Autofac.Extras.Ordering builder.RegisterSource(); builder.RegisterModule(); builder.RegisterModule(); builder.RegisterModule(); builder.RegisterModule(); builder.RegisterModule(); builder.RegisterType().As().SingleInstance(); builder.RegisterType().As(); builder.RegisterType().As().SingleInstance(); } private static void CommonRegistrations(ContainerBuilder builder) { builder.RegisterType().As(); builder.RegisterType().As(); } private static void RegisterAppPaths(ContainerBuilder builder) { builder.RegisterType(); builder.Register(c => { var appData = c.Resolve(); var dataSetup = c.Resolve(); return dataSetup.CreateAppPaths(appData.AppDataPath); }) .As() .SingleInstance(); } }