Reason: Exception would be thrown when no config files are found when
invoking the various `--list` arguments. No configuration should not
prevent these from working.
The `configs` directory may now be used to automatically load YAML
configuration files. Any YAML files in that directory are loaded without
using the `--config` option.
This factory was incorrectly using an Autofac container to resolve
types. This led to symptoms like extra elements in arrays being
deserialized, due to those types being resolved by the DI container.
There's no real reason I can think of to depend on Autofac when
deserializing types from YAML. This object has been around since 1.0.0
and I do not remember why it was created.
- Get rid of `IServiceLocatorProxy`
- Get rid of `ICompositionRoot`
In addition, all unit tests avoid using `BaseCommand` directly, as it
does its own composition root setup and overrides the IntegrationFixture
test setup.
If custom formats are provided, run validation logic against them. This
also was an opportunity to make the ServiceConfiguration validation
logic reusable between Sonarr and Radarr.
BREAKING CHANGE: The deprecated feature that still allowed you to keep
your `recyclarr.yml` next to the executable has been removed. Your
`recyclarr.yml` configuration file must now be located in your
application data directory
The introduction of lifetime scopes inside of configuration processing
in the Command classes introduced issues with the way resolution
overrides happened especially with integration test fixtures.
When using multiple instances of Sonarr at v4 and v3, it was possible to
get a VersionException due to stale information carrying over between
processing instances.
Version enforcement was only running if the user specified release
profiles because that logic was unintentionally tightly coupled to them.
Now that logic runs regardless of whether the user is using RPs or CFs.
When logging HTTP response/request bodies during communication with
Radarr, Sonarr, etc, use a compact form instead. The previous form had
newlines in it which ended up making the logs vertically very long and
hard to follow.
When using `--list-custom-formats` with either the `sonarr` or `radarr`
subcommand, custom formats will be grouped according to the respective
tables at the top of the "Collection of custom formats" page.
A new `log_janitor` setting added to `settings.yml` to allow the user to
specify the maximum number of files to keep when doing log cleanup.
Additionally, the way startup tasks occur has been cleaned up /
refactored to make it easier to integration test.
Simplify the factory pattern so that it creates settings more directly
instead of using a silly setter method.
Also implemented `IntegrationFixture` for easier integration testing.