From 987d599e1cc7c341fd50f53d3dd4a2d4ec911094 Mon Sep 17 00:00:00 2001 From: Robert Dailey Date: Thu, 14 Sep 2023 07:45:31 -0500 Subject: [PATCH] fix: QP Qualities are now a Replace instead of Add Qualities are very high-stakes: They are error prone to modify across multiple configuration files. The user is not able to control ordering that way. To reduce the chances of users shooting themselves in the foot, we only allow 1 file to uniformly set qualities. --- CHANGELOG.md | 6 ++++++ .../PostProcessing/ConfigMerging/ServiceConfigMerger.cs | 2 +- .../PostProcessing/ConfigMerging/ServiceConfigMergerTest.cs | 6 ------ 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2b347a52..321990b1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Print error information about HTTP 401 instead of "Unable to determine". - Improved wording of remote service error messages. +### Changed + +- `qualities` (inside `quality_profiles`) is now a "Replace" merge operation instead of "Add". This + means only one YAML file manages the full list of qualities. Either an include does it, or you + override the full list in your configuration file. There is no longer any combination. + ## [5.4.1] - 2023-09-12 ### Fixed diff --git a/src/Recyclarr.TrashLib.Config/Parsing/PostProcessing/ConfigMerging/ServiceConfigMerger.cs b/src/Recyclarr.TrashLib.Config/Parsing/PostProcessing/ConfigMerging/ServiceConfigMerger.cs index 07ec9e28..14d397d4 100644 --- a/src/Recyclarr.TrashLib.Config/Parsing/PostProcessing/ConfigMerging/ServiceConfigMerger.cs +++ b/src/Recyclarr.TrashLib.Config/Parsing/PostProcessing/ConfigMerging/ServiceConfigMerger.cs @@ -80,7 +80,7 @@ public abstract class ServiceConfigMerger where T : ServiceConfigYaml .Distinct(StringComparer.InvariantCultureIgnoreCase) .ToList())) }), - Qualities = Combine(a.Qualities, b.Qualities, (a1, b1) => a1.Concat(b1).ToList()) + Qualities = b.Qualities ?? a.Qualities }; } } diff --git a/src/tests/Recyclarr.TrashLib.Config.Tests/Parsing/PostProcessing/ConfigMerging/ServiceConfigMergerTest.cs b/src/tests/Recyclarr.TrashLib.Config.Tests/Parsing/PostProcessing/ConfigMerging/ServiceConfigMergerTest.cs index c926261d..caa96d4a 100644 --- a/src/tests/Recyclarr.TrashLib.Config.Tests/Parsing/PostProcessing/ConfigMerging/ServiceConfigMergerTest.cs +++ b/src/tests/Recyclarr.TrashLib.Config.Tests/Parsing/PostProcessing/ConfigMerging/ServiceConfigMergerTest.cs @@ -498,12 +498,6 @@ public class ServiceConfigMergerTest }, Qualities = new[] { - new QualityProfileQualityConfigYaml - { - Enabled = true, - Name = "quality1", - Qualities = new[] {"quality"} - }, new QualityProfileQualityConfigYaml { Enabled = false,