refactor: Break RecyclarrSettings up into smaller files

data-source-settings
Robert Dailey 3 weeks ago
parent 8ccc17a83e
commit af809aac18

@ -1,6 +1,7 @@
using Recyclarr.Cli.Console.Commands;
using Recyclarr.Cli.Logging;
using Recyclarr.Settings;
using Recyclarr.Settings.Models;
namespace Recyclarr.Cli.Console.Setup;

@ -30,6 +30,7 @@ using Recyclarr.ServarrApi.QualityDefinition;
using Recyclarr.ServarrApi.QualityProfile;
using Recyclarr.ServarrApi.System;
using Recyclarr.Settings;
using Recyclarr.Settings.Models;
using Recyclarr.TrashGuide;
using Recyclarr.TrashGuide.CustomFormat;
using Recyclarr.TrashGuide.MediaNaming;

@ -4,6 +4,7 @@ using Flurl.Http;
using Flurl.Http.Configuration;
using Recyclarr.Http;
using Recyclarr.Settings;
using Recyclarr.Settings.Models;
namespace Recyclarr.Notifications.Apprise;

@ -1,6 +1,6 @@
using Flurl.Http;
using Recyclarr.Notifications.Apprise.Dto;
using Recyclarr.Settings;
using Recyclarr.Settings.Models;
namespace Recyclarr.Notifications.Apprise;

@ -1,6 +1,6 @@
using Flurl.Http;
using Recyclarr.Notifications.Apprise.Dto;
using Recyclarr.Settings;
using Recyclarr.Settings.Models;
namespace Recyclarr.Notifications.Apprise;

@ -1,5 +1,5 @@
using Recyclarr.Notifications.Apprise.Dto;
using Recyclarr.Settings;
using Recyclarr.Settings.Models;
namespace Recyclarr.Notifications.Apprise;

@ -1,5 +1,6 @@
using Recyclarr.Logging;
using Recyclarr.Settings;
using Recyclarr.Settings.Models;
using Serilog.Events;
using Serilog.Templates;

@ -8,6 +8,7 @@ using Recyclarr.Notifications.Apprise;
using Recyclarr.Notifications.Apprise.Dto;
using Recyclarr.Notifications.Events;
using Recyclarr.Settings;
using Recyclarr.Settings.Models;
namespace Recyclarr.Notifications;

@ -2,6 +2,7 @@ using System.IO.Abstractions;
using Recyclarr.Logging;
using Recyclarr.Platform;
using Recyclarr.Settings;
using Recyclarr.Settings.Models;
using Serilog.Context;
namespace Recyclarr.Repo;

@ -1,4 +1,5 @@
using Recyclarr.Settings;
using Recyclarr.Settings.Models;
using Recyclarr.VersionControl;
namespace Recyclarr.Repo;

@ -2,6 +2,7 @@ using System.IO.Abstractions;
using Recyclarr.Logging;
using Recyclarr.Platform;
using Recyclarr.Settings;
using Recyclarr.Settings.Models;
using Serilog.Context;
namespace Recyclarr.Repo;

@ -6,6 +6,7 @@ using Recyclarr.Config.Models;
using Recyclarr.Http;
using Recyclarr.Json;
using Recyclarr.Settings;
using Recyclarr.Settings.Models;
namespace Recyclarr.ServarrApi;

@ -0,0 +1,35 @@
using System.Collections.ObjectModel;
namespace Recyclarr.Settings.Models;
[UsedImplicitly(ImplicitUseKindFlags.Assign, ImplicitUseTargetFlags.WithMembers)]
public record AppriseNotificationSettings
{
public AppriseMode? Mode { get; init; }
public Uri BaseUrl { get; init; } = new("about:empty");
public string Key { get; init; } = "";
public string Tags { get; init; } = "";
public Collection<string> Urls { get; init; } = [];
}
[UsedImplicitly(ImplicitUseKindFlags.Assign, ImplicitUseTargetFlags.WithMembers)]
public record NotificationSettings
{
public NotificationVerbosity Verbosity { get; init; } = NotificationVerbosity.Normal;
public AppriseNotificationSettings? Apprise { get; init; }
public bool IsConfigured() => Apprise is not null;
}
public enum NotificationVerbosity
{
Minimal,
Normal,
Detailed,
}
public enum AppriseMode
{
Stateful,
Stateless,
}

@ -0,0 +1,7 @@
namespace Recyclarr.Settings.Models;
[UsedImplicitly(ImplicitUseKindFlags.Assign, ImplicitUseTargetFlags.WithMembers)]
public record LogJanitorSettings
{
public int MaxFiles { get; init; } = 20;
}

@ -0,0 +1,11 @@
namespace Recyclarr.Settings.Models;
[UsedImplicitly(ImplicitUseKindFlags.Assign, ImplicitUseTargetFlags.WithMembers)]
public record RecyclarrSettings
{
public Repositories Repositories { get; init; } = new();
public bool EnableSslCertificateValidation { get; init; } = true;
public LogJanitorSettings LogJanitor { get; init; } = new();
public string? GitPath { get; init; }
public NotificationSettings Notifications { get; init; } = new();
}

@ -0,0 +1,24 @@
namespace Recyclarr.Settings.Models;
[UsedImplicitly(ImplicitUseKindFlags.Assign, ImplicitUseTargetFlags.WithMembers)]
public record Repositories
{
public TrashRepository TrashGuides { get; init; } = new();
public ConfigTemplateRepository ConfigTemplates { get; init; } = new();
}
[UsedImplicitly(ImplicitUseKindFlags.Assign, ImplicitUseTargetFlags.WithMembers)]
public record TrashRepository : IRepositorySettings
{
public Uri CloneUrl { get; init; } = new("https://github.com/TRaSH-Guides/Guides.git");
public string Branch { get; init; } = "master";
public string? Sha1 { get; init; }
}
[UsedImplicitly(ImplicitUseKindFlags.Assign, ImplicitUseTargetFlags.WithMembers)]
public record ConfigTemplateRepository : IRepositorySettings
{
public Uri CloneUrl { get; init; } = new("https://github.com/recyclarr/config-templates.git");
public string Branch { get; init; } = "master";
public string? Sha1 { get; init; }
}

@ -1,172 +0,0 @@
using System.Collections.ObjectModel;
namespace Recyclarr.Settings;
public record TrashRepository : IRepositorySettings
{
public Uri CloneUrl
{
get;
[UsedImplicitly]
init;
} = new("https://github.com/TRaSH-Guides/Guides.git");
public string Branch
{
get;
[UsedImplicitly]
init;
} = "master";
public string? Sha1
{
get;
[UsedImplicitly]
init;
}
}
public record ConfigTemplateRepository : IRepositorySettings
{
public Uri CloneUrl
{
get;
[UsedImplicitly]
init;
} = new("https://github.com/recyclarr/config-templates.git");
public string Branch
{
get;
[UsedImplicitly]
init;
} = "master";
public string? Sha1
{
get;
[UsedImplicitly]
init;
}
}
public record LogJanitorSettings
{
public int MaxFiles
{
get;
[UsedImplicitly]
init;
} = 20;
}
public record Repositories
{
public TrashRepository TrashGuides
{
get;
[UsedImplicitly]
init;
} = new();
public ConfigTemplateRepository ConfigTemplates
{
get;
[UsedImplicitly]
init;
} = new();
}
public record RecyclarrSettings
{
public Repositories Repositories
{
get;
[UsedImplicitly]
init;
} = new();
public bool EnableSslCertificateValidation
{
get;
[UsedImplicitly]
init;
} = true;
public LogJanitorSettings LogJanitor
{
get;
[UsedImplicitly]
init;
} = new();
public string? GitPath
{
get;
[UsedImplicitly]
init;
}
public NotificationSettings Notifications
{
get;
[UsedImplicitly]
init;
} = new();
}
public record NotificationSettings
{
public NotificationVerbosity Verbosity
{
get;
[UsedImplicitly]
init;
} = NotificationVerbosity.Normal;
public AppriseNotificationSettings? Apprise
{
get;
[UsedImplicitly]
init;
}
public bool IsConfigured() => Apprise is not null;
}
public enum NotificationVerbosity
{
Minimal,
Normal,
Detailed,
}
public record AppriseNotificationSettings
{
public AppriseMode? Mode
{
get;
[UsedImplicitly]
init;
}
public Uri BaseUrl
{
get;
[UsedImplicitly]
init;
} = new("about:empty");
public string Key
{
get;
[UsedImplicitly]
init;
} = "";
public string Tags
{
get;
[UsedImplicitly]
init;
} = "";
public Collection<string> Urls
{
get;
[UsedImplicitly]
init;
} = [];
}
public enum AppriseMode
{
Stateful,
Stateless,
}

@ -1,5 +1,6 @@
using FluentValidation;
using Recyclarr.Common.FluentValidation;
using Recyclarr.Settings.Models;
namespace Recyclarr.Settings;

@ -1,3 +1,4 @@
using Recyclarr.Settings.Models;
using YamlDotNet.Core;
namespace Recyclarr.Settings;

@ -1,4 +1,5 @@
using Autofac;
using Recyclarr.Settings.Models;
namespace Recyclarr.Settings;

@ -3,6 +3,7 @@ using FluentValidation;
using Recyclarr.Common.Extensions;
using Recyclarr.Common.FluentValidation;
using Recyclarr.Platform;
using Recyclarr.Settings.Models;
using Recyclarr.Yaml;
using YamlDotNet.Core;

@ -1,3 +1,5 @@
using Recyclarr.Settings.Models;
namespace Recyclarr.Settings;
internal class SettingsProvider(SettingsLoader loader)

@ -2,6 +2,7 @@ using System.IO.Abstractions;
using Recyclarr.Cli.Console.Setup;
using Recyclarr.Cli.Tests.Reusable;
using Recyclarr.Settings;
using Recyclarr.Settings.Models;
namespace Recyclarr.Cli.Tests.IntegrationTests;

@ -1,6 +1,7 @@
using System.IO.Abstractions;
using Recyclarr.Cli.Tests.Reusable;
using Recyclarr.Settings;
using Recyclarr.Settings.Models;
namespace Recyclarr.Cli.Tests.IntegrationTests;

@ -1,6 +1,7 @@
using System.IO.Abstractions;
using Recyclarr.Platform;
using Recyclarr.Settings;
using Recyclarr.Settings.Models;
using Recyclarr.Yaml;
namespace Recyclarr.Core.Tests.Config.Settings;

@ -1,5 +1,6 @@
using Recyclarr.Repo;
using Recyclarr.Settings;
using Recyclarr.Settings.Models;
namespace Recyclarr.Core.Tests.VersionControl;

Loading…
Cancel
Save