diff --git a/Compare/Models/Binder/AppSettings.cs b/Compare/Models/Binder/AppSettings.cs index db68777..80e9319 100644 --- a/Compare/Models/Binder/AppSettings.cs +++ b/Compare/Models/Binder/AppSettings.cs @@ -20,6 +20,23 @@ public class AppSettings return result; } + private static void PreVerify(IConfigurationRoot configurationRoot, AppSettings? appSettings) + { + if (appSettings?.Company is null) + { + List paths = []; + foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) + { + if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) + continue; + if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) + continue; + paths.Add(physicalFileProvider.Root); + } + throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); + } + } + private static Models.AppSettings Get(AppSettings? appSettings) { Models.AppSettings result; @@ -36,7 +53,10 @@ public class AppSettings public static Models.AppSettings Get(IConfigurationRoot configurationRoot) { Models.AppSettings result; +#pragma warning disable IL3050, IL2026 AppSettings? appSettings = configurationRoot.Get(); +#pragma warning restore IL3050, IL2026 + PreVerify(configurationRoot, appSettings); result = Get(appSettings); return result; } diff --git a/Compare/Models/Binder/Configuration.cs b/Compare/Models/Binder/Configuration.cs index 682bb5f..0811f7a 100644 --- a/Compare/Models/Binder/Configuration.cs +++ b/Compare/Models/Binder/Configuration.cs @@ -5,7 +5,6 @@ namespace View_by_Distance.Compare.Models.Binder; public class Configuration { -#nullable disable public string DiffPropertyDirectory { get; set; } public Property.Models.Configuration PropertyConfiguration { get; set; } public string[] Rename { get; set; } @@ -13,8 +12,6 @@ public class Configuration public string[] RenameC { get; set; } public string[] Spelling { get; set; } -#nullable restore - public override string ToString() { string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true }); diff --git a/Copy-Distinct/Models/Binder/AppSettings.cs b/Copy-Distinct/Models/Binder/AppSettings.cs index 5707d0c..16d06ba 100644 --- a/Copy-Distinct/Models/Binder/AppSettings.cs +++ b/Copy-Distinct/Models/Binder/AppSettings.cs @@ -21,6 +21,23 @@ public class AppSettings return result; } + private static void PreVerify(IConfigurationRoot configurationRoot, AppSettings? appSettings) + { + if (appSettings?.Company is null) + { + List paths = []; + foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) + { + if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) + continue; + if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) + continue; + paths.Add(physicalFileProvider.Root); + } + throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); + } + } + private static Models.AppSettings Get(AppSettings? appSettings) { Models.AppSettings result; @@ -56,6 +73,7 @@ public class AppSettings #pragma warning disable IL3050, IL2026 AppSettings? appSettings = configurationRoot.Get(); #pragma warning restore IL3050, IL2026 + PreVerify(configurationRoot, appSettings); result = Get(appSettings); return result; } diff --git a/Copy-Distinct/Models/Binder/Configuration.cs b/Copy-Distinct/Models/Binder/Configuration.cs index ba69497..ec27498 100644 --- a/Copy-Distinct/Models/Binder/Configuration.cs +++ b/Copy-Distinct/Models/Binder/Configuration.cs @@ -7,13 +7,9 @@ namespace View_by_Distance.Copy.Distinct.Models.Binder; public class Configuration { -#nullable disable - - public string[] IgnoreExtensions { get; set; } - public Property.Models.Configuration PropertyConfiguration { get; set; } - public string PersonBirthdayFormat { get; set; } - -#nullable restore + public string[]? IgnoreExtensions { get; set; } + public Property.Models.Configuration? PropertyConfiguration { get; set; } + public string? PersonBirthdayFormat { get; set; } public override string ToString() { @@ -21,12 +17,30 @@ public class Configuration return result; } + private static void PreVerify(IConfigurationRoot configurationRoot, Configuration? configuration) + { + if (configuration?.IgnoreExtensions is null) + { + List paths = []; + foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) + { + if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) + continue; + if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) + continue; + paths.Add(physicalFileProvider.Root); + } + throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); + } + } + private static Models.Configuration Get(Configuration? configuration) { Models.Configuration result; if (configuration is null) throw new NullReferenceException(nameof(configuration)); if (configuration.IgnoreExtensions is null) throw new NullReferenceException(nameof(configuration.IgnoreExtensions)); if (configuration.PersonBirthdayFormat is null) throw new NullReferenceException(nameof(configuration.PersonBirthdayFormat)); + if (configuration.PropertyConfiguration is null) throw new NullReferenceException(nameof(configuration.PropertyConfiguration)); result = new( configuration.IgnoreExtensions, configuration.PersonBirthdayFormat, @@ -39,14 +53,19 @@ public class Configuration Models.Configuration result; Configuration? configuration; if (isEnvironment is null) +#pragma warning disable IL3050, IL2026 configuration = configurationRoot.Get(); +#pragma warning restore IL3050, IL2026 else { string environmentName = IsEnvironment.GetEnvironmentName(isEnvironment); string section = string.Concat(environmentName, ":", nameof(Configuration)); IConfigurationSection configurationSection = configurationRoot.GetSection(section); +#pragma warning disable IL3050, IL2026 configuration = configurationSection.Get(); +#pragma warning restore IL3050, IL2026 } + PreVerify(configurationRoot, configuration); result = Get(configuration); return result; } diff --git a/Date-Group/Models/Binder/AppSettings.cs b/Date-Group/Models/Binder/AppSettings.cs index 50825ef..d74c58b 100644 --- a/Date-Group/Models/Binder/AppSettings.cs +++ b/Date-Group/Models/Binder/AppSettings.cs @@ -20,6 +20,23 @@ public class AppSettings return result; } + private static void PreVerify(IConfigurationRoot configurationRoot, AppSettings? appSettings) + { + if (appSettings?.Company is null) + { + List paths = []; + foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) + { + if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) + continue; + if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) + continue; + paths.Add(physicalFileProvider.Root); + } + throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); + } + } + private static Models.AppSettings Get(AppSettings? appSettings) { Models.AppSettings result; @@ -36,7 +53,10 @@ public class AppSettings public static Models.AppSettings Get(IConfigurationRoot configurationRoot) { Models.AppSettings result; +#pragma warning disable IL3050, IL2026 AppSettings? appSettings = configurationRoot.Get(); +#pragma warning restore IL3050, IL2026 + PreVerify(configurationRoot, appSettings); result = Get(appSettings); return result; } diff --git a/Date-Group/Models/Binder/Configuration.cs b/Date-Group/Models/Binder/Configuration.cs index 3ee612c..41b3614 100644 --- a/Date-Group/Models/Binder/Configuration.cs +++ b/Date-Group/Models/Binder/Configuration.cs @@ -7,17 +7,13 @@ namespace View_by_Distance.Date.Group.Models.Binder; public class Configuration { -#nullable disable - public bool? ByCreateDateShortcut { get; set; } public bool? ByDay { get; set; } public bool? ByHash { get; set; } public bool? BySeason { get; set; } public bool? ByWeek { get; set; } public bool? KeepFullPath { get; set; } - public Property.Models.Configuration PropertyConfiguration { get; set; } - -#nullable restore + public Property.Models.Configuration? PropertyConfiguration { get; set; } public override string ToString() { @@ -25,10 +21,28 @@ public class Configuration return result; } + private static void PreVerify(IConfigurationRoot configurationRoot, Configuration? configuration) + { + if (configuration?.ByCreateDateShortcut is null) + { + List paths = []; + foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) + { + if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) + continue; + if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) + continue; + paths.Add(physicalFileProvider.Root); + } + throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); + } + } + private static Models.Configuration Get(Configuration? configuration) { Models.Configuration result; if (configuration is null) throw new NullReferenceException(nameof(configuration)); + if (configuration.PropertyConfiguration is null) throw new NullReferenceException(nameof(configuration.PropertyConfiguration)); if (configuration.ByCreateDateShortcut is null) throw new NullReferenceException(nameof(configuration.ByCreateDateShortcut)); if (configuration.ByDay is null) throw new NullReferenceException(nameof(configuration.ByDay)); if (configuration.ByHash is null) throw new NullReferenceException(nameof(configuration.ByHash)); @@ -51,16 +65,20 @@ public class Configuration Models.Configuration result; Configuration? configuration; if (isEnvironment is null) +#pragma warning disable IL3050, IL2026 configuration = configurationRoot.Get(); +#pragma warning restore IL3050, IL2026 else { string environmentName = IsEnvironment.GetEnvironmentName(isEnvironment); string section = string.Concat(environmentName, ":", nameof(Configuration)); IConfigurationSection configurationSection = configurationRoot.GetSection(section); +#pragma warning disable IL3050, IL2026 configuration = configurationSection.Get(); +#pragma warning restore IL3050, IL2026 } + PreVerify(configurationRoot, configuration); result = Get(configuration); - if (configuration is null) throw new NullReferenceException(nameof(configuration)); return result; } diff --git a/Delete-By-Distinct/Models/Binder/AppSettings.cs b/Delete-By-Distinct/Models/Binder/AppSettings.cs index 1fade2a..1618fa1 100644 --- a/Delete-By-Distinct/Models/Binder/AppSettings.cs +++ b/Delete-By-Distinct/Models/Binder/AppSettings.cs @@ -27,6 +27,23 @@ public class AppSettings return result; } + private static void PreVerify(IConfigurationRoot configurationRoot, AppSettings? appSettings) + { + if (appSettings?.Company is null) + { + List paths = []; + foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) + { + if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) + continue; + if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) + continue; + paths.Add(physicalFileProvider.Root); + } + throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); + } + } + private static Models.AppSettings Get(AppSettings? appSettings) { Models.AppSettings result; @@ -58,7 +75,10 @@ public class AppSettings public static Models.AppSettings Get(IConfigurationRoot configurationRoot) { Models.AppSettings result; +#pragma warning disable IL3050, IL2026 AppSettings? appSettings = configurationRoot.Get(); +#pragma warning restore IL3050, IL2026 + PreVerify(configurationRoot, appSettings); result = Get(appSettings); return result; } diff --git a/Delete-By-Relative/Models/Binder/AppSettings.cs b/Delete-By-Relative/Models/Binder/AppSettings.cs index b6c3b82..406b601 100644 --- a/Delete-By-Relative/Models/Binder/AppSettings.cs +++ b/Delete-By-Relative/Models/Binder/AppSettings.cs @@ -22,6 +22,23 @@ public class AppSettings return result; } + private static void PreVerify(IConfigurationRoot configurationRoot, AppSettings? appSettings) + { + if (appSettings?.Company is null) + { + List paths = []; + foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) + { + if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) + continue; + if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) + continue; + paths.Add(physicalFileProvider.Root); + } + throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); + } + } + private static Models.AppSettings Get(AppSettings? appSettings) { Models.AppSettings result; @@ -40,7 +57,10 @@ public class AppSettings public static Models.AppSettings Get(IConfigurationRoot configurationRoot) { Models.AppSettings result; +#pragma warning disable IL3050, IL2026 AppSettings? appSettings = configurationRoot.Get(); +#pragma warning restore IL3050, IL2026 + PreVerify(configurationRoot, appSettings); result = Get(appSettings); return result; } diff --git a/Drag-Drop-Explorer/Models/Binder/AppSettings.cs b/Drag-Drop-Explorer/Models/Binder/AppSettings.cs index 3f35cb0..e32ad9d 100644 --- a/Drag-Drop-Explorer/Models/Binder/AppSettings.cs +++ b/Drag-Drop-Explorer/Models/Binder/AppSettings.cs @@ -20,6 +20,23 @@ public class AppSettings return result; } + private static void PreVerify(IConfigurationRoot configurationRoot, AppSettings? appSettings) + { + if (appSettings?.Company is null) + { + List paths = []; + foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) + { + if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) + continue; + if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) + continue; + paths.Add(physicalFileProvider.Root); + } + throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); + } + } + private static Models.AppSettings Get(AppSettings? appSettings) { Models.AppSettings result; @@ -36,7 +53,10 @@ public class AppSettings public static Models.AppSettings Get(IConfigurationRoot configurationRoot) { Models.AppSettings result; +#pragma warning disable IL3050, IL2026 AppSettings? appSettings = configurationRoot.Get(); +#pragma warning restore IL3050, IL2026 + PreVerify(configurationRoot, appSettings); result = Get(appSettings); return result; } diff --git a/Drag-Drop-Explorer/Program.cs b/Drag-Drop-Explorer/Program.cs index e4112ad..a2fd7fc 100644 --- a/Drag-Drop-Explorer/Program.cs +++ b/Drag-Drop-Explorer/Program.cs @@ -6,7 +6,7 @@ public class Program /// The main entry point for the application. /// [STAThread] - static void Main() + private static void Main() { ApplicationConfiguration.Initialize(); Application.Run(new DragDropExplorer()); diff --git a/Drag-Drop-Move/Models/Binder/AppSettings.cs b/Drag-Drop-Move/Models/Binder/AppSettings.cs index ff613f6..108f26c 100644 --- a/Drag-Drop-Move/Models/Binder/AppSettings.cs +++ b/Drag-Drop-Move/Models/Binder/AppSettings.cs @@ -16,6 +16,23 @@ public class AppSettings return result; } + private static void PreVerify(IConfigurationRoot configurationRoot, AppSettings? appSettings) + { + if (appSettings?.Company is null) + { + List paths = []; + foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) + { + if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) + continue; + if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) + continue; + paths.Add(physicalFileProvider.Root); + } + throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); + } + } + private static Models.AppSettings Get(AppSettings? appSettings) { Models.AppSettings result; @@ -36,7 +53,10 @@ public class AppSettings public static Models.AppSettings Get(IConfigurationRoot configurationRoot) { Models.AppSettings result; +#pragma warning disable IL3050, IL2026 AppSettings? appSettings = configurationRoot.Get(); +#pragma warning restore IL3050, IL2026 + PreVerify(configurationRoot, appSettings); result = Get(appSettings); return result; } diff --git a/Drag-Drop-Move/Program.cs b/Drag-Drop-Move/Program.cs index 36aadf2..8506512 100644 --- a/Drag-Drop-Move/Program.cs +++ b/Drag-Drop-Move/Program.cs @@ -6,7 +6,7 @@ public class Program /// The main entry point for the application. /// [STAThread] - static void Main() + private static void Main() { ApplicationConfiguration.Initialize(); Application.Run(new DragDropMove()); diff --git a/Drag-Drop-Search/Models/Binder/AppSettings.cs b/Drag-Drop-Search/Models/Binder/AppSettings.cs index 853d9c3..5b759b8 100644 --- a/Drag-Drop-Search/Models/Binder/AppSettings.cs +++ b/Drag-Drop-Search/Models/Binder/AppSettings.cs @@ -20,6 +20,23 @@ public class AppSettings return result; } + private static void PreVerify(IConfigurationRoot configurationRoot, AppSettings? appSettings) + { + if (appSettings?.Company is null) + { + List paths = []; + foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) + { + if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) + continue; + if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) + continue; + paths.Add(physicalFileProvider.Root); + } + throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); + } + } + private static Models.AppSettings Get(AppSettings? appSettings) { Models.AppSettings result; @@ -36,7 +53,10 @@ public class AppSettings public static Models.AppSettings Get(IConfigurationRoot configurationRoot) { Models.AppSettings result; +#pragma warning disable IL3050, IL2026 AppSettings? appSettings = configurationRoot.Get(); +#pragma warning restore IL3050, IL2026 + PreVerify(configurationRoot, appSettings); result = Get(appSettings); return result; } diff --git a/Drag-Drop-Search/Models/Binder/Configuration.cs b/Drag-Drop-Search/Models/Binder/Configuration.cs index 2a33d67..d2584f1 100644 --- a/Drag-Drop-Search/Models/Binder/Configuration.cs +++ b/Drag-Drop-Search/Models/Binder/Configuration.cs @@ -7,8 +7,6 @@ namespace View_by_Distance.Drag_Drop.Models.Binder; public class Configuration { -#nullable disable - public bool? CheckDFaceAndUpWriteDates { get; set; } public bool? CheckJsonForDistanceResults { get; set; } public int? CrossDirectoryMaxItemsInDistanceCollection { get; set; } @@ -16,40 +14,38 @@ public class Configuration public bool? ForceFaceLastWriteTimeToCreationTime { get; set; } public bool? ForceMetadataLastWriteTimeToCreationTime { get; set; } public bool? ForceResizeLastWriteTimeToCreationTime { get; set; } - public string[] IgnoreExtensions { get; set; } - public string[] JLinks { get; set; } - public string[] LoadOrCreateThenSaveDistanceResultsForOutputResolutions { get; set; } - public string[] LoadOrCreateThenSaveImageFacesResultsForOutputResolutions { get; set; } - public string[] MixedYearRelativePaths { get; set; } - public string ModelDirectory { get; set; } - public string ModelName { get; set; } + public string[]? IgnoreExtensions { get; set; } + public string[]? JLinks { get; set; } + public string[]? LoadOrCreateThenSaveDistanceResultsForOutputResolutions { get; set; } + public string[]? LoadOrCreateThenSaveImageFacesResultsForOutputResolutions { get; set; } + public string[]? MixedYearRelativePaths { get; set; } + public string? ModelDirectory { get; set; } + public string? ModelName { get; set; } public int? NumberOfJitters { get; set; } public int? NumberOfTimesToUpsample { get; set; } - public string OutputExtension { get; set; } + public string? OutputExtension { get; set; } public int? OutputQuality { get; set; } - public string[] OutputResolutions { get; set; } + public string[]? OutputResolutions { get; set; } public bool? OverrideForFaceImages { get; set; } public bool? OverrideForFaceLandmarkImages { get; set; } public bool? OverrideForResizeImages { get; set; } - public string PersonBirthdayFormat { get; set; } - public string PredictorModelName { get; set; } + public string? PersonBirthdayFormat { get; set; } + public string? PredictorModelName { get; set; } public bool? PropertiesChangedForDistance { get; set; } public bool? PropertiesChangedForFaces { get; set; } public bool? PropertiesChangedForIndex { get; set; } public bool? PropertiesChangedForMetadata { get; set; } public bool? PropertiesChangedForResize { get; set; } - public Property.Models.Configuration PropertyConfiguration { get; set; } + public Property.Models.Configuration? PropertyConfiguration { get; set; } public bool? Reverse { get; set; } - public string[] SaveFaceLandmarkForOutputResolutions { get; set; } + public string[]? SaveFaceLandmarkForOutputResolutions { get; set; } public bool? SaveFullYearOfRandomFiles { get; set; } - public string[] SaveFilteredOriginalImagesFromJLinksForOutputResolutions { get; set; } - public string[] SaveShortcutsForOutputResolutions { get; set; } + public string[]? SaveFilteredOriginalImagesFromJLinksForOutputResolutions { get; set; } + public string[]? SaveShortcutsForOutputResolutions { get; set; } public bool? SaveResizedSubfiles { get; set; } public bool? SkipSearch { get; set; } public bool? TestDistanceResults { get; set; } - public string[] ValidResolutions { get; set; } - -#nullable restore + public string[]? ValidResolutions { get; set; } public override string ToString() { @@ -57,10 +53,28 @@ public class Configuration return result; } + private static void PreVerify(IConfigurationRoot configurationRoot, Configuration? configuration) + { + if (configuration?.CheckDFaceAndUpWriteDates is null) + { + List paths = []; + foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) + { + if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) + continue; + if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) + continue; + paths.Add(physicalFileProvider.Root); + } + throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); + } + } + private static Models.Configuration Get(Configuration? configuration) { Models.Configuration result; if (configuration is null) throw new NullReferenceException(nameof(configuration)); + if (configuration.PropertyConfiguration is null) throw new NullReferenceException(nameof(configuration.PropertyConfiguration)); if (configuration.CheckDFaceAndUpWriteDates is null) throw new NullReferenceException(nameof(configuration.CheckDFaceAndUpWriteDates)); if (configuration.CheckJsonForDistanceResults is null) throw new NullReferenceException(nameof(configuration.CheckJsonForDistanceResults)); if (configuration.CrossDirectoryMaxItemsInDistanceCollection is null) throw new NullReferenceException(nameof(configuration.CrossDirectoryMaxItemsInDistanceCollection)); @@ -68,18 +82,23 @@ public class Configuration if (configuration.ForceFaceLastWriteTimeToCreationTime is null) throw new NullReferenceException(nameof(configuration.ForceFaceLastWriteTimeToCreationTime)); if (configuration.ForceMetadataLastWriteTimeToCreationTime is null) throw new NullReferenceException(nameof(configuration.ForceMetadataLastWriteTimeToCreationTime)); if (configuration.ForceResizeLastWriteTimeToCreationTime is null) throw new NullReferenceException(nameof(configuration.ForceResizeLastWriteTimeToCreationTime)); + if (configuration.JLinks is null) throw new NullReferenceException(nameof(configuration.JLinks)); if (configuration.IgnoreExtensions is null) throw new NullReferenceException(nameof(configuration.IgnoreExtensions)); configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions ??= []; configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions ??= []; if (configuration.MixedYearRelativePaths is null) throw new NullReferenceException(nameof(configuration.MixedYearRelativePaths)); + if (configuration.ModelDirectory is null) throw new NullReferenceException(nameof(configuration.ModelDirectory)); + if (configuration.ModelName is null) throw new NullReferenceException(nameof(configuration.ModelName)); if (configuration.NumberOfJitters is null) throw new NullReferenceException(nameof(configuration.NumberOfJitters)); if (configuration.NumberOfTimesToUpsample is null) throw new NullReferenceException(nameof(configuration.NumberOfTimesToUpsample)); + if (configuration.OutputExtension is null) throw new NullReferenceException(nameof(configuration.OutputExtension)); if (configuration.OutputQuality is null) throw new NullReferenceException(nameof(configuration.OutputQuality)); if (configuration.OutputResolutions is null) throw new NullReferenceException(nameof(configuration.OutputResolutions)); if (configuration.OverrideForFaceImages is null) throw new NullReferenceException(nameof(configuration.OverrideForFaceImages)); if (configuration.OverrideForFaceLandmarkImages is null) throw new NullReferenceException(nameof(configuration.OverrideForFaceLandmarkImages)); if (configuration.OverrideForResizeImages is null) throw new NullReferenceException(nameof(configuration.OverrideForResizeImages)); if (configuration.PersonBirthdayFormat is null) throw new NullReferenceException(nameof(configuration.PersonBirthdayFormat)); + if (configuration.PredictorModelName is null) throw new NullReferenceException(nameof(configuration.PredictorModelName)); if (configuration.PropertiesChangedForDistance is null) throw new NullReferenceException(nameof(configuration.PropertiesChangedForDistance)); if (configuration.PropertiesChangedForFaces is null) throw new NullReferenceException(nameof(configuration.PropertiesChangedForFaces)); if (configuration.PropertiesChangedForIndex is null) throw new NullReferenceException(nameof(configuration.PropertiesChangedForIndex)); @@ -141,14 +160,19 @@ public class Configuration Models.Configuration result; Configuration? configuration; if (isEnvironment is null) +#pragma warning disable IL3050, IL2026 configuration = configurationRoot.Get(); +#pragma warning restore IL3050, IL2026 else { string environmentName = IsEnvironment.GetEnvironmentName(isEnvironment); string section = string.Concat(environmentName, ":", nameof(Configuration)); IConfigurationSection configurationSection = configurationRoot.GetSection(section); +#pragma warning disable IL3050, IL2026 configuration = configurationSection.Get(); +#pragma warning restore IL3050, IL2026 } + PreVerify(configurationRoot, configuration); result = Get(configuration); return result; } diff --git a/Drag-Drop-Search/Program.cs b/Drag-Drop-Search/Program.cs index 4f0b6ed..9475ece 100644 --- a/Drag-Drop-Search/Program.cs +++ b/Drag-Drop-Search/Program.cs @@ -8,7 +8,7 @@ public class Program /// The main entry point for the application. /// [STAThread] - static void Main() + private static void Main() { ApplicationConfiguration.Initialize(); Application.Run(new DragDropSearch()); diff --git a/Drag-Drop-Set-Property-Item/Models/Binder/AppSettings.cs b/Drag-Drop-Set-Property-Item/Models/Binder/AppSettings.cs index 1ba9c25..f9a9f91 100644 --- a/Drag-Drop-Set-Property-Item/Models/Binder/AppSettings.cs +++ b/Drag-Drop-Set-Property-Item/Models/Binder/AppSettings.cs @@ -17,6 +17,23 @@ public class AppSettings return result; } + private static void PreVerify(IConfigurationRoot configurationRoot, AppSettings? appSettings) + { + if (appSettings?.Company is null) + { + List paths = []; + foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) + { + if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) + continue; + if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) + continue; + paths.Add(physicalFileProvider.Root); + } + throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); + } + } + private static Models.AppSettings Get(AppSettings? appSettings) { Models.AppSettings result; @@ -36,7 +53,10 @@ public class AppSettings public static Models.AppSettings Get(IConfigurationRoot configurationRoot) { Models.AppSettings result; +#pragma warning disable IL3050, IL2026 AppSettings? appSettings = configurationRoot.Get(); +#pragma warning restore IL3050, IL2026 + PreVerify(configurationRoot, appSettings); result = Get(appSettings); return result; } diff --git a/Drag-Drop-Set-Property-Item/Program.cs b/Drag-Drop-Set-Property-Item/Program.cs index c3ac35b..fac5c2e 100644 --- a/Drag-Drop-Set-Property-Item/Program.cs +++ b/Drag-Drop-Set-Property-Item/Program.cs @@ -6,7 +6,7 @@ public class Program /// The main entry point for the application. /// [STAThread] - static void Main() + private static void Main() { ApplicationConfiguration.Initialize(); Application.Run(new DragDropSetPropertyItem()); diff --git a/Duplicate-Search/Models/Binder/AppSettings.cs b/Duplicate-Search/Models/Binder/AppSettings.cs index 8dcdd62..534481a 100644 --- a/Duplicate-Search/Models/Binder/AppSettings.cs +++ b/Duplicate-Search/Models/Binder/AppSettings.cs @@ -23,6 +23,23 @@ public class AppSettings return result; } + private static void PreVerify(IConfigurationRoot configurationRoot, AppSettings? appSettings) + { + if (appSettings?.Company is null) + { + List paths = []; + foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) + { + if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) + continue; + if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) + continue; + paths.Add(physicalFileProvider.Root); + } + throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); + } + } + private static Models.AppSettings Get(AppSettings? appSettings) { Models.AppSettings result; @@ -46,7 +63,10 @@ public class AppSettings public static Models.AppSettings Get(IConfigurationRoot configurationRoot) { Models.AppSettings result; +#pragma warning disable IL3050, IL2026 AppSettings? appSettings = configurationRoot.Get(); +#pragma warning restore IL3050, IL2026 + PreVerify(configurationRoot, appSettings); result = Get(appSettings); return result; } diff --git a/Instance/Models/Binder/AppSettings.cs b/Instance/Models/Binder/AppSettings.cs index 8a21406..a7b540f 100644 --- a/Instance/Models/Binder/AppSettings.cs +++ b/Instance/Models/Binder/AppSettings.cs @@ -19,6 +19,23 @@ public class AppSettings return result; } + private static void PreVerify(IConfigurationRoot configurationRoot, AppSettings? appSettings) + { + if (appSettings?.Company is null) + { + List paths = []; + foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) + { + if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) + continue; + if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) + continue; + paths.Add(physicalFileProvider.Root); + } + throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); + } + } + private static Models.AppSettings Get(AppSettings? appSettings) { Models.AppSettings result; @@ -42,6 +59,7 @@ public class AppSettings #pragma warning disable IL3050, IL2026 AppSettings? appSettings = configurationRoot.Get(); #pragma warning restore IL3050, IL2026 + PreVerify(configurationRoot, appSettings); result = Get(appSettings); return result; } diff --git a/Instance/Models/Binder/Configuration.cs b/Instance/Models/Binder/Configuration.cs index 38cac67..aaaeb65 100644 --- a/Instance/Models/Binder/Configuration.cs +++ b/Instance/Models/Binder/Configuration.cs @@ -27,6 +27,7 @@ public class Configuration public bool? ForceMetadataLastWriteTimeToCreationTime { get; set; } public bool? ForceResizeLastWriteTimeToCreationTime { get; set; } public string? GenealogicalDataCommunicationFile { get; set; } + public string? ImmichAssetsFile { get; set; } public string[]? IgnoreExtensions { get; set; } public string[]? JLinks { get; set; } public string? LinkedAlpha { get; set; } @@ -93,6 +94,7 @@ public class Configuration public int? SortingMaximumPerKey { get; set; } public int? SortingMinimumToUseSigma { get; set; } public bool? TestDistanceResults { get; set; } + public bool? UseExtraPersonKeyCheck { get; set; } public int? UseFilterTries { get; set; } public string[]? ValidKeyWordsToIgnoreInRandom { get; set; } public string[]? ValidResolutions { get; set; } @@ -103,7 +105,22 @@ public class Configuration return result; } -#pragma warning restore csharp_preserve_single_line_statements + private static void PreVerify(IConfigurationRoot configurationRoot, Configuration? configuration) + { + if (configuration?.CheckDFaceAndUpWriteDates is null) + { + List paths = []; + foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) + { + if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) + continue; + if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) + continue; + paths.Add(physicalFileProvider.Root); + } + throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); + } + } private static Models.Configuration Get(Configuration? configuration, Property.Models.Configuration propertyConfiguration) { @@ -130,6 +147,7 @@ public class Configuration if (configuration?.ForceMetadataLastWriteTimeToCreationTime is null) throw new NullReferenceException(nameof(configuration.ForceMetadataLastWriteTimeToCreationTime)); if (configuration?.ForceResizeLastWriteTimeToCreationTime is null) throw new NullReferenceException(nameof(configuration.ForceResizeLastWriteTimeToCreationTime)); if (configuration?.GenealogicalDataCommunicationFile is null) throw new NullReferenceException(nameof(configuration.GenealogicalDataCommunicationFile)); + if (configuration?.ImmichAssetsFile is null) throw new NullReferenceException(nameof(configuration.ImmichAssetsFile)); // if (configuration?.IgnoreExtensions is null) throw new NullReferenceException(nameof(configuration.IgnoreExtensions)); // if (configuration?.JLinks is null) throw new NullReferenceException(nameof(configuration.JLinks)); // if (configuration?.LinkedAlpha is null) throw new NullReferenceException(nameof(configuration.LinkedAlpha)); @@ -196,6 +214,7 @@ public class Configuration if (configuration?.SortingMaximumPerKey is null) throw new NullReferenceException(nameof(configuration.SortingMaximumPerKey)); if (configuration?.SortingMinimumToUseSigma is null) throw new NullReferenceException(nameof(configuration.SortingMinimumToUseSigma)); if (configuration?.TestDistanceResults is null) throw new NullReferenceException(nameof(configuration.TestDistanceResults)); + if (configuration?.UseExtraPersonKeyCheck is null) throw new NullReferenceException(nameof(configuration.UseExtraPersonKeyCheck)); if (configuration?.UseFilterTries is null) throw new NullReferenceException(nameof(configuration.UseFilterTries)); // if (configuration?.ValidKeyWordsToIgnoreInRandom is null) throw new NullReferenceException(nameof(configuration.ValidKeyWordsToIgnoreInRandom)); // if (configuration?.ValidResolutions is null) throw new NullReferenceException(nameof(configuration.ValidResolutions)); @@ -220,6 +239,7 @@ public class Configuration configuration.ForceMetadataLastWriteTimeToCreationTime.Value, configuration.ForceResizeLastWriteTimeToCreationTime.Value, configuration.GenealogicalDataCommunicationFile, + configuration.ImmichAssetsFile, configuration.IgnoreExtensions ?? [], configuration.JLinks ?? [], configuration.LinkedAlpha, @@ -286,6 +306,7 @@ public class Configuration configuration.SortingMaximumPerKey.Value, configuration.SortingMinimumToUseSigma.Value, configuration.TestDistanceResults.Value, + configuration.UseExtraPersonKeyCheck.Value, configuration.UseFilterTries.Value, configuration.ValidKeyWordsToIgnoreInRandom ?? [], configuration.ValidResolutions ?? []); @@ -297,14 +318,19 @@ public class Configuration Models.Configuration result; Configuration? configuration; if (isEnvironment is null) +#pragma warning disable IL3050, IL2026 configuration = configurationRoot.Get(); +#pragma warning restore IL3050, IL2026 else { string environmentName = IsEnvironment.GetEnvironmentName(isEnvironment); string section = string.Concat(environmentName, ":", nameof(Configuration)); IConfigurationSection configurationSection = configurationRoot.GetSection(section); +#pragma warning disable IL3050, IL2026 configuration = configurationSection.Get(); +#pragma warning restore IL3050, IL2026 } + PreVerify(configurationRoot, configuration); result = Get(configuration, propertyConfiguration); return result; } diff --git a/Instance/Models/Configuration.cs b/Instance/Models/Configuration.cs index bf8397f..642e9bc 100644 --- a/Instance/Models/Configuration.cs +++ b/Instance/Models/Configuration.cs @@ -21,6 +21,7 @@ public record Configuration(Property.Models.Configuration PropertyConfiguration, bool ForceMetadataLastWriteTimeToCreationTime, bool ForceResizeLastWriteTimeToCreationTime, string GenealogicalDataCommunicationFile, + string ImmichAssetsFile, string[] IgnoreExtensions, string[] JLinks, string? LinkedAlpha, @@ -87,6 +88,7 @@ public record Configuration(Property.Models.Configuration PropertyConfiguration, int SortingMaximumPerKey, int SortingMinimumToUseSigma, bool TestDistanceResults, + bool UseExtraPersonKeyCheck, int UseFilterTries, string[] ValidKeyWordsToIgnoreInRandom, string[] ValidResolutions); \ No newline at end of file diff --git a/Metadata-Query/Models/Binder/AppSettings.cs b/Metadata-Query/Models/Binder/AppSettings.cs index 25603a8..ce5f313 100644 --- a/Metadata-Query/Models/Binder/AppSettings.cs +++ b/Metadata-Query/Models/Binder/AppSettings.cs @@ -16,6 +16,23 @@ public class AppSettings return result; } + private static void PreVerify(IConfigurationRoot configurationRoot, AppSettings? appSettings) + { + if (appSettings?.Company is null) + { + List paths = []; + foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) + { + if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) + continue; + if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) + continue; + paths.Add(physicalFileProvider.Root); + } + throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); + } + } + private static Models.AppSettings Get(AppSettings? appSettings) { Models.AppSettings result; @@ -36,7 +53,10 @@ public class AppSettings public static Models.AppSettings Get(IConfigurationRoot configurationRoot) { Models.AppSettings result; +#pragma warning disable IL3050, IL2026 AppSettings? appSettings = configurationRoot.Get(); +#pragma warning restore IL3050, IL2026 + PreVerify(configurationRoot, appSettings); result = Get(appSettings); return result; } diff --git a/Metadata-Query/Models/Binder/Configuration.cs b/Metadata-Query/Models/Binder/Configuration.cs index fc47217..e254f19 100644 --- a/Metadata-Query/Models/Binder/Configuration.cs +++ b/Metadata-Query/Models/Binder/Configuration.cs @@ -7,13 +7,9 @@ namespace View_by_Distance.Metadata.Query.Models.Binder; public class Configuration { -#nullable disable - - public string[] IgnoreExtensions { get; set; } - public Property.Models.Configuration PropertyConfiguration { get; set; } - public string PersonBirthdayFormat { get; set; } - -#nullable restore + public string[]? IgnoreExtensions { get; set; } + public Property.Models.Configuration? PropertyConfiguration { get; set; } + public string? PersonBirthdayFormat { get; set; } public override string ToString() { @@ -21,12 +17,30 @@ public class Configuration return result; } + private static void PreVerify(IConfigurationRoot configurationRoot, Configuration? configuration) + { + if (configuration?.IgnoreExtensions is null) + { + List paths = []; + foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) + { + if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) + continue; + if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) + continue; + paths.Add(physicalFileProvider.Root); + } + throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); + } + } + private static Models.Configuration Get(Configuration? configuration) { Models.Configuration result; if (configuration is null) throw new NullReferenceException(nameof(configuration)); if (configuration.IgnoreExtensions is null) throw new NullReferenceException(nameof(configuration.IgnoreExtensions)); if (configuration.PersonBirthdayFormat is null) throw new NullReferenceException(nameof(configuration.PersonBirthdayFormat)); + if (configuration.PropertyConfiguration is null) throw new NullReferenceException(nameof(configuration.PropertyConfiguration)); result = new( configuration.IgnoreExtensions, configuration.PersonBirthdayFormat, @@ -39,14 +53,19 @@ public class Configuration Models.Configuration result; Configuration? configuration; if (isEnvironment is null) +#pragma warning disable IL3050, IL2026 configuration = configurationRoot.Get(); +#pragma warning restore IL3050, IL2026 else { string environmentName = IsEnvironment.GetEnvironmentName(isEnvironment); string section = string.Concat(environmentName, ":", nameof(Configuration)); IConfigurationSection configurationSection = configurationRoot.GetSection(section); +#pragma warning disable IL3050, IL2026 configuration = configurationSection.Get(); +#pragma warning restore IL3050, IL2026 } + PreVerify(configurationRoot, configuration); result = Get(configuration); return result; } diff --git a/Mirror-Length/Models/Binder/AppSettings.cs b/Mirror-Length/Models/Binder/AppSettings.cs index 65b6938..7fd4fe3 100644 --- a/Mirror-Length/Models/Binder/AppSettings.cs +++ b/Mirror-Length/Models/Binder/AppSettings.cs @@ -17,6 +17,23 @@ public class AppSettings return result; } + private static void PreVerify(IConfigurationRoot configurationRoot, AppSettings? appSettings) + { + if (appSettings?.Company is null) + { + List paths = []; + foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) + { + if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) + continue; + if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) + continue; + paths.Add(physicalFileProvider.Root); + } + throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); + } + } + private static Models.AppSettings Get(AppSettings? appSettings) { Models.AppSettings result; @@ -40,7 +57,10 @@ public class AppSettings public static Models.AppSettings Get(IConfigurationRoot configurationRoot) { Models.AppSettings result; +#pragma warning disable IL3050, IL2026 AppSettings? appSettings = configurationRoot.Get(); +#pragma warning restore IL3050, IL2026 + PreVerify(configurationRoot, appSettings); result = Get(appSettings); return result; } diff --git a/Mirror-Length/Models/Binder/Configuration.cs b/Mirror-Length/Models/Binder/Configuration.cs index 2cc0080..8ee19b7 100644 --- a/Mirror-Length/Models/Binder/Configuration.cs +++ b/Mirror-Length/Models/Binder/Configuration.cs @@ -7,13 +7,9 @@ namespace View_by_Distance.Mirror.Length.Models.Binder; public class Configuration { -#nullable disable - - public string[] IgnoreExtensions { get; set; } - public Property.Models.Configuration PropertyConfiguration { get; set; } - public string PersonBirthdayFormat { get; set; } - -#nullable restore + public string[]? IgnoreExtensions { get; set; } + public Property.Models.Configuration? PropertyConfiguration { get; set; } + public string? PersonBirthdayFormat { get; set; } public override string ToString() { @@ -21,12 +17,30 @@ public class Configuration return result; } + private static void PreVerify(IConfigurationRoot configurationRoot, Configuration? configuration) + { + if (configuration?.IgnoreExtensions is null) + { + List paths = []; + foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) + { + if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) + continue; + if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) + continue; + paths.Add(physicalFileProvider.Root); + } + throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); + } + } + private static Models.Configuration Get(Configuration? configuration) { Models.Configuration result; if (configuration is null) throw new NullReferenceException(nameof(configuration)); if (configuration.IgnoreExtensions is null) throw new NullReferenceException(nameof(configuration.IgnoreExtensions)); if (configuration.PersonBirthdayFormat is null) throw new NullReferenceException(nameof(configuration.PersonBirthdayFormat)); + if (configuration.PropertyConfiguration is null) throw new NullReferenceException(nameof(configuration.PropertyConfiguration)); result = new( configuration.IgnoreExtensions, configuration.PersonBirthdayFormat, @@ -39,14 +53,19 @@ public class Configuration Models.Configuration result; Configuration? configuration; if (isEnvironment is null) +#pragma warning disable IL3050, IL2026 configuration = configurationRoot.Get(); +#pragma warning restore IL3050, IL2026 else { string environmentName = IsEnvironment.GetEnvironmentName(isEnvironment); string section = string.Concat(environmentName, ":", nameof(Configuration)); IConfigurationSection configurationSection = configurationRoot.GetSection(section); +#pragma warning disable IL3050, IL2026 configuration = configurationSection.Get(); +#pragma warning restore IL3050, IL2026 } + PreVerify(configurationRoot, configuration); result = Get(configuration); return result; } diff --git a/Move-By-Id/Models/Binder/AppSettings.cs b/Move-By-Id/Models/Binder/AppSettings.cs index 6907b44..e38efa2 100644 --- a/Move-By-Id/Models/Binder/AppSettings.cs +++ b/Move-By-Id/Models/Binder/AppSettings.cs @@ -23,6 +23,23 @@ public class AppSettings return result; } + private static void PreVerify(IConfigurationRoot configurationRoot, AppSettings? appSettings) + { + if (appSettings?.Company is null) + { + List paths = []; + foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) + { + if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) + continue; + if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) + continue; + paths.Add(physicalFileProvider.Root); + } + throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); + } + } + private static Models.AppSettings Get(AppSettings? appSettings) { Models.AppSettings result; @@ -44,7 +61,10 @@ public class AppSettings public static Models.AppSettings Get(IConfigurationRoot configurationRoot) { Models.AppSettings result; +#pragma warning disable IL3050, IL2026 AppSettings? appSettings = configurationRoot.Get(); +#pragma warning restore IL3050, IL2026 + PreVerify(configurationRoot, appSettings); result = Get(appSettings); return result; } diff --git a/Move-By-Id/Models/Binder/Configuration.cs b/Move-By-Id/Models/Binder/Configuration.cs index 0e0f992..270af33 100644 --- a/Move-By-Id/Models/Binder/Configuration.cs +++ b/Move-By-Id/Models/Binder/Configuration.cs @@ -7,13 +7,9 @@ namespace View_by_Distance.Move.By.Id.Models.Binder; public class Configuration { -#nullable disable - - public string[] IgnoreExtensions { get; set; } - public Property.Models.Configuration PropertyConfiguration { get; set; } - public string PersonBirthdayFormat { get; set; } - -#nullable restore + public string[]? IgnoreExtensions { get; set; } + public Property.Models.Configuration? PropertyConfiguration { get; set; } + public string? PersonBirthdayFormat { get; set; } public override string ToString() { @@ -21,12 +17,30 @@ public class Configuration return result; } + private static void PreVerify(IConfigurationRoot configurationRoot, Configuration? configuration) + { + if (configuration?.IgnoreExtensions is null) + { + List paths = []; + foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) + { + if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) + continue; + if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) + continue; + paths.Add(physicalFileProvider.Root); + } + throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); + } + } + private static Models.Configuration Get(Configuration? configuration) { Models.Configuration result; if (configuration is null) throw new NullReferenceException(nameof(configuration)); if (configuration.IgnoreExtensions is null) throw new NullReferenceException(nameof(configuration.IgnoreExtensions)); if (configuration.PersonBirthdayFormat is null) throw new NullReferenceException(nameof(configuration.PersonBirthdayFormat)); + if (configuration.PropertyConfiguration is null) throw new NullReferenceException(nameof(configuration.PropertyConfiguration)); result = new( configuration.IgnoreExtensions, configuration.PersonBirthdayFormat, @@ -39,14 +53,19 @@ public class Configuration Models.Configuration result; Configuration? configuration; if (isEnvironment is null) +#pragma warning disable IL3050, IL2026 configuration = configurationRoot.Get(); +#pragma warning restore IL3050, IL2026 else { string environmentName = IsEnvironment.GetEnvironmentName(isEnvironment); string section = string.Concat(environmentName, ":", nameof(Configuration)); IConfigurationSection configurationSection = configurationRoot.GetSection(section); +#pragma warning disable IL3050, IL2026 configuration = configurationSection.Get(); +#pragma warning restore IL3050, IL2026 } + PreVerify(configurationRoot, configuration); result = Get(configuration); return result; } diff --git a/Offset-Date-Time-Original/Models/Binder/AppSettings.cs b/Offset-Date-Time-Original/Models/Binder/AppSettings.cs index f904add..5eb243a 100644 --- a/Offset-Date-Time-Original/Models/Binder/AppSettings.cs +++ b/Offset-Date-Time-Original/Models/Binder/AppSettings.cs @@ -16,6 +16,23 @@ public class AppSettings return result; } + private static void PreVerify(IConfigurationRoot configurationRoot, AppSettings? appSettings) + { + if (appSettings?.Company is null) + { + List paths = []; + foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) + { + if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) + continue; + if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) + continue; + paths.Add(physicalFileProvider.Root); + } + throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); + } + } + private static Models.AppSettings Get(AppSettings? appSettings) { Models.AppSettings result; @@ -36,7 +53,10 @@ public class AppSettings public static Models.AppSettings Get(IConfigurationRoot configurationRoot) { Models.AppSettings result; +#pragma warning disable IL3050, IL2026 AppSettings? appSettings = configurationRoot.Get(); +#pragma warning restore IL3050, IL2026 + PreVerify(configurationRoot, appSettings); result = Get(appSettings); return result; } diff --git a/Offset-Date-Time-Original/Models/Binder/Configuration.cs b/Offset-Date-Time-Original/Models/Binder/Configuration.cs index 0181e88..e7e453b 100644 --- a/Offset-Date-Time-Original/Models/Binder/Configuration.cs +++ b/Offset-Date-Time-Original/Models/Binder/Configuration.cs @@ -7,13 +7,9 @@ namespace View_by_Distance.Offset.Date.Time.Original.Models.Binder; public class Configuration { -#nullable disable - - public string[] IgnoreExtensions { get; set; } - public Property.Models.Configuration PropertyConfiguration { get; set; } - public string PersonBirthdayFormat { get; set; } - -#nullable restore + public string[]? IgnoreExtensions { get; set; } + public Property.Models.Configuration? PropertyConfiguration { get; set; } + public string? PersonBirthdayFormat { get; set; } public override string ToString() { @@ -21,12 +17,30 @@ public class Configuration return result; } + private static void PreVerify(IConfigurationRoot configurationRoot, Configuration? configuration) + { + if (configuration?.IgnoreExtensions is null) + { + List paths = []; + foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) + { + if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) + continue; + if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) + continue; + paths.Add(physicalFileProvider.Root); + } + throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); + } + } + private static Models.Configuration Get(Configuration? configuration) { Models.Configuration result; if (configuration is null) throw new NullReferenceException(nameof(configuration)); if (configuration.IgnoreExtensions is null) throw new NullReferenceException(nameof(configuration.IgnoreExtensions)); if (configuration.PersonBirthdayFormat is null) throw new NullReferenceException(nameof(configuration.PersonBirthdayFormat)); + if (configuration.PropertyConfiguration is null) throw new NullReferenceException(nameof(configuration.PropertyConfiguration)); result = new( configuration.IgnoreExtensions, configuration.PersonBirthdayFormat, @@ -39,14 +53,19 @@ public class Configuration Models.Configuration result; Configuration? configuration; if (isEnvironment is null) +#pragma warning disable IL3050, IL2026 configuration = configurationRoot.Get(); +#pragma warning restore IL3050, IL2026 else { string environmentName = IsEnvironment.GetEnvironmentName(isEnvironment); string section = string.Concat(environmentName, ":", nameof(Configuration)); IConfigurationSection configurationSection = configurationRoot.GetSection(section); +#pragma warning disable IL3050, IL2026 configuration = configurationSection.Get(); +#pragma warning restore IL3050, IL2026 } + PreVerify(configurationRoot, configuration); result = Get(configuration); return result; } diff --git a/PrepareForOld/Models/Binder/AppSettings.cs b/PrepareForOld/Models/Binder/AppSettings.cs index b5f8b4b..69af755 100644 --- a/PrepareForOld/Models/Binder/AppSettings.cs +++ b/PrepareForOld/Models/Binder/AppSettings.cs @@ -20,6 +20,23 @@ public class AppSettings return result; } + private static void PreVerify(IConfigurationRoot configurationRoot, AppSettings? appSettings) + { + if (appSettings?.Company is null) + { + List paths = []; + foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) + { + if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) + continue; + if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) + continue; + paths.Add(physicalFileProvider.Root); + } + throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); + } + } + private static Models.AppSettings Get(AppSettings? appSettings) { Models.AppSettings result; @@ -36,7 +53,10 @@ public class AppSettings public static Models.AppSettings Get(IConfigurationRoot configurationRoot) { Models.AppSettings result; +#pragma warning disable IL3050, IL2026 AppSettings? appSettings = configurationRoot.Get(); +#pragma warning restore IL3050, IL2026 + PreVerify(configurationRoot, appSettings); result = Get(appSettings); return result; } diff --git a/PrepareForOld/Models/Binder/Configuration.cs b/PrepareForOld/Models/Binder/Configuration.cs index 18ae21a..6d16b76 100644 --- a/PrepareForOld/Models/Binder/Configuration.cs +++ b/PrepareForOld/Models/Binder/Configuration.cs @@ -5,12 +5,8 @@ namespace View_by_Distance.PrepareForOld.Models.Binder; public class Configuration { -#nullable disable - - public Property.Models.Configuration PropertyConfiguration { get; set; } - public string[] Spelling { get; set; } - -#nullable restore + public Property.Models.Configuration? PropertyConfiguration { get; set; } + public string[]? Spelling { get; set; } public override string ToString() { diff --git a/Property/Models/Binder/Configuration.cs b/Property/Models/Binder/Configuration.cs index 21fa898..8151bd1 100644 --- a/Property/Models/Binder/Configuration.cs +++ b/Property/Models/Binder/Configuration.cs @@ -39,6 +39,23 @@ public class Configuration return result; } + private static void PreVerify(IConfigurationRoot configurationRoot, Configuration? configuration) + { + if (configuration?.DateGroup is null) + { + List paths = []; + foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) + { + if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) + continue; + if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) + continue; + paths.Add(physicalFileProvider.Root); + } + throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); + } + } + private static Models.Configuration Get(Configuration? configuration) { Models.Configuration result; @@ -101,15 +118,19 @@ public class Configuration Models.Configuration result; Configuration? configuration; if (isEnvironment is null) +#pragma warning disable IL3050, IL2026 configuration = configurationRoot.Get(); +#pragma warning restore IL3050, IL2026 else { string environmentName = IsEnvironment.GetEnvironmentName(isEnvironment); string section = string.Concat(environmentName, ":", nameof(Configuration)); IConfigurationSection configurationSection = configurationRoot.GetSection(section); +#pragma warning disable IL3050, IL2026 configuration = configurationSection.Get(); +#pragma warning restore IL3050, IL2026 } - if (configuration is null) throw new NullReferenceException(nameof(configuration)); + PreVerify(configurationRoot, configuration); result = Get(configuration); return result; } diff --git a/Rename/Models/Binder/AppSettings.cs b/Rename/Models/Binder/AppSettings.cs index e90405c..6dcf383 100644 --- a/Rename/Models/Binder/AppSettings.cs +++ b/Rename/Models/Binder/AppSettings.cs @@ -21,6 +21,23 @@ public class AppSettings return result; } + private static void PreVerify(IConfigurationRoot configurationRoot, AppSettings? appSettings) + { + if (appSettings?.Company is null) + { + List paths = []; + foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) + { + if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) + continue; + if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) + continue; + paths.Add(physicalFileProvider.Root); + } + throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); + } + } + private static Models.AppSettings Get(AppSettings? appSettings) { Models.AppSettings result; @@ -49,6 +66,7 @@ public class AppSettings #pragma warning disable IL3050, IL2026 AppSettings? appSettings = configurationRoot.Get(); #pragma warning restore IL3050, IL2026 + PreVerify(configurationRoot, appSettings); result = Get(appSettings); return result; } diff --git a/Rename/Models/Binder/Configuration.cs b/Rename/Models/Binder/Configuration.cs index ab4030a..b12ca62 100644 --- a/Rename/Models/Binder/Configuration.cs +++ b/Rename/Models/Binder/Configuration.cs @@ -18,6 +18,23 @@ public class Configuration return result; } + private static void PreVerify(IConfigurationRoot configurationRoot, Configuration? configuration) + { + if (configuration?.ForceMetadataLastWriteTimeToCreationTime is null) + { + List paths = []; + foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) + { + if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) + continue; + if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) + continue; + paths.Add(physicalFileProvider.Root); + } + throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); + } + } + private static Models.Configuration Get(Configuration? configuration, Property.Models.Configuration propertyConfiguration) { Models.Configuration result; @@ -39,14 +56,19 @@ public class Configuration Models.Configuration result; Configuration? configuration; if (isEnvironment is null) +#pragma warning disable IL3050, IL2026 configuration = configurationRoot.Get(); +#pragma warning restore IL3050, IL2026 else { string environmentName = IsEnvironment.GetEnvironmentName(isEnvironment); string section = string.Concat(environmentName, ":", nameof(Configuration)); IConfigurationSection configurationSection = configurationRoot.GetSection(section); +#pragma warning disable IL3050, IL2026 configuration = configurationSection.Get(); +#pragma warning restore IL3050, IL2026 } + PreVerify(configurationRoot, configuration); result = Get(configuration, propertyConfiguration); return result; } diff --git a/Set-Created-Date/Models/Binder/AppSettings.cs b/Set-Created-Date/Models/Binder/AppSettings.cs index bd562be..3b52bc4 100644 --- a/Set-Created-Date/Models/Binder/AppSettings.cs +++ b/Set-Created-Date/Models/Binder/AppSettings.cs @@ -21,6 +21,23 @@ public class AppSettings return result; } + private static void PreVerify(IConfigurationRoot configurationRoot, AppSettings? appSettings) + { + if (appSettings?.Company is null) + { + List paths = []; + foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) + { + if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) + continue; + if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) + continue; + paths.Add(physicalFileProvider.Root); + } + throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); + } + } + private static Models.AppSettings Get(AppSettings? appSettings) { Models.AppSettings result; @@ -38,7 +55,10 @@ public class AppSettings public static Models.AppSettings Get(IConfigurationRoot configurationRoot) { Models.AppSettings result; +#pragma warning disable IL3050, IL2026 AppSettings? appSettings = configurationRoot.Get(); +#pragma warning restore IL3050, IL2026 + PreVerify(configurationRoot, appSettings); result = Get(appSettings); return result; } diff --git a/Set-Created-Date/Models/Binder/Configuration.cs b/Set-Created-Date/Models/Binder/Configuration.cs index 603eea1..bd2c821 100644 --- a/Set-Created-Date/Models/Binder/Configuration.cs +++ b/Set-Created-Date/Models/Binder/Configuration.cs @@ -7,13 +7,9 @@ namespace View_by_Distance.Set.Created.Date.Models.Binder; public class Configuration { -#nullable disable - - public string[] IgnoreExtensions { get; set; } - public Property.Models.Configuration PropertyConfiguration { get; set; } - public string PersonBirthdayFormat { get; set; } - -#nullable restore + public string[]? IgnoreExtensions { get; set; } + public Property.Models.Configuration? PropertyConfiguration { get; set; } + public string? PersonBirthdayFormat { get; set; } public override string ToString() { @@ -21,12 +17,30 @@ public class Configuration return result; } + private static void PreVerify(IConfigurationRoot configurationRoot, Configuration? configuration) + { + if (configuration?.IgnoreExtensions is null) + { + List paths = []; + foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) + { + if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) + continue; + if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) + continue; + paths.Add(physicalFileProvider.Root); + } + throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); + } + } + private static Models.Configuration Get(Configuration? configuration) { Models.Configuration result; if (configuration is null) throw new NullReferenceException(nameof(configuration)); if (configuration.IgnoreExtensions is null) throw new NullReferenceException(nameof(configuration.IgnoreExtensions)); if (configuration.PersonBirthdayFormat is null) throw new NullReferenceException(nameof(configuration.PersonBirthdayFormat)); + if (configuration.PropertyConfiguration is null) throw new NullReferenceException(nameof(configuration.PropertyConfiguration)); result = new( configuration.IgnoreExtensions, configuration.PersonBirthdayFormat, @@ -39,14 +53,19 @@ public class Configuration Models.Configuration result; Configuration? configuration; if (isEnvironment is null) +#pragma warning disable IL3050, IL2026 configuration = configurationRoot.Get(); +#pragma warning restore IL3050, IL2026 else { string environmentName = IsEnvironment.GetEnvironmentName(isEnvironment); string section = string.Concat(environmentName, ":", nameof(Configuration)); IConfigurationSection configurationSection = configurationRoot.GetSection(section); +#pragma warning disable IL3050, IL2026 configuration = configurationSection.Get(); +#pragma warning restore IL3050, IL2026 } + PreVerify(configurationRoot, configuration); result = Get(configuration); return result; } diff --git a/Tests/Models/Binder/AppSettings.cs b/Tests/Models/Binder/AppSettings.cs index 7704b04..30b653f 100644 --- a/Tests/Models/Binder/AppSettings.cs +++ b/Tests/Models/Binder/AppSettings.cs @@ -17,6 +17,23 @@ public class AppSettings return result; } + private static void PreVerify(IConfigurationRoot configurationRoot, AppSettings? appSettings) + { + if (appSettings?.Company is null) + { + List paths = []; + foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) + { + if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) + continue; + if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) + continue; + paths.Add(physicalFileProvider.Root); + } + throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); + } + } + private static Models.AppSettings Get(AppSettings? appSettings) { Models.AppSettings result; @@ -37,6 +54,7 @@ public class AppSettings #pragma warning disable IL3050, IL2026 AppSettings? appSettings = configurationRoot.Get(); #pragma warning restore IL3050, IL2026 + PreVerify(configurationRoot, appSettings); result = Get(appSettings); return result; } diff --git a/Tests/Models/Binder/Configuration.cs b/Tests/Models/Binder/Configuration.cs index 2e7bee8..e003aa3 100644 --- a/Tests/Models/Binder/Configuration.cs +++ b/Tests/Models/Binder/Configuration.cs @@ -27,6 +27,7 @@ public class Configuration public bool? ForceMetadataLastWriteTimeToCreationTime { get; set; } public bool? ForceResizeLastWriteTimeToCreationTime { get; set; } public string? GenealogicalDataCommunicationFile { get; set; } + public string? ImmichAssetsFile { get; set; } public string[]? IgnoreExtensions { get; set; } public string[]? JLinks { get; set; } public string[]? LoadOrCreateThenSaveDistanceResultsForOutputResolutions { get; set; } @@ -98,7 +99,22 @@ public class Configuration return result; } -#pragma warning restore csharp_preserve_single_line_statements + private static void PreVerify(IConfigurationRoot configurationRoot, Configuration? configuration) + { + if (configuration?.CheckDFaceAndUpWriteDates is null) + { + List paths = []; + foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) + { + if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) + continue; + if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) + continue; + paths.Add(physicalFileProvider.Root); + } + throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); + } + } private static Models.Configuration Get(Configuration? configuration, Property.Models.Configuration propertyConfiguration) { @@ -125,6 +141,7 @@ public class Configuration if (configuration?.ForceMetadataLastWriteTimeToCreationTime is null) throw new NullReferenceException(nameof(configuration.ForceMetadataLastWriteTimeToCreationTime)); if (configuration?.ForceResizeLastWriteTimeToCreationTime is null) throw new NullReferenceException(nameof(configuration.ForceResizeLastWriteTimeToCreationTime)); if (configuration?.GenealogicalDataCommunicationFile is null) throw new NullReferenceException(nameof(configuration.GenealogicalDataCommunicationFile)); + if (configuration?.ImmichAssetsFile is null) throw new NullReferenceException(nameof(configuration.ImmichAssetsFile)); // if (configuration?.IgnoreExtensions is null) throw new NullReferenceException(nameof(configuration.IgnoreExtensions)); // if (configuration?.JLinks is null) throw new NullReferenceException(nameof(configuration.JLinks)); // if (configuration?.LoadOrCreateThenSaveDistanceResultsForOutputResolutions is null) throw new NullReferenceException(nameof(configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions)); @@ -208,6 +225,7 @@ public class Configuration configuration.ForceMetadataLastWriteTimeToCreationTime.Value, configuration.ForceResizeLastWriteTimeToCreationTime.Value, configuration.GenealogicalDataCommunicationFile, + configuration.ImmichAssetsFile, configuration.IgnoreExtensions ?? [], configuration.JLinks ?? [], configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions ?? [], @@ -278,14 +296,19 @@ public class Configuration Models.Configuration result; Configuration? configuration; if (isEnvironment is null) +#pragma warning disable IL3050, IL2026 configuration = configurationRoot.Get(); +#pragma warning restore IL3050, IL2026 else { string environmentName = IsEnvironment.GetEnvironmentName(isEnvironment); string section = string.Concat(environmentName, ":", nameof(Configuration)); IConfigurationSection configurationSection = configurationRoot.GetSection(section); +#pragma warning disable IL3050, IL2026 configuration = configurationSection.Get(); +#pragma warning restore IL3050, IL2026 } + PreVerify(configurationRoot, configuration); result = Get(configuration, propertyConfiguration); return result; } diff --git a/Tests/Models/Configuration.cs b/Tests/Models/Configuration.cs index 74b7e4b..201381b 100644 --- a/Tests/Models/Configuration.cs +++ b/Tests/Models/Configuration.cs @@ -21,6 +21,7 @@ public record Configuration(Property.Models.Configuration PropertyConfiguration, bool ForceMetadataLastWriteTimeToCreationTime, bool ForceResizeLastWriteTimeToCreationTime, string GenealogicalDataCommunicationFile, + string ImmichAssetsFile, string[] IgnoreExtensions, string[] JLinks, string[] LoadOrCreateThenSaveDistanceResultsForOutputResolutions, diff --git a/TestsWithFaceRecognitionDotNet/Models/Binder/AppSettings.cs b/TestsWithFaceRecognitionDotNet/Models/Binder/AppSettings.cs index 7704b04..30b653f 100644 --- a/TestsWithFaceRecognitionDotNet/Models/Binder/AppSettings.cs +++ b/TestsWithFaceRecognitionDotNet/Models/Binder/AppSettings.cs @@ -17,6 +17,23 @@ public class AppSettings return result; } + private static void PreVerify(IConfigurationRoot configurationRoot, AppSettings? appSettings) + { + if (appSettings?.Company is null) + { + List paths = []; + foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) + { + if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) + continue; + if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) + continue; + paths.Add(physicalFileProvider.Root); + } + throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); + } + } + private static Models.AppSettings Get(AppSettings? appSettings) { Models.AppSettings result; @@ -37,6 +54,7 @@ public class AppSettings #pragma warning disable IL3050, IL2026 AppSettings? appSettings = configurationRoot.Get(); #pragma warning restore IL3050, IL2026 + PreVerify(configurationRoot, appSettings); result = Get(appSettings); return result; } diff --git a/TestsWithFaceRecognitionDotNet/Models/Binder/Configuration.cs b/TestsWithFaceRecognitionDotNet/Models/Binder/Configuration.cs index 2e7bee8..b1e144e 100644 --- a/TestsWithFaceRecognitionDotNet/Models/Binder/Configuration.cs +++ b/TestsWithFaceRecognitionDotNet/Models/Binder/Configuration.cs @@ -98,7 +98,22 @@ public class Configuration return result; } -#pragma warning restore csharp_preserve_single_line_statements + private static void PreVerify(IConfigurationRoot configurationRoot, Configuration? configuration) + { + if (configuration?.CheckDFaceAndUpWriteDates is null) + { + List paths = []; + foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) + { + if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) + continue; + if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) + continue; + paths.Add(physicalFileProvider.Root); + } + throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); + } + } private static Models.Configuration Get(Configuration? configuration, Property.Models.Configuration propertyConfiguration) { @@ -278,14 +293,19 @@ public class Configuration Models.Configuration result; Configuration? configuration; if (isEnvironment is null) +#pragma warning disable IL3050, IL2026 configuration = configurationRoot.Get(); +#pragma warning restore IL3050, IL2026 else { string environmentName = IsEnvironment.GetEnvironmentName(isEnvironment); string section = string.Concat(environmentName, ":", nameof(Configuration)); IConfigurationSection configurationSection = configurationRoot.GetSection(section); +#pragma warning disable IL3050, IL2026 configuration = configurationSection.Get(); +#pragma warning restore IL3050, IL2026 } + PreVerify(configurationRoot, configuration); result = Get(configuration, propertyConfiguration); return result; }