using System.Reflection; using Autofac; using FluentValidation; using Recyclarr.TrashLib.Config.Listers; using Recyclarr.TrashLib.Config.Parsing; using Recyclarr.TrashLib.Config.Secrets; using Recyclarr.TrashLib.Config.Services; using Recyclarr.TrashLib.Config.Settings; using Recyclarr.TrashLib.Config.Yaml; using YamlDotNet.Serialization; using YamlDotNet.Serialization.ObjectFactories; using Module = Autofac.Module; namespace Recyclarr.TrashLib.Config; public class ConfigAutofacModule : Module { private readonly Assembly[] _assemblies; public ConfigAutofacModule(params Assembly[] assemblies) { _assemblies = assemblies; } protected override void Load(ContainerBuilder builder) { builder.RegisterAssemblyTypes(_assemblies) .AsClosedTypesOf(typeof(IValidator<>)) .AsImplementedInterfaces(); builder.RegisterAssemblyTypes(_assemblies) .AssignableTo() .As(); builder.RegisterType().As().SingleInstance(); builder.RegisterType().As().SingleInstance(); builder.RegisterType().As(); builder.RegisterType().As(); builder.RegisterType().As(); builder.RegisterType().As(); builder.RegisterType(); builder.RegisterType(); builder.RegisterType().As(); // Config Listers builder.RegisterType().Keyed(ConfigListCategory.Templates); builder.RegisterType().Keyed(ConfigListCategory.Local); } }