fix: Sync file naming even if rename is not true

spectre-console-remove-di-hacks
Robert Dailey 8 months ago
parent 9f7313c180
commit d0ff537d06

@ -8,6 +8,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased] ## [Unreleased]
### Fixed
- Sync file naming configuration even if `rename` is not set to `true`.
## [6.0.0] - 2023-09-29 ## [6.0.0] - 2023-09-29
This release contains **BREAKING CHANGES**. See the [v6.0 Upgrade Guide][breaking6] for required This release contains **BREAKING CHANGES**. See the [v6.0 Upgrade Guide][breaking6] for required

@ -19,37 +19,25 @@ public class MediaNamingTransactionPhase
private static RadarrMediaNamingDto UpdateRadarrDto(RadarrMediaNamingDto serviceDto, ProcessedNamingConfig config) private static RadarrMediaNamingDto UpdateRadarrDto(RadarrMediaNamingDto serviceDto, ProcessedNamingConfig config)
{ {
var configDto = (RadarrMediaNamingDto) config.Dto; var configDto = (RadarrMediaNamingDto) config.Dto;
var combinedDto = serviceDto with return serviceDto with
{ {
RenameMovies = configDto.RenameMovies, RenameMovies = configDto.RenameMovies,
MovieFolderFormat = configDto.MovieFolderFormat MovieFolderFormat = configDto.MovieFolderFormat,
StandardMovieFormat = configDto.StandardMovieFormat
}; };
if (configDto.RenameMovies is true)
{
combinedDto.StandardMovieFormat = configDto.StandardMovieFormat;
}
return combinedDto;
} }
private static SonarrMediaNamingDto UpdateSonarrDto(SonarrMediaNamingDto serviceDto, ProcessedNamingConfig config) private static SonarrMediaNamingDto UpdateSonarrDto(SonarrMediaNamingDto serviceDto, ProcessedNamingConfig config)
{ {
var configDto = (SonarrMediaNamingDto) config.Dto; var configDto = (SonarrMediaNamingDto) config.Dto;
var combinedDto = serviceDto with return serviceDto with
{ {
RenameEpisodes = configDto.RenameEpisodes, RenameEpisodes = configDto.RenameEpisodes,
SeriesFolderFormat = configDto.SeriesFolderFormat, SeriesFolderFormat = configDto.SeriesFolderFormat,
SeasonFolderFormat = configDto.SeasonFolderFormat SeasonFolderFormat = configDto.SeasonFolderFormat,
StandardEpisodeFormat = configDto.StandardEpisodeFormat,
DailyEpisodeFormat = configDto.DailyEpisodeFormat,
AnimeEpisodeFormat = configDto.AnimeEpisodeFormat
}; };
if (configDto.RenameEpisodes is true)
{
combinedDto.StandardEpisodeFormat = configDto.StandardEpisodeFormat;
combinedDto.DailyEpisodeFormat = configDto.DailyEpisodeFormat;
combinedDto.AnimeEpisodeFormat = configDto.AnimeEpisodeFormat;
}
return combinedDto;
} }
} }

@ -5,14 +5,14 @@ namespace Recyclarr.ServarrApi.MediaNaming;
public record RadarrMediaNamingDto : MediaNamingDto public record RadarrMediaNamingDto : MediaNamingDto
{ {
private string? _movieFormat; private readonly string? _movieFormat;
private readonly string? _folderFormat; private readonly string? _folderFormat;
private readonly bool? _renameMovies; private readonly bool? _renameMovies;
public string? StandardMovieFormat public string? StandardMovieFormat
{ {
get => _movieFormat; get => _movieFormat;
set => DtoUtil.SetIfNotNull(ref _movieFormat, value); init => DtoUtil.SetIfNotNull(ref _movieFormat, value);
} }
public string? MovieFolderFormat public string? MovieFolderFormat
@ -27,6 +27,6 @@ public record RadarrMediaNamingDto : MediaNamingDto
init => DtoUtil.SetIfNotNull(ref _renameMovies, value); init => DtoUtil.SetIfNotNull(ref _renameMovies, value);
} }
[UsedImplicitly, JsonExtensionData] [UsedImplicitly] [JsonExtensionData]
public Dictionary<string, object> ExtraJson { get; init; } = new(); public Dictionary<string, object> ExtraJson { get; init; } = new();
} }

@ -7,9 +7,9 @@ public record SonarrMediaNamingDto : MediaNamingDto
{ {
private readonly string? _seriesFolderFormat; private readonly string? _seriesFolderFormat;
private readonly string? _seasonFolderFormat; private readonly string? _seasonFolderFormat;
private string? _standardEpisodeFormat; private readonly string? _standardEpisodeFormat;
private string? _dailyEpisodeFormat; private readonly string? _dailyEpisodeFormat;
private string? _animeEpisodeFormat; private readonly string? _animeEpisodeFormat;
private readonly bool? _renameEpisodes; private readonly bool? _renameEpisodes;
public string? SeriesFolderFormat public string? SeriesFolderFormat
@ -27,19 +27,19 @@ public record SonarrMediaNamingDto : MediaNamingDto
public string? StandardEpisodeFormat public string? StandardEpisodeFormat
{ {
get => _standardEpisodeFormat; get => _standardEpisodeFormat;
set => DtoUtil.SetIfNotNull(ref _standardEpisodeFormat, value); init => DtoUtil.SetIfNotNull(ref _standardEpisodeFormat, value);
} }
public string? DailyEpisodeFormat public string? DailyEpisodeFormat
{ {
get => _dailyEpisodeFormat; get => _dailyEpisodeFormat;
set => DtoUtil.SetIfNotNull(ref _dailyEpisodeFormat, value); init => DtoUtil.SetIfNotNull(ref _dailyEpisodeFormat, value);
} }
public string? AnimeEpisodeFormat public string? AnimeEpisodeFormat
{ {
get => _animeEpisodeFormat; get => _animeEpisodeFormat;
set => DtoUtil.SetIfNotNull(ref _animeEpisodeFormat, value); init => DtoUtil.SetIfNotNull(ref _animeEpisodeFormat, value);
} }
public bool? RenameEpisodes public bool? RenameEpisodes
@ -48,6 +48,6 @@ public record SonarrMediaNamingDto : MediaNamingDto
init => DtoUtil.SetIfNotNull(ref _renameEpisodes, value); init => DtoUtil.SetIfNotNull(ref _renameEpisodes, value);
} }
[UsedImplicitly, JsonExtensionData] [UsedImplicitly] [JsonExtensionData]
public Dictionary<string, object> ExtraJson { get; init; } = new(); public Dictionary<string, object> ExtraJson { get; init; } = new();
} }

@ -7,7 +7,7 @@ namespace Recyclarr.Cli.Tests.Pipelines.MediaNaming;
[Parallelizable(ParallelScope.All)] [Parallelizable(ParallelScope.All)]
public class MediaNamingTransactionPhaseRadarrTest public class MediaNamingTransactionPhaseRadarrTest
{ {
[Test, AutoMockData] [Test] [AutoMockData]
public void Radarr_left_null( public void Radarr_left_null(
MediaNamingTransactionPhase sut) MediaNamingTransactionPhase sut)
{ {
@ -28,7 +28,7 @@ public class MediaNamingTransactionPhaseRadarrTest
result.Should().BeEquivalentTo(right.Dto, o => o.RespectingRuntimeTypes()); result.Should().BeEquivalentTo(right.Dto, o => o.RespectingRuntimeTypes());
} }
[Test, AutoMockData] [Test] [AutoMockData]
public void Radarr_right_null( public void Radarr_right_null(
MediaNamingTransactionPhase sut) MediaNamingTransactionPhase sut)
{ {
@ -49,7 +49,7 @@ public class MediaNamingTransactionPhaseRadarrTest
result.Should().BeEquivalentTo(left, o => o.RespectingRuntimeTypes()); result.Should().BeEquivalentTo(left, o => o.RespectingRuntimeTypes());
} }
[Test, AutoMockData] [Test] [AutoMockData]
public void Radarr_right_and_left_with_rename( public void Radarr_right_and_left_with_rename(
MediaNamingTransactionPhase sut) MediaNamingTransactionPhase sut)
{ {
@ -75,7 +75,7 @@ public class MediaNamingTransactionPhaseRadarrTest
result.Should().BeEquivalentTo(right.Dto, o => o.RespectingRuntimeTypes()); result.Should().BeEquivalentTo(right.Dto, o => o.RespectingRuntimeTypes());
} }
[Test, AutoMockData] [Test] [AutoMockData]
public void Radarr_right_and_left_without_rename( public void Radarr_right_and_left_without_rename(
MediaNamingTransactionPhase sut) MediaNamingTransactionPhase sut)
{ {
@ -101,7 +101,7 @@ public class MediaNamingTransactionPhaseRadarrTest
result.Should().BeEquivalentTo(new RadarrMediaNamingDto result.Should().BeEquivalentTo(new RadarrMediaNamingDto
{ {
RenameMovies = false, RenameMovies = false,
StandardMovieFormat = "file_format", StandardMovieFormat = "file_format2",
MovieFolderFormat = "folder_format2" MovieFolderFormat = "folder_format2"
}, },
o => o.RespectingRuntimeTypes()); o => o.RespectingRuntimeTypes());

@ -7,7 +7,7 @@ namespace Recyclarr.Cli.Tests.Pipelines.MediaNaming;
[Parallelizable(ParallelScope.All)] [Parallelizable(ParallelScope.All)]
public class MediaNamingTransactionPhaseSonarrTest public class MediaNamingTransactionPhaseSonarrTest
{ {
[Test, AutoMockData] [Test] [AutoMockData]
public void Sonarr_left_null( public void Sonarr_left_null(
MediaNamingTransactionPhase sut) MediaNamingTransactionPhase sut)
{ {
@ -31,7 +31,7 @@ public class MediaNamingTransactionPhaseSonarrTest
result.Should().BeEquivalentTo(right.Dto, o => o.RespectingRuntimeTypes()); result.Should().BeEquivalentTo(right.Dto, o => o.RespectingRuntimeTypes());
} }
[Test, AutoMockData] [Test] [AutoMockData]
public void Sonarr_right_null( public void Sonarr_right_null(
MediaNamingTransactionPhase sut) MediaNamingTransactionPhase sut)
{ {
@ -55,7 +55,7 @@ public class MediaNamingTransactionPhaseSonarrTest
result.Should().BeEquivalentTo(left, o => o.RespectingRuntimeTypes()); result.Should().BeEquivalentTo(left, o => o.RespectingRuntimeTypes());
} }
[Test, AutoMockData] [Test] [AutoMockData]
public void Sonarr_right_and_left_with_rename( public void Sonarr_right_and_left_with_rename(
MediaNamingTransactionPhase sut) MediaNamingTransactionPhase sut)
{ {
@ -87,7 +87,7 @@ public class MediaNamingTransactionPhaseSonarrTest
result.Should().BeEquivalentTo(right.Dto, o => o.RespectingRuntimeTypes()); result.Should().BeEquivalentTo(right.Dto, o => o.RespectingRuntimeTypes());
} }
[Test, AutoMockData] [Test] [AutoMockData]
public void Sonarr_right_and_left_without_rename( public void Sonarr_right_and_left_without_rename(
MediaNamingTransactionPhase sut) MediaNamingTransactionPhase sut)
{ {
@ -121,9 +121,9 @@ public class MediaNamingTransactionPhaseSonarrTest
RenameEpisodes = false, RenameEpisodes = false,
SeasonFolderFormat = "season_default2", SeasonFolderFormat = "season_default2",
SeriesFolderFormat = "series_plex2", SeriesFolderFormat = "series_plex2",
StandardEpisodeFormat = "episodes_standard_default", StandardEpisodeFormat = "episodes_standard_default2",
DailyEpisodeFormat = "episodes_daily_default", DailyEpisodeFormat = "episodes_daily_default2",
AnimeEpisodeFormat = "episodes_anime_default" AnimeEpisodeFormat = "episodes_anime_default2"
}, },
o => o.RespectingRuntimeTypes()); o => o.RespectingRuntimeTypes());
} }

Loading…
Cancel
Save