When using filters like `exclude`, it was possible for terms to not get
synced when they should have. This was due to a misunderstanding of how
`ExceptBy()` and `IntersectBy()` work. According to [an issue][1] on the
dotnet runtime repo, this is by design. The fix is to just avoid those
in favor of `Where()`.
Fixes#69.
[1]: https://github.com/dotnet/dotnet-api-docs/issues/7656
The removal of the markdown parsing logic in v2.0 accidentally also
deleted the logic responsible for handling this property. The code has
been refactored to introduce a "filter pipeline" system that handles
include/exclude filtering as well as strict negative score support.
New `--list-terms` command line option which can be used get a list of
terms for a release profile. These lists of terms can be used to include
or exclude specific optionals, for example.
Can be used to quickly and conveniently get a list of release profiles
(and their Trash IDs) so you know what to add in your YAML config under
`release_profiles`.
Previously, Trash Updater would crawl & parse the Trash Guide's markdown
files to obtain information about release profiles. This is complex and
error prone. Thanks to work done by Nitsua, we now have JSON files
available that describe release profiles in a more concise way. These
files are located at `docs/json/sonarr` in the [Trash Guide repo][1].
All of the markdown parsing code has been removed from Trash Updater.
Now, it shares the same git clone of the Trash Guide repository
originally used for Radarr custom formats to access those release
profile JSON files.
BREAKING CHANGE: The old `type:` property for release profiles is
removed in favor of `trash_id:`, which identifies a specific JSON file
to pull data from. Users are required to update their `trash.yml` and
other configuration files to use the new schema. Until changes are made,
users will see errors when they run `trash sonarr` commands.
[1]: https://github.com/TRaSH-/Guides/tree/master/docs/json/sonarr
I observed that when the user specifies an invalid URL to their Radarr
or Sonarr instance (such as forgetting to use the Base URL), it attempts
to redirect by returning HTTP 300. This is now prevented and a warning
is printed to output.
When `IncludeOptionals` was set to false, release profiles with only
optional terms in them would fail to sync to Sonarr because they were
empty. The filter profile logic now considers this config setting and if
set to false, it will ensure that optionals-only release profiles get
filtered out and not pushed to Sonarr.
The Trash sonarr guide was restructured so that optionals were in a
dedicated release profile that had no non-optional terms in it. Logic
was only checking if a profile had non-optional terms in it, and if not,
it got tossed out. Logic now also checks to make sure there are no
optional terms as well.
Code for cloning the repository refactored to handle failures better.
Namely this means deleting the repository and cloning it again if there
is a failure.
Useful in cases where Sonarr or Radarr use HTTPS with a self-signed
certificate. Normally communication with such an instance would fail
since Trash Updater, by default, validates with certificate authorities.
This new setting allows you to disable certificate validation when
communicating with Sonarr or Radarr, avoiding the need to add a
self-signed certificate to your certification store. Use at your own
risk.
Fixes#20.
The Sonarr developers made a backward-breaking API change resulting in
Trash Updater being unable to obtain, create, or update release
profiles. This fix keeps backward compatibility with the previous and
current schema at the cost of additional code complexity.
The specific breakage was in the Ignored and Required properties of the
Release Profile JSON schema. They were converted from string type to
array.
Offending change:
deed85d2f9/src/NzbDrone.Core/Datastore/Migration/162_release_profile_to_array.csFixes#16
Applies to Windows only. No `PackageReference` explicitly changed since
it's already using wildcard version. So the next release will naturally
have the fix. But it's worth pointing out in the changelog.
A new setting under `quality_profiles` of the custom format listing
named `reset_unmatched_scores` that allows the user to specify if
unmapped scores (those CFs not specified in config) should be reset to 0
during quality profile updates.
Fixes#10.
Trash has started putting scores in the actual importable JSON data. If
a score is found in the JSON data, that takes precedence over any score
parsed from the guide markdown. The `trash_score` field is not required
for backward compatibility.