1
0
Fork 0
mirror of https://github.com/Radarr/Radarr synced 2025-01-03 05:44:50 +00:00

fixup! New: Deprecate use of movie file tokens in Movie Folder Format

This commit is contained in:
Bogdan 2024-10-02 22:06:08 +03:00
parent 655ebe07a8
commit 5cf3417b8f

View file

@ -23,6 +23,7 @@ public static IRuleBuilderOptions<T, string> ValidMovieFolderFormat<T>(this IRul
{ {
ruleBuilder.SetValidator(new NotEmptyValidator(null)); ruleBuilder.SetValidator(new NotEmptyValidator(null));
ruleBuilder.SetValidator(new IllegalCharactersValidator()); ruleBuilder.SetValidator(new IllegalCharactersValidator());
ruleBuilder.SetValidator(new IllegalMovieFolderTokensValidator());
return ruleBuilder.SetValidator(new RegularExpressionValidator(FileNameBuilder.MovieTitleRegex)).WithMessage("Must contain movie title"); return ruleBuilder.SetValidator(new RegularExpressionValidator(FileNameBuilder.MovieTitleRegex)).WithMessage("Must contain movie title");
} }
@ -44,6 +45,30 @@ protected override bool IsValid(PropertyValidatorContext context)
} }
} }
public class IllegalMovieFolderTokensValidator : PropertyValidator
{
protected override string GetDefaultMessageTemplate() => "Must not contain deprecated tokens derived from file properties: {tokens}";
protected override bool IsValid(PropertyValidatorContext context)
{
if (context.PropertyValue is not string value)
{
return false;
}
var match = FileNameBuilder.DeprecatedMovieFolderTokensRegex.Matches(value);
if (match.Any())
{
context.MessageFormatter.AppendArgument("tokens", string.Join(", ", match.Select(c => c.Value).ToArray()));
return false;
}
return true;
}
}
public class IllegalCharactersValidator : PropertyValidator public class IllegalCharactersValidator : PropertyValidator
{ {
private static readonly char[] InvalidPathChars = Path.GetInvalidPathChars(); private static readonly char[] InvalidPathChars = Path.GetInvalidPathChars();