refactor: Split Recyclarr.TrashLib project

Split into Config and Guide class library projects to help decouple and
componentize the TrashLib library, which is growing too big.
json-serializing-nullable-fields-issue
Robert Dailey 8 months ago
parent 82cbfb3741
commit 159861aaeb

@ -11,10 +11,6 @@
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
<ItemGroup>
<Using Include="Serilog" />
</ItemGroup>
<!--
To prevent System.Reactive.xml (and other XML docs) from being in the publish dir.
See: https://github.com/dotnet/reactive/issues/1066#issuecomment-548941146

@ -8,7 +8,7 @@
<PackageVersion Include="AutofacSerilogIntegration" Version="5.0.0" />
<PackageVersion Include="AutoMapper" Version="12.0.1" />
<PackageVersion Include="AutoMapper.Collection" Version="9.0.0" />
<PackageVersion Include="AutoMapper.Contrib.Autofac.DependencyInjection" Version="7.1.0" />
<PackageVersion Include="AutoMapper.Contrib.Autofac.DependencyInjection" Version="7.2.0-alpha.0" />
<PackageVersion Include="CliWrap" Version="3.6.4" />
<PackageVersion Include="FluentValidation" Version="11.7.1" />
<PackageVersion Include="Flurl" Version="3.0.7" />
@ -64,4 +64,4 @@
<PackageVersion Include="System.Net.Http" Version="4.3.4" />
<PackageVersion Include="System.Text.RegularExpressions" Version="4.3.1" />
</ItemGroup>
</Project>
</Project>

@ -1,5 +1,5 @@
using Newtonsoft.Json;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
namespace Recyclarr.Cli.Cache;

@ -1,4 +1,4 @@
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
namespace Recyclarr.Cli.Cache;

@ -1,4 +1,4 @@
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
namespace Recyclarr.Cli.Cache;

@ -3,7 +3,7 @@ using System.Reflection;
using System.Text.RegularExpressions;
using Newtonsoft.Json;
using Recyclarr.Common.Extensions;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
using Recyclarr.TrashLib.Interfaces;
using Recyclarr.TrashLib.Json;

@ -2,6 +2,8 @@ using System.IO.Abstractions;
using System.Reflection;
using Autofac;
using Autofac.Extras.Ordering;
using AutoMapper.Contrib.Autofac.DependencyInjection;
using AutoMapper.EquivalencyExpression;
using Recyclarr.Cli.Cache;
using Recyclarr.Cli.Console.Helpers;
using Recyclarr.Cli.Console.Setup;
@ -16,8 +18,11 @@ using Recyclarr.Cli.Pipelines.Tags;
using Recyclarr.Cli.Processors;
using Recyclarr.Common;
using Recyclarr.TrashLib;
using Recyclarr.TrashLib.Config;
using Recyclarr.TrashLib.Guide;
using Recyclarr.TrashLib.Interfaces;
using Recyclarr.TrashLib.Startup;
using Recyclarr.Yaml;
using Serilog.Core;
using Spectre.Console.Cli;
@ -32,7 +37,10 @@ public static class CompositionRoot
RegisterLogger(builder);
builder.RegisterModule<MigrationAutofacModule>();
builder.RegisterModule(new TrashLibAutofacModule {AdditionalMapperProfileAssembly = thisAssembly});
builder.RegisterModule<TrashLibAutofacModule>();
builder.RegisterModule<ConfigAutofacModule>();
builder.RegisterModule<GuideAutofacModule>();
builder.RegisterModule<YamlAutofacModule>();
builder.RegisterModule<ServiceProcessorsAutofacModule>();
builder.RegisterModule<CacheAutofacModule>();
@ -40,6 +48,8 @@ public static class CompositionRoot
builder.RegisterType<FileSystem>().As<IFileSystem>();
builder.Register(_ => new ResourceDataReader(thisAssembly)).As<IResourceDataReader>();
builder.RegisterAutoMapper(c => c.AddCollectionMappers(), thisAssembly);
CommandRegistrations(builder);
PipelineRegistrations(builder);
}

@ -3,7 +3,7 @@ using System.Diagnostics.CodeAnalysis;
using JetBrains.Annotations;
using Recyclarr.Cli.Console.Helpers;
using Recyclarr.Cli.Console.Settings;
using Recyclarr.Cli.Pipelines.CustomFormat.Guide;
using Recyclarr.Cli.Pipelines.CustomFormat;
using Recyclarr.TrashLib.Config;
using Recyclarr.TrashLib.Repo;
using Spectre.Console.Cli;

@ -2,7 +2,7 @@ using System.ComponentModel;
using System.Diagnostics.CodeAnalysis;
using JetBrains.Annotations;
using Recyclarr.Cli.Console.Helpers;
using Recyclarr.Cli.Pipelines.QualitySize.Guide;
using Recyclarr.Cli.Pipelines.QualitySize;
using Recyclarr.TrashLib.Config;
using Recyclarr.TrashLib.Repo;
using Spectre.Console.Cli;

@ -1,7 +1,7 @@
using System.ComponentModel;
using System.Diagnostics.CodeAnalysis;
using JetBrains.Annotations;
using Recyclarr.Cli.Pipelines.ReleaseProfile.Guide;
using Recyclarr.Cli.Pipelines.ReleaseProfile;
using Recyclarr.TrashLib.Repo;
using Spectre.Console.Cli;

@ -2,7 +2,7 @@ using System.Data.HashFunction.FNV;
using System.Globalization;
using System.IO.Abstractions;
using System.Text;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
using Recyclarr.TrashLib.Interfaces;
using Recyclarr.TrashLib.Startup;

@ -1 +1,2 @@
global using SuperLinq;
global using Serilog;

@ -1,5 +1,5 @@
using Flurl.Http;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
using Recyclarr.TrashLib.Http;
using Recyclarr.TrashLib.Models;

@ -1,4 +1,4 @@
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
using Recyclarr.TrashLib.Models;
namespace Recyclarr.Cli.Pipelines.CustomFormat.Api;

@ -2,7 +2,6 @@ using Autofac;
using Autofac.Extras.AggregateService;
using Recyclarr.Cli.Cache;
using Recyclarr.Cli.Pipelines.CustomFormat.Api;
using Recyclarr.Cli.Pipelines.CustomFormat.Guide;
using Recyclarr.Cli.Pipelines.CustomFormat.Models;
using Recyclarr.Cli.Pipelines.CustomFormat.PipelinePhases;
@ -12,13 +11,10 @@ public class CustomFormatAutofacModule : Module
{
protected override void Load(ContainerBuilder builder)
{
builder.RegisterType<CustomFormatGuideService>().As<ICustomFormatGuideService>().SingleInstance();
builder.RegisterType<ProcessedCustomFormatCache>().As<IPipelineCache>().AsSelf().InstancePerLifetimeScope();
builder.RegisterType<CustomFormatService>().As<ICustomFormatService>();
builder.RegisterType<CachePersister>().As<ICachePersister>();
builder.RegisterType<CustomFormatLoader>().As<ICustomFormatLoader>();
builder.RegisterType<CustomFormatCategoryParser>().As<ICustomFormatCategoryParser>();
builder.RegisterType<CustomFormatDataLister>();
builder.RegisterAggregateService<ICustomFormatPipelinePhases>();

@ -1,8 +1,9 @@
using Recyclarr.Cli.Console.Settings;
using Recyclarr.TrashLib.Config;
using Recyclarr.TrashLib.Guide.CustomFormat;
using Spectre.Console;
namespace Recyclarr.Cli.Pipelines.CustomFormat.Guide;
namespace Recyclarr.Cli.Pipelines.CustomFormat;
public class CustomFormatDataLister
{

@ -4,7 +4,7 @@ using Recyclarr.Cli.Console.Settings;
using Recyclarr.Cli.Pipelines.CustomFormat.Models;
using Recyclarr.Cli.Pipelines.CustomFormat.PipelinePhases;
using Recyclarr.Common.Extensions;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
using Recyclarr.TrashLib.Models;
namespace Recyclarr.Cli.Pipelines.CustomFormat;

@ -1,4 +1,4 @@
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
using Recyclarr.TrashLib.Models;
namespace Recyclarr.Cli.Pipelines.CustomFormat.Models;

@ -1,5 +1,5 @@
using Recyclarr.Cli.Pipelines.CustomFormat.Api;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
using Recyclarr.TrashLib.Models;
namespace Recyclarr.Cli.Pipelines.CustomFormat.PipelinePhases;

@ -1,5 +1,5 @@
using Recyclarr.Cli.Pipelines.CustomFormat.Api;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
namespace Recyclarr.Cli.Pipelines.CustomFormat.PipelinePhases;

@ -1,7 +1,7 @@
using Recyclarr.Cli.Pipelines.CustomFormat.Guide;
using Recyclarr.Cli.Pipelines.CustomFormat.Models;
using Recyclarr.Common.Extensions;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
using Recyclarr.TrashLib.Guide.CustomFormat;
using Recyclarr.TrashLib.Models;
namespace Recyclarr.Cli.Pipelines.CustomFormat.PipelinePhases;

@ -2,7 +2,7 @@ using System.Diagnostics.CodeAnalysis;
using Recyclarr.Cli.Cache;
using Recyclarr.Cli.Pipelines.CustomFormat.Models;
using Recyclarr.Common.Extensions;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
using Recyclarr.TrashLib.Models;
namespace Recyclarr.Cli.Pipelines.CustomFormat.PipelinePhases;

@ -1,5 +1,5 @@
using Recyclarr.Cli.Console.Settings;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
namespace Recyclarr.Cli.Pipelines;

@ -1,4 +1,4 @@
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
namespace Recyclarr.Cli.Pipelines.QualityProfile.Api;

@ -1,5 +1,5 @@
using Flurl.Http;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
using Recyclarr.TrashLib.Http;
namespace Recyclarr.Cli.Pipelines.QualityProfile.Api;

@ -1,5 +1,5 @@
using Recyclarr.Cli.Pipelines.QualityProfile.Api;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
namespace Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases;

@ -1,5 +1,5 @@
using Recyclarr.Cli.Pipelines.QualityProfile.Api;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
namespace Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases;

@ -1,6 +1,6 @@
using Recyclarr.Cli.Pipelines.CustomFormat.Models;
using Recyclarr.Common.Extensions;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
using Recyclarr.TrashLib.Models;
namespace Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases;

@ -3,7 +3,7 @@ using FluentValidation.Results;
using Recyclarr.Cli.Pipelines.QualityProfile.Api;
using Recyclarr.Common.Extensions;
using Recyclarr.Common.FluentValidation;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
namespace Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases;

@ -1,6 +1,7 @@
using System.Diagnostics.CodeAnalysis;
using Recyclarr.Cli.Pipelines.QualityProfile.Api;
using Recyclarr.Common.Extensions;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
namespace Recyclarr.Cli.Pipelines.QualityProfile;
@ -24,6 +25,8 @@ public class QualityItemOrganizer
};
}
[SuppressMessage("SonarLint", "S1751", Justification =
"'continue' used here is for separating local methods")]
private List<ProfileItemDto> ProcessWantedItems(
IReadOnlyCollection<ProfileItemDto> dtoItems,
IReadOnlyCollection<QualityProfileQualityConfig> configQualities)

@ -1,6 +1,6 @@
using Recyclarr.Cli.Console.Settings;
using Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
namespace Recyclarr.Cli.Pipelines.QualityProfile;

@ -1,4 +1,4 @@
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
namespace Recyclarr.Cli.Pipelines.QualitySize.Api;

@ -1,5 +1,5 @@
using Flurl.Http;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
using Recyclarr.TrashLib.Http;
namespace Recyclarr.Cli.Pipelines.QualitySize.Api;

@ -1,5 +1,5 @@
using Recyclarr.Cli.Pipelines.QualitySize.Api;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
namespace Recyclarr.Cli.Pipelines.QualitySize.PipelinePhases;

@ -1,5 +1,5 @@
using Recyclarr.Cli.Pipelines.QualitySize.Api;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
namespace Recyclarr.Cli.Pipelines.QualitySize.PipelinePhases;

@ -1,15 +1,15 @@
using Recyclarr.Cli.Pipelines.QualitySize.Guide;
using Recyclarr.Common.Extensions;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
using Recyclarr.TrashLib.Guide.QualitySize;
namespace Recyclarr.Cli.Pipelines.QualitySize.PipelinePhases;
public class QualitySizeGuidePhase
{
private readonly ILogger _log;
private readonly IQualityGuideService _guide;
private readonly IQualitySizeGuideService _guide;
public QualitySizeGuidePhase(ILogger log, IQualityGuideService guide)
public QualitySizeGuidePhase(ILogger log, IQualitySizeGuideService guide)
{
_log = log;
_guide = guide;

@ -1,3 +1,4 @@
using Recyclarr.TrashLib.Guide.QualitySize;
using Spectre.Console;
namespace Recyclarr.Cli.Pipelines.QualitySize.PipelinePhases;

@ -1,5 +1,6 @@
using System.Collections.ObjectModel;
using Recyclarr.Cli.Pipelines.QualitySize.Api;
using Recyclarr.TrashLib.Guide.QualitySize;
namespace Recyclarr.Cli.Pipelines.QualitySize.PipelinePhases;

@ -1,7 +1,6 @@
using Autofac;
using Autofac.Extras.AggregateService;
using Recyclarr.Cli.Pipelines.QualitySize.Api;
using Recyclarr.Cli.Pipelines.QualitySize.Guide;
using Recyclarr.Cli.Pipelines.QualitySize.PipelinePhases;
namespace Recyclarr.Cli.Pipelines.QualitySize;
@ -12,8 +11,6 @@ public class QualitySizeAutofacModule : Module
{
base.Load(builder);
builder.RegisterType<QualityDefinitionService>().As<IQualityDefinitionService>();
builder.RegisterType<QualityGuideService>().As<IQualityGuideService>().SingleInstance();
builder.RegisterType<QualitySizeGuideParser>();
builder.RegisterType<QualitySizeDataLister>();
builder.RegisterAggregateService<IQualitySizePipelinePhases>();

@ -1,16 +1,17 @@
using Recyclarr.TrashLib.Config;
using Recyclarr.TrashLib.Guide.QualitySize;
using Spectre.Console;
namespace Recyclarr.Cli.Pipelines.QualitySize.Guide;
namespace Recyclarr.Cli.Pipelines.QualitySize;
public class QualitySizeDataLister
{
private readonly IAnsiConsole _console;
private readonly IQualityGuideService _guide;
private readonly IQualitySizeGuideService _guide;
public QualitySizeDataLister(
IAnsiConsole console,
IQualityGuideService guide)
IQualitySizeGuideService guide)
{
_console = console;
_guide = guide;

@ -1,6 +1,6 @@
using Recyclarr.Cli.Console.Settings;
using Recyclarr.Cli.Pipelines.QualitySize.PipelinePhases;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
namespace Recyclarr.Cli.Pipelines.QualitySize;

@ -1,5 +1,5 @@
using Recyclarr.Cli.Pipelines.ReleaseProfile.Api.Objects;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
namespace Recyclarr.Cli.Pipelines.ReleaseProfile.Api;

@ -1,6 +1,6 @@
using Newtonsoft.Json.Linq;
using Recyclarr.Cli.Pipelines.ReleaseProfile.Api.Objects;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
namespace Recyclarr.Cli.Pipelines.ReleaseProfile.Api;

@ -1,7 +1,7 @@
using Flurl.Http;
using Newtonsoft.Json.Linq;
using Recyclarr.Cli.Pipelines.ReleaseProfile.Api.Objects;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
using Recyclarr.TrashLib.Http;
namespace Recyclarr.Cli.Pipelines.ReleaseProfile.Api;

@ -4,7 +4,7 @@ using Newtonsoft.Json.Schema;
using Recyclarr.Cli.Pipelines.ReleaseProfile.Api.Objects;
using Recyclarr.Cli.Pipelines.ReleaseProfile.Api.Schemas;
using Recyclarr.TrashLib.Compatibility.Sonarr;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
namespace Recyclarr.Cli.Pipelines.ReleaseProfile.Api;

@ -1,4 +1,5 @@
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
using Recyclarr.TrashLib.Guide.ReleaseProfile;
namespace Recyclarr.Cli.Pipelines.ReleaseProfile.Filters;

@ -1,4 +1,5 @@
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
using Recyclarr.TrashLib.Guide.ReleaseProfile;
namespace Recyclarr.Cli.Pipelines.ReleaseProfile.Filters;

@ -1,4 +1,5 @@
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
using Recyclarr.TrashLib.Guide.ReleaseProfile;
namespace Recyclarr.Cli.Pipelines.ReleaseProfile.Filters;

@ -1,5 +1,6 @@
using System.Collections.ObjectModel;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
using Recyclarr.TrashLib.Guide.ReleaseProfile;
namespace Recyclarr.Cli.Pipelines.ReleaseProfile.Filters;

@ -1,4 +1,5 @@
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
using Recyclarr.TrashLib.Guide.ReleaseProfile;
namespace Recyclarr.Cli.Pipelines.ReleaseProfile.Filters;

@ -1,4 +1,5 @@
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
using Recyclarr.TrashLib.Guide.ReleaseProfile;
namespace Recyclarr.Cli.Pipelines.ReleaseProfile.Filters;

@ -1,6 +1,6 @@
using Recyclarr.Cli.Pipelines.ReleaseProfile.Api;
using Recyclarr.Cli.Pipelines.ReleaseProfile.Api.Objects;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
namespace Recyclarr.Cli.Pipelines.ReleaseProfile.PipelinePhases;

@ -1,6 +1,6 @@
using Recyclarr.Cli.Pipelines.ReleaseProfile.Api;
using Recyclarr.Cli.Pipelines.ReleaseProfile.Models;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
namespace Recyclarr.Cli.Pipelines.ReleaseProfile.PipelinePhases;

@ -1,7 +1,7 @@
using Recyclarr.Cli.Pipelines.ReleaseProfile.Filters;
using Recyclarr.Cli.Pipelines.ReleaseProfile.Guide;
using Recyclarr.Common.Extensions;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
using Recyclarr.TrashLib.Guide.ReleaseProfile;
namespace Recyclarr.Cli.Pipelines.ReleaseProfile.PipelinePhases;

@ -3,7 +3,6 @@ using Autofac.Extras.AggregateService;
using Autofac.Extras.Ordering;
using Recyclarr.Cli.Pipelines.ReleaseProfile.Api;
using Recyclarr.Cli.Pipelines.ReleaseProfile.Filters;
using Recyclarr.Cli.Pipelines.ReleaseProfile.Guide;
using Recyclarr.Cli.Pipelines.ReleaseProfile.PipelinePhases;
namespace Recyclarr.Cli.Pipelines.ReleaseProfile;
@ -16,14 +15,11 @@ public class ReleaseProfileAutofacModule : Module
builder.RegisterType<ReleaseProfileApiService>().As<IReleaseProfileApiService>();
builder.RegisterType<ReleaseProfileFilterPipeline>().As<IReleaseProfileFilterPipeline>();
builder.RegisterType<ReleaseProfileGuideParser>();
builder.RegisterType<ReleaseProfileDataLister>();
builder.RegisterType<SonarrReleaseProfileCompatibilityHandler>()
.As<ISonarrReleaseProfileCompatibilityHandler>();
builder.RegisterType<ReleaseProfileGuideService>().As<IReleaseProfileGuideService>().SingleInstance();
builder.RegisterAggregateService<IReleaseProfilePipelinePhases>();
builder.RegisterType<ReleaseProfileConfigPhase>();
builder.RegisterType<ReleaseProfileApiFetchPhase>();

@ -1,8 +1,9 @@
using System.Text;
using Recyclarr.Common.Extensions;
using Recyclarr.TrashLib.Guide.ReleaseProfile;
using Spectre.Console;
namespace Recyclarr.Cli.Pipelines.ReleaseProfile.Guide;
namespace Recyclarr.Cli.Pipelines.ReleaseProfile;
public class ReleaseProfileDataLister
{

@ -1,6 +1,6 @@
using Recyclarr.Cli.Console.Settings;
using Recyclarr.Cli.Pipelines.ReleaseProfile.PipelinePhases;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
namespace Recyclarr.Cli.Pipelines.ReleaseProfile;

@ -1,4 +1,4 @@
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
namespace Recyclarr.Cli.Pipelines.Tags.Api;

@ -1,5 +1,5 @@
using Flurl.Http;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
using Recyclarr.TrashLib.Http;
namespace Recyclarr.Cli.Pipelines.Tags.Api;

@ -1,5 +1,5 @@
using Recyclarr.Cli.Pipelines.Tags.Api;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
namespace Recyclarr.Cli.Pipelines.Tags.PipelinePhases;

@ -1,5 +1,5 @@
using Recyclarr.Cli.Pipelines.Tags.Api;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
namespace Recyclarr.Cli.Pipelines.Tags.PipelinePhases;

@ -1,6 +1,6 @@
using System.Diagnostics.CodeAnalysis;
using Recyclarr.Common.Extensions;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
namespace Recyclarr.Cli.Pipelines.Tags.PipelinePhases;

@ -1,6 +1,6 @@
using Recyclarr.Cli.Console.Settings;
using Recyclarr.Cli.Pipelines.Tags.PipelinePhases;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
namespace Recyclarr.Cli.Pipelines.Tags;

@ -1,7 +1,6 @@
using System.IO.Abstractions;
using Recyclarr.TrashLib.Config;
using Recyclarr.TrashLib.Config.Parsing;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Startup;
using Spectre.Console;
using Spectre.Console.Rendering;

@ -1,6 +1,6 @@
using Recyclarr.Cli.Console.Commands;
using Recyclarr.TrashLib.Config;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Guide;
using Spectre.Console;
namespace Recyclarr.Cli.Processors.Config;

@ -1,8 +1,8 @@
using System.IO.Abstractions;
using Recyclarr.Cli.Console.Settings;
using Recyclarr.Common.Extensions;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.ExceptionTypes;
using Recyclarr.TrashLib.Guide;
using Recyclarr.TrashLib.Startup;
namespace Recyclarr.Cli.Processors.Config;

@ -3,7 +3,6 @@ using Recyclarr.Cli.Console.Settings;
using Recyclarr.Cli.Pipelines.CustomFormat.Api;
using Recyclarr.TrashLib.Compatibility.Sonarr;
using Recyclarr.TrashLib.Config;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.ExceptionTypes;
using Recyclarr.TrashLib.Models;
using Spectre.Console;

@ -1,4 +1,5 @@
using Flurl.Http;
using Recyclarr.TrashLib.Config.ExceptionTypes;
using Recyclarr.TrashLib.Config.Parsing.ErrorHandling;
using Recyclarr.TrashLib.ExceptionTypes;
using Recyclarr.TrashLib.Http;

@ -1,5 +1,5 @@
using Recyclarr.Cli.Console.Settings;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
namespace Recyclarr.Cli.Processors;

@ -1,6 +1,6 @@
using Recyclarr.Cli.Console.Settings;
using Recyclarr.Cli.Pipelines;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config;
namespace Recyclarr.Cli.Processors.Sync;

@ -3,7 +3,6 @@ using Recyclarr.Cli.Console.Settings;
using Recyclarr.Cli.Processors.ErrorHandling;
using Recyclarr.TrashLib.Compatibility;
using Recyclarr.TrashLib.Config;
using Recyclarr.TrashLib.Config.Services;
using Spectre.Console;
namespace Recyclarr.Cli.Processors.Sync;

@ -29,10 +29,16 @@
<ItemGroup>
<ProjectReference Include="..\Recyclarr.Common\Recyclarr.Common.csproj" />
<ProjectReference Include="..\Recyclarr.TrashLib.Config\Recyclarr.TrashLib.Config.csproj" />
<ProjectReference Include="..\Recyclarr.TrashLib.Guide\Recyclarr.TrashLib.Guide.csproj" />
<ProjectReference Include="..\Recyclarr.TrashLib\Recyclarr.TrashLib.csproj" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="config-template.yml" />
</ItemGroup>
<ItemGroup>
<Folder Include="Pipelines\ReleaseProfile\Guide\" />
</ItemGroup>
</Project>

@ -0,0 +1 @@
global using Serilog;

@ -8,6 +8,7 @@ using Autofac.Extensions.DependencyInjection;
using MudBlazor.Services;
using Recyclarr.Gui;
using Recyclarr.TrashLib.Startup;
using Serilog;
var builder = WebApplication.CreateBuilder(args);

@ -1,14 +1,12 @@
using Autofac;
using AutoMapper.Contrib.Autofac.DependencyInjection;
using AutoMapper.EquivalencyExpression;
using FluentValidation;
using Recyclarr.TrashLib.Config.Parsing;
using Recyclarr.TrashLib.Config.Parsing.PostProcessing;
using Recyclarr.TrashLib.Config.Parsing.PostProcessing.ConfigMerging;
using Recyclarr.TrashLib.Config.Secrets;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.Config.Yaml;
using Recyclarr.TrashLib.Settings;
using YamlDotNet.Serialization;
using YamlDotNet.Serialization.ObjectFactories;
using Recyclarr.Yaml;
namespace Recyclarr.TrashLib.Config;
@ -16,23 +14,19 @@ public class ConfigAutofacModule : Module
{
protected override void Load(ContainerBuilder builder)
{
builder.RegisterAutoMapper(c => c.AddCollectionMappers(), ThisAssembly);
builder.RegisterAssemblyTypes(ThisAssembly)
.AssignableTo<IYamlBehavior>()
.As<IYamlBehavior>();
builder.RegisterType<SettingsProvider>().As<ISettingsProvider>().SingleInstance();
builder.RegisterType<SecretsProvider>().As<ISecretsProvider>().SingleInstance();
builder.RegisterType<YamlSerializerFactory>().As<IYamlSerializerFactory>();
builder.RegisterType<YamlIncludeResolver>().As<IYamlIncludeResolver>();
builder.RegisterType<ConfigIncludeProcessor>().As<IIncludeProcessor>();
builder.RegisterType<TemplateIncludeProcessor>().As<IIncludeProcessor>();
builder.RegisterType<ConfigurationRegistry>().As<IConfigurationRegistry>();
builder.RegisterType<DefaultObjectFactory>().As<IObjectFactory>();
builder.RegisterType<ConfigurationLoader>().As<IConfigurationLoader>();
builder.RegisterType<ConfigurationFinder>().As<IConfigurationFinder>();
builder.RegisterType<ConfigTemplateGuideService>().As<IConfigTemplateGuideService>().SingleInstance();
builder.RegisterType<ConfigValidationExecutor>();
builder.RegisterType<ConfigParser>();
builder.RegisterType<ConfigSaver>();

@ -1,6 +1,5 @@
using Recyclarr.Common.Extensions;
using Recyclarr.TrashLib.Config.Parsing;
using Recyclarr.TrashLib.Config.Services;
namespace Recyclarr.TrashLib.Config;

@ -1,8 +1,7 @@
using System.IO.Abstractions;
using Recyclarr.TrashLib.Config.ExceptionTypes;
using Recyclarr.TrashLib.Config.Parsing;
using Recyclarr.TrashLib.Config.Parsing.ErrorHandling;
using Recyclarr.TrashLib.Config.Services;
using Recyclarr.TrashLib.ExceptionTypes;
namespace Recyclarr.TrashLib.Config;

@ -1,6 +1,6 @@
using JetBrains.Annotations;
using Recyclarr.Common;
using Recyclarr.TrashLib.Config.Yaml;
using Recyclarr.Yaml;
using YamlDotNet.Serialization;
namespace Recyclarr.TrashLib.Config.EnvironmentVariables;

@ -1,4 +1,4 @@
namespace Recyclarr.TrashLib.ExceptionTypes;
namespace Recyclarr.TrashLib.Config.ExceptionTypes;
public class DuplicateInstancesException : Exception
{

@ -1,4 +1,4 @@
namespace Recyclarr.TrashLib.ExceptionTypes;
namespace Recyclarr.TrashLib.Config.ExceptionTypes;
public class InvalidInstancesException : Exception
{

@ -1,4 +1,4 @@
namespace Recyclarr.TrashLib.ExceptionTypes;
namespace Recyclarr.TrashLib.Config.ExceptionTypes;
public class SplitInstancesException : Exception
{

@ -0,0 +1,2 @@
global using SuperLinq;
global using Serilog;

@ -1,5 +1,3 @@
using Recyclarr.TrashLib.Config.Services;
namespace Recyclarr.TrashLib.Config;
public interface IConfigurationRegistry

@ -1,7 +1,7 @@
using System.IO.Abstractions;
using JetBrains.Annotations;
using Recyclarr.TrashLib.Config.Parsing.ErrorHandling;
using Recyclarr.TrashLib.Config.Yaml;
using Recyclarr.Yaml;
using YamlDotNet.Core;
using YamlDotNet.Serialization;
@ -55,7 +55,7 @@ public class ConfigParser
break;
default:
var msg = ContextualMessages.GetContextualErrorFromException(e) ??
var msg = ConfigContextualMessages.GetContextualErrorFromException(e) ??
e.InnerException?.Message ?? e.Message;
_log.Error("Exception at line {Line}: {Msg}", line, msg);
break;

@ -1,6 +1,6 @@
using System.IO.Abstractions;
using Recyclarr.Common.Extensions;
using Recyclarr.TrashLib.Config.Yaml;
using Recyclarr.Yaml;
namespace Recyclarr.TrashLib.Config.Parsing;

@ -3,7 +3,6 @@ using System.Diagnostics.CodeAnalysis;
using JetBrains.Annotations;
using Recyclarr.TrashLib.Config.Parsing.BackwardCompatibility;
using Recyclarr.TrashLib.Config.Parsing.PostProcessing.ConfigMerging;
using Recyclarr.TrashLib.Config.Services;
using YamlDotNet.Serialization;
namespace Recyclarr.TrashLib.Config.Parsing;

@ -1,6 +1,5 @@
using AutoMapper;
using JetBrains.Annotations;
using Recyclarr.TrashLib.Config.Services;
namespace Recyclarr.TrashLib.Config.Parsing;

@ -1,7 +1,6 @@
using System.IO.Abstractions;
using AutoMapper;
using Recyclarr.TrashLib.Config.Parsing.PostProcessing;
using Recyclarr.TrashLib.Config.Services;
using Serilog.Context;
namespace Recyclarr.TrashLib.Config.Parsing;

@ -3,7 +3,7 @@ using YamlDotNet.Core;
namespace Recyclarr.TrashLib.Config.Parsing.ErrorHandling;
public static class ContextualMessages
public static class ConfigContextualMessages
{
public static string? GetContextualErrorFromException(YamlException e)
{

@ -1,4 +1,4 @@
using Recyclarr.TrashLib.Config.Yaml;
using Recyclarr.Yaml;
using YamlDotNet.Serialization;
namespace Recyclarr.TrashLib.Config.Parsing.ErrorHandling;

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save