You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
recyclarr/src/Recyclarr.TrashLib/TrashLibAutofacModule.cs

56 lines
1.7 KiB

using Autofac;
using Autofac.Extras.Ordering;
using Recyclarr.Common;
using Recyclarr.Common.FluentValidation;
using Recyclarr.Json;
using Recyclarr.Platform;
using Recyclarr.Repo;
using Recyclarr.ServarrApi;
using Recyclarr.Settings;
using Recyclarr.TrashLib.Compatibility;
using Recyclarr.VersionControl;
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<OrderedRegistrationSource>();
builder.RegisterModule<VersionControlAutofacModule>();
builder.RegisterModule<RepoAutofacModule>();
builder.RegisterModule<CompatibilityAutofacModule>();
builder.RegisterModule<ApiServicesAutofacModule>();
builder.RegisterModule<JsonAutofacModule>();
builder.RegisterType<SettingsProvider>().As<ISettingsProvider>().SingleInstance();
}
private static void CommonRegistrations(ContainerBuilder builder)
{
builder.RegisterType<DefaultEnvironment>().As<IEnvironment>();
builder.RegisterType<RuntimeValidationService>().As<IRuntimeValidationService>();
}
private static void RegisterAppPaths(ContainerBuilder builder)
{
builder.RegisterType<DefaultAppDataSetup>();
builder.Register(c =>
{
var appData = c.Resolve<AppDataPathProvider>();
var dataSetup = c.Resolve<DefaultAppDataSetup>();
return dataSetup.CreateAppPaths(appData.AppDataPath);
})
.As<IAppPaths>()
.SingleInstance();
}
}