Robert Dailey
982de8806f
refactor: Remove V2 from some filenames
1 year ago
Robert Dailey
4a021a341b
feat!: Remove deprecated CLI commands
1 year ago
Robert Dailey
3e2ce37701
refactor: Delete unused source file
1 year ago
Robert Dailey
38e7980dbe
test: Fix or remove disabled tests
1 year ago
Robert Dailey
32ce3bde21
refactor: Fix serializable issue with CacheException
1 year ago
Robert Dailey
3c5b139523
refactor: Reduce cognitive complexity of method
1 year ago
Robert Dailey
134477ab46
refactor: Add timeouts to all regular expressions
1 year ago
Robert Dailey
286f4b95b1
refactor: Deprecation messages for old style array mapping
1 year ago
Robert Dailey
76040df597
refactor: Reorganize code and fix unit tests
1 year ago
Robert Dailey
6a16bd6045
refactor: Create interface for RuntimeValidationService
1 year ago
Robert Dailey
9a515aa820
build: Exclude config data project from dupe detection
1 year ago
Robert Dailey
5c98949edc
refactor: YAML configuration relies less on custom parsing code
...
This change was necessary to facilitate the ability to serialize
(create/modify) YAML configuration data. This is a prerequisite to
creating config templates and also GUI work in the future.
1 year ago
Robert Dailey
81bbc50ef7
build: Upgrade all packages
1 year ago
Robert Dailey
2652a5c663
build: Move Jetbrains.Annotations to projects
1 year ago
Robert Dailey
53595fc6ce
build: Move Spectre console analyzer to project file
1 year ago
Robert Dailey
b006122921
build: Move GitVersion.Build to projects
1 year ago
Robert Dailey
abb16f29e7
chore: Add file scope for CS files
1 year ago
Robert Dailey
761a247860
feat: Send API key via header instead of query param
1 year ago
Robert Dailey
5fc4da0f52
build: Upgrade Autofac and TestableIO packages
1 year ago
Robert Dailey
fbb5141c25
build: Upgrade YamlDotNet
1 year ago
Robert Dailey
40ed9f366c
build: Upgrade all nuget packages
1 year ago
Robert Dailey
29ca61f68f
refactor: Address several resharper analysis issues
1 year ago
Robert Dailey
39f106c72b
refactor: Fix warning related to FluentValidation & NRT
1 year ago
Robert Dailey
9d53fd0152
fix: Do not assume only one field element in CF specifications
...
For most CF specifications, there is only one element in the `fields`
array, which has a `value` property inside of each of its objects. One
particular specification, however, deviates from this assumption. The
"SizeSpecification" has been observed with *two* field objects.
Logic for parsing custom format CFs no longer assumes that the fields
property may only have one element in it.
Fixes #178
1 year ago
Robert Dailey
bebd28bc11
build: Upgrade FluentValidation
1 year ago
Robert Dailey
fc6a186809
build: Upgrade morelinq
1 year ago
Robert Dailey
93a8c8bc22
build: Upgrade all nuget packages
1 year ago
Robert Dailey
1a16432341
refactor: Remove inappropriate usage of `required` in CliSettings
1 year ago
Robert Dailey
f7bfab065d
fix: Show default value in `config list` help
1 year ago
Robert Dailey
dc93b10e64
test: Add await where necessary
1 year ago
Robert Dailey
e54cef0859
feat: `config list local` implemented
1 year ago
Robert Dailey
ce481e0d1f
refactor: Config loader no longer reuses state
1 year ago
Robert Dailey
f5386dfeda
fix: Template config listing is no longer reversed
1 year ago
Robert Dailey
f6f6ea3192
style: Solution-wide code cleanup
1 year ago
Robert Dailey
a3c172cf02
feat: Add config list templates command
...
Lists template YAML files in the trash repo.
1 year ago
Robert Dailey
902fbad4bf
chore: Remove unused run configuration
1 year ago
Robert Dailey
a934e68227
fix: Enable strict parsing to error on unknown CLI options
1 year ago
Robert Dailey
7c15c14f40
refactor: More concise usage of UsedImplicitly in SyncCommand
1 year ago
Robert Dailey
fe2b062ba7
fix: Consistently set FormatIDs to avoid incorrect logs
1 year ago
Robert Dailey
f298926353
fix: Use INF instead of DBG for score update log
1 year ago
Robert Dailey
58bbb94a44
build: Upgrade all nuget packages
1 year ago
Robert Dailey
a22d6dec33
fix: Log janitor updated to clean up logs in new 'cli' dir
1 year ago
Robert Dailey
e222f547cc
test: Fix config loader test
...
No exception is thrown when a non-empty config results in no usable
configuration.
1 year ago
Robert Dailey
c82894291f
fix: Do not fail on empty service type sections
1 year ago
Robert Dailey
bf9a08c19c
test: Fix broken unit test
1 year ago
Robert Dailey
cffb8d783a
refactor: Convert processors/updaters to pipelines
1 year ago
Robert Dailey
e3d6d4f79a
refactor: Remove DI for IServiceConfiguration in API services
1 year ago
Robert Dailey
bcc65857df
refactor: Split Sonarr/Radarr orthogonally into service-based classes
...
Instead of organizing logic using service, such as Sonarr or Radarr,
organize it using function. So now logic is broken up by Custom Format,
Release Profile, and Quality Size.
1 year ago
Robert Dailey
7dec45a07a
refactor: Eliminate generics for config type
1 year ago
Robert Dailey
289d661247
refactor: Silence warnings in _Layout.cshtml
1 year ago
Robert Dailey
c0bad938d7
feat: Split and restructure CLI logs
1 year ago
Robert Dailey
5adb966aa9
refactor: Add serilog to implicit usings
1 year ago
Robert Dailey
94b000c55f
build: Upgrade nuget packages for tests
1 year ago
Robert Dailey
adeb478777
fix: Exception when either Sonarr or Radarr configs are empty
1 year ago
Robert Dailey
7be4189378
refactor: Code cleanup
1 year ago
Robert Dailey
d66aa8ba44
refactor: Solution-wide code cleanup
1 year ago
Robert Dailey
86eca33eb3
refactor: Move Commands.Shared CS files up a level
...
This is to address a roslyn warning.
1 year ago
Robert Dailey
ce6afa4157
refactor: Fix more analysis issues
1 year ago
Robert Dailey
c226097cb5
refactor: Clone URL is now a Uri object
1 year ago
Robert Dailey
c45860d280
refactor: BaseUrl type is now Uri instead of string
1 year ago
Robert Dailey
7185cc5844
refactor: Fix various analysis issues
1 year ago
Robert Dailey
5d0db006ba
chore(style): Overhaul editorconfig
1 year ago
Robert Dailey
7bc5d407e3
build: Upgrade multiple nuget packages
1 year ago
Robert Dailey
4275336a8a
refactor: Fix unused member variable inspection issue
1 year ago
Robert Dailey
c05d73a84b
refactor: Remove redundant config validation
...
Validation already happens in ConfigParser, then SyncProcessor does not
need to do it as well.
1 year ago
Robert Dailey
8e22a5d561
test: Verify exceptional case for env var parsing
1 year ago
voltron4lyfe
aa523a0e14
feat: Enable referencing environment variables in config
...
Closes #145
Closes #154
1 year ago
Robert Dailey
6e397aefcf
test: Restructure tests
1 year ago
Robert Dailey
b9dc15f6a7
refactor: Relocate secrets yaml behavior to secrets dir
1 year ago
Robert Dailey
6fb1d4ad66
feat: Improved preview output for release profiles
1 year ago
Robert Dailey
964aeb8380
feat: Improved preview output for custom formats
1 year ago
Robert Dailey
fd3d76bc55
refactor: Rename Empty/NotEmpty extension methods
1 year ago
Robert Dailey
61c9dbcbf9
feat: Improved preview output for quality sizes
1 year ago
Robert Dailey
806a0fa64f
refactor: Do not use "empty" for SonarrCommand terms
1 year ago
Robert Dailey
7cdd94e626
fix: Use right deprecation message based on arguments
1 year ago
Robert Dailey
de3bf08543
fix: Update local repo before running commands that need it
1 year ago
Robert Dailey
7a008a6639
feat: CLI Revamp
...
Deprecate old commands: create-config, radarr, sonarr
New commands: config, sync, list
1 year ago
Robert Dailey
3ed9d4c814
chore: Update run configurations in Rider
1 year ago
Robert Dailey
64306db2dc
refactor: Add exception message enricher
...
Allows exception message without a stack trace to be written to the
console, while full exception details are still written to file sinks.
1 year ago
Robert Dailey
d73a888247
fix: Do not print skipped CFs to the console
...
They are too verbose
2 years ago
Robert Dailey
8c7768891e
fix: Better handling of invalid CF cache entries
...
Due to changes in v4.1.1, sometimes invalid cache entries (zero-value)
were written to the cache. These are now treated as invalid and matches
by name will be performed.
Fixes #160
2 years ago
Robert Dailey
18edb84133
test: Use default for argument matcher
2 years ago
Robert Dailey
28fa09f328
fix: Set CF IDs when no cache entry is present
...
Fixes #160
2 years ago
Robert Dailey
7ad4654d85
fix: Remove unredacted request URI from log files on exception
2 years ago
Robert Dailey
fd216c1b60
fix: Service URL is now part of cache directory name
2 years ago
Robert Dailey
5c3da551bb
fix: Detect and warn about conflicting CFs during sync
2 years ago
Robert Dailey
350fd21358
refactor: Overhaul config validation logic
...
- Validation of custom formats in Sonarr v4 is now performed
2 years ago
Robert Dailey
6997f4ca6a
chore: Rider run configuration updates
2 years ago
Robert Dailey
d5cbdb8648
chore: Move test projects to a solution folder
2 years ago
Robert Dailey
fea6575ae8
style: Code cleanup on entire solution
2 years ago
Robert Dailey
3b44964479
feat: Add clear separation between instance logs in console output
2 years ago
Robert Dailey
a4be018c44
feat: More detail output for CF sync changes
2 years ago
Robert Dailey
0830d1d6c8
feat: Re-introduce the CF name field in cache for display purposes
...
The CF name in cache is needed when printing information about deleted
CFs to console output.
2 years ago
Robert Dailey
8023f7f011
fix: Use comments for group headers in custom format listing
2 years ago
Robert Dailey
7358521a7a
fix: Sort CFs alphabetically in CLI listing
2 years ago
Robert Dailey
3f393d9894
chore: Updates to Rider run configurations
2 years ago
Robert Dailey
d71bce4990
fix: Do not perform actual logic when doing preview
...
Fixes #158
2 years ago
Robert Dailey
f7a7902c2c
build: Update several package dependencies
2 years ago
Robert Dailey
08d1ced7b6
refactor: Newline after message, but before exception details
2 years ago
Robert Dailey
b3666ec3cb
refactor: Less verbose error messages
2 years ago
Robert Dailey
eb9898fdd7
refactor: Implement Yaml Behavior system for extending parsing features
...
YamlSerializerFactory continues to grow as we add parsing features to
YAML files. A new behavior system now provides granular sets of features
to the factory. To extend the functionality of the YAML parser,
implement the `IYamlBehavior` interface. It will automatically be
registered to Autofac and injected into `YamlSerializerFactory`.
2 years ago
Robert Dailey
fc0daf631b
refactor: Address analysis issues
2 years ago
Robert Dailey
77603b6c93
refactor: Rename all projects to have Recyclarr prefix
2 years ago
Robert Dailey
bbb2195df2
feat!: Change Sonarr quality definitions config YAML to match Radarr
...
- Shares same syntax as Radarr
- Only Sonarr impacted
- Default behavior of `preferred_ratio` changed.
- Hybrid quality definition removed.
2 years ago
Robert Dailey
ab352f6a4c
fix: Do not warn about empty configs when they aren't really empty
...
This was caused by a logic error that thought that a file was empty just
because it didn't find any configuration data relevant to the current
subcommand. For example, a config file that only has Radarr config in it
when you run `recyclarr sonarr`.
2 years ago
Robert Dailey
ebb33f3328
refactor: Log git error message on clone retry
2 years ago
Robert Dailey
8a124d12f9
fix: Allow empty YAML files to be loaded
...
- Better contextual logging for YAML files
- When there's a syntax error in file parsing, skip that file.
- When validation fails for instance config, skip just that instance.
- If a file is empty, print a warning and skip it.
- Print instance name (instead of URL) in more places.
2 years ago
Robert Dailey
51d0219a1a
refactor: Move RegisterMockFor to extension method
2 years ago
Robert Dailey
c981a555ad
test: Use log context for existing tests
2 years ago
Robert Dailey
9acdf7da14
feat: Improved logging
...
- Handle exceptions better (also write them to serilog)
- Better redaction code
- Less verbose HTTP exception output
- Log more details about git cmd failures
2 years ago
Robert Dailey
94e55b6182
build: Nuget package upgrades
2 years ago
Robert Dailey
c1eb21d9ba
build: Remove System.Private.Uri (no longer used)
...
This was only added to address vulnerability scan, but this package is
no longer implicitly referenced.
2 years ago
Robert Dailey
69aec1450a
build: Move ManagePackageVersionsCentrally to Build.props
2 years ago
Robert Dailey
8d091ff471
build: Upgrade GUI-specific nuget packages
2 years ago
Robert Dailey
2e31dacea9
refactor: Code changes after System.IO.Abstractions upgrade
2 years ago
Robert Dailey
e47e1b2f82
build: Upgrade System.IO.Abstractions
2 years ago
Robert Dailey
f16008d225
refactor: Use better argument handling for git operations
...
Use array of args instead of string concatenations. Simplifies the logic
and also makes quoting args easier / more portable.
2 years ago
Robert Dailey
2b28fb9c73
chore: Update Rider run configurations for .NET 7
2 years ago
Robert Dailey
360f683718
chore: Remove another riderMarkupCache.xml file
2 years ago
Robert Dailey
d04b10f9d0
refactor: Utilize DI for Flurl
...
The goal is to eliminate the need for a "global setup" step for HTTP
communication. This can instead be done in the composition root as part
of the factory to request FlurlClient objects.
2 years ago
Robert Dailey
2a79a50d50
fix: Address multiple issues with the config template
...
- Simplify the comment style for YAML intended to be uncommented by the
user. Now they just need to delete the leading hash and YAML will be
at the appropriate indentation.
- Add additional explanation at the top about how to set up
configuration based on the guide.
- Fix link to the configuration reference.
2 years ago
Robert Dailey
53d7233b1e
build: Remove LangVersion from build props
...
Prefer to use the language version that is enabled by default based on
compatibility with selected target framework.
2 years ago
Robert Dailey
4a9f753423
chore: Delete and ignore riderMarkupCache.xml
...
This file continuously changes which indicates to me it should not be
versioned. This file must be new because there's no documentation
regarding it.
2 years ago
Robert Dailey
dfce05a9e8
build: Update Rider project files
2 years ago
Robert Dailey
969499bf5a
build: Fix for test packages not being assigned to TestLibrary.csproj
2 years ago
Robert Dailey
e5a0302c13
chore: Delete global.json (not needed)
2 years ago
Robert Dailey
6811c2c816
refactor: Do not create the RepoDirectory on start up
...
Let the GitRepositoryFactory do it.
2 years ago
Robert Dailey
794c8733ef
test: Fix CompositionRoot tests
...
Some types do not get registered until later on after
CompositionRoot.Setup() is called. Use IntegrationFixture to fulfill
mock versions of those types.
2 years ago
Robert Dailey
d83edd9e2b
refactor: Add logging to GitRepository / Factory
2 years ago
Robert Dailey
46067dffb0
test: Do not use NotThrow() in composition root test
...
Because Fluent.Assertions does not print the full exception details when
you use `Should().NotThrow()`. See issue:
https://github.com/fluentassertions/fluentassertions/issues/2015
2 years ago
Robert Dailey
b34798eabb
feat!: Remove LibGit2Sharp Library
...
This library was causing numerous issues related to git operations. The
straw that broke the camel's back is that it does not do automatic
garbage collection (`git gc --auto`). So a user's repo directory
continues to grow in size.
The replacement is CliWrap, which is just a simple wrapper library that
allows easy execution of shell commands. Specifically, `git` commands.
BREAKING CHANGE: This change now requires the `git` executable to be
installed by the user if run on a host system. The git executable will
be provided automatically for the docker image.
2 years ago
Robert Dailey
f810749b32
chore: Shared run configs updated for .NET 7.0 paths
2 years ago
Robert Dailey
7fdca11bc4
revert: "chore: Move GitVersion.yml into src dir"
...
This reverts commit 724d2c41aa
.
2 years ago
Robert Dailey
9fc7444f3c
refactor: Fix ASP.NET warning
...
[ASP0012] Suggest using builder.Services instead of ConfigureServices
2 years ago
Robert Dailey
dd8b518735
build: Upgrade all Nuget packages
2 years ago
Robert Dailey
b5a692a710
build: Upgrade to .NET 7.0
2 years ago
Robert Dailey
1d604b141b
feat: Named instances support
...
Use mapping-style instead of array-style for instances in configuration
YAML.
2 years ago
Robert Dailey
4ae54d8f54
fix: Restore compare by name for CFs
...
This is still needed if there already exist CFs in Radarr/Sonarr with
the same name.
2 years ago
Robert Dailey
7bfecdb3f3
build: Add nuget.config
2 years ago
Robert Dailey
3df3bc869e
refactor: Silence unused Version param warning
2 years ago
Robert Dailey
2ed8bdb55e
chore: Jetbrains Rider .idea files
2 years ago
Robert Dailey
e4a3e9d1fe
refactor: Remove unused Resolve method in IntegrationFixture
...
This method also had a bug in it: It leaked the child lifetime scope.
2 years ago
Robert Dailey
56666a245a
refactor: Do not fail on missing DTO properties
...
Previously, if Sonarr or Radarr added a new property to a DTO, Recyclarr
would fail when attempting to deserialize those responses. The purpose
of this was to catch compatibility issues early. However, this actually
prohibits a more useful case: Deserializing only data we care about and
having the freedom to ignore other, superfluous stuff.
2 years ago
Robert Dailey
081856e19e
refactor: Generalize compatibility check logic
...
Previously, only Sonarr had compatibility checking logic, which also
consequently meant that version information was obtained and logged for
Sonarr services. However, Radarr had no such checks because
compatibility has not yet been an issue. However, we still would like to
see version information printed when running Radarr instances.
2 years ago
Robert Dailey
934f30d71e
refactor: Print Recyclarr version to debug logs
2 years ago
Robert Dailey
724d2c41aa
chore: Move GitVersion.yml into src dir
2 years ago
voltron4lyfe
0dbc1ac7fd
feat: Support secrets in config ( #139 )
...
Fixes #105
2 years ago
Robert Dailey
e5750a97ba
refactor: Fix resharper analysis suggestions
2 years ago
Robert Dailey
a853f0830d
refactor: Separate config finding logic from ServiceCommand
...
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.
2 years ago
Robert Dailey
f251bbeba4
feat: Support for loading configs in a directory
...
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.
2 years ago