using Autofac.Features.Indexed; using Recyclarr.Cli.Pipelines.Generic; using Recyclarr.Cli.Pipelines.MediaNaming.PipelinePhases.Config; using Recyclarr.Config.Models; using Recyclarr.ServarrApi.MediaNaming; using Recyclarr.TrashGuide; using Recyclarr.TrashGuide.MediaNaming; namespace Recyclarr.Cli.Pipelines.MediaNaming.PipelinePhases; public record InvalidNamingConfig(string Type, string ConfigValue); public record ProcessedNamingConfig { public required MediaNamingDto Dto { get; init; } public IReadOnlyCollection InvalidNaming { get; init; } = new List(); } public class MediaNamingConfigPhase( IMediaNamingGuideService guide, IIndex configPhaseStrategyFactory) : IConfigPipelinePhase { public async Task Execute(MediaNamingPipelineContext context, IServiceConfiguration config) { var lookup = new NamingFormatLookup(); var strategy = configPhaseStrategyFactory[config.ServiceType]; var dto = await strategy.ProcessNaming(config, guide, lookup); context.ConfigOutput = new ProcessedNamingConfig {Dto = dto, InvalidNaming = lookup.Errors}; } }