diff --git a/Source/.config/dotnet-tools.json b/Source/.config/dotnet-tools.json new file mode 100644 index 00000000..921204ae --- /dev/null +++ b/Source/.config/dotnet-tools.json @@ -0,0 +1,12 @@ +{ + "version": 1, + "isRoot": true, + "tools": { + "frogvall.dotnetbumpversion": { + "version": "3.0.1", + "commands": [ + "bump-version" + ] + } + } +} \ No newline at end of file diff --git a/Source/AppScaffolding/.msbump b/Source/AppScaffolding/.msbump deleted file mode 100644 index e9c0b591..00000000 --- a/Source/AppScaffolding/.msbump +++ /dev/null @@ -1,4 +0,0 @@ -{ - "//": "https://github.com/BalassaMarton/MSBump", - BumpRevision: true -} diff --git a/Source/AppScaffolding/AppScaffolding.csproj b/Source/AppScaffolding/AppScaffolding.csproj index 59092d01..497bd40a 100644 --- a/Source/AppScaffolding/AppScaffolding.csproj +++ b/Source/AppScaffolding/AppScaffolding.csproj @@ -1,30 +1,24 @@ - + - net6.0-windows - 8.1.4.1 + True + 8.1.4.16 - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - embedded - - - - embedded - - - + + embedded + + + embedded + + + + + \ No newline at end of file diff --git a/Source/ApplicationServices/ApplicationServices.csproj b/Source/ApplicationServices/ApplicationServices.csproj index cb4528e5..87a0fb18 100644 --- a/Source/ApplicationServices/ApplicationServices.csproj +++ b/Source/ApplicationServices/ApplicationServices.csproj @@ -2,6 +2,7 @@ net6.0-windows + True diff --git a/Source/AudibleUtilities/ApiExtended.cs b/Source/AudibleUtilities/ApiExtended.cs index 732890ff..9a8c0254 100644 --- a/Source/AudibleUtilities/ApiExtended.cs +++ b/Source/AudibleUtilities/ApiExtended.cs @@ -154,15 +154,16 @@ namespace AudibleUtilities #if DEBUG //System.IO.File.WriteAllText(library_json, AudibleApi.Common.Converter.ToJson(items)); #endif - var validators = new List(); - validators.AddRange(Validators.GetValidators()); - foreach (var v in validators) - { - var exceptions = v.Validate(items); - if (exceptions is not null && exceptions.Any()) - throw new AggregateException(exceptions); - } + var exceptions = new List(); + exceptions.AddRange(IValidator.Validate(items)); + exceptions.AddRange(IValidator.Validate(items)); + exceptions.AddRange(IValidator.Validate(items)); + exceptions.AddRange(IValidator.Validate(items)); + exceptions.AddRange(IValidator.Validate(items)); + + if (exceptions.Any()) + throw new AggregateException(exceptions); return items; } diff --git a/Source/AudibleUtilities/AudibleApiValidators.cs b/Source/AudibleUtilities/AudibleApiValidators.cs index acb2ca5d..c0b4af43 100644 --- a/Source/AudibleUtilities/AudibleApiValidators.cs +++ b/Source/AudibleUtilities/AudibleApiValidators.cs @@ -5,25 +5,16 @@ using AudibleApi.Common; namespace AudibleUtilities { - public static class Validators - { - public static IValidator[] GetValidators() - => new IValidator[] - { - new LibraryValidator(), - new BookValidator(), - new CategoryValidator(), - new ContributorValidator(), - new SeriesValidator(), - }; - } public interface IValidator { - IEnumerable Validate(IEnumerable items); + public static abstract IEnumerable Validate(IEnumerable items); + public static IEnumerable Validate(IEnumerable items) + where T : IValidator + => T.Validate(items); } public class LibraryValidator : IValidator { - public IEnumerable Validate(IEnumerable items) + public static IEnumerable Validate(IEnumerable items) { var exceptions = new List(); @@ -37,7 +28,7 @@ namespace AudibleUtilities } public class BookValidator : IValidator { - public IEnumerable Validate(IEnumerable items) + public static IEnumerable Validate(IEnumerable items) { var exceptions = new List(); @@ -55,7 +46,7 @@ namespace AudibleUtilities } public class CategoryValidator : IValidator { - public IEnumerable Validate(IEnumerable items) + public static IEnumerable Validate(IEnumerable items) { var exceptions = new List(); @@ -70,7 +61,7 @@ namespace AudibleUtilities } public class ContributorValidator : IValidator { - public IEnumerable Validate(IEnumerable items) + public static IEnumerable Validate(IEnumerable items) { var exceptions = new List(); @@ -84,7 +75,7 @@ namespace AudibleUtilities } public class SeriesValidator : IValidator { - public IEnumerable Validate(IEnumerable items) + public static IEnumerable Validate(IEnumerable items) { var exceptions = new List(); diff --git a/Source/AudibleUtilities/AudibleUtilities.csproj b/Source/AudibleUtilities/AudibleUtilities.csproj index 92a875f4..191fbd40 100644 --- a/Source/AudibleUtilities/AudibleUtilities.csproj +++ b/Source/AudibleUtilities/AudibleUtilities.csproj @@ -2,12 +2,11 @@ net6.0-windows + True - - - + diff --git a/Source/DtoImporterService/BookImporter.cs b/Source/DtoImporterService/BookImporter.cs index 3e05db63..ed5d7cde 100644 --- a/Source/DtoImporterService/BookImporter.cs +++ b/Source/DtoImporterService/BookImporter.cs @@ -8,10 +8,8 @@ using Dinah.Core.Collections.Generic; namespace DtoImporterService { - public class BookImporter : ItemsImporterBase + public class BookImporter : ImporterBase { - protected override IValidator Validator => new BookValidator(); - public Dictionary Cache { get; private set; } = new(); private ContributorImporter contributorImporter { get; } diff --git a/Source/DtoImporterService/CategoryImporter.cs b/Source/DtoImporterService/CategoryImporter.cs index 5a3434c6..99dda82f 100644 --- a/Source/DtoImporterService/CategoryImporter.cs +++ b/Source/DtoImporterService/CategoryImporter.cs @@ -8,10 +8,8 @@ using Dinah.Core.Collections.Generic; namespace DtoImporterService { - public class CategoryImporter : ItemsImporterBase + public class CategoryImporter : ImporterBase { - protected override IValidator Validator => new CategoryValidator(); - public Dictionary Cache { get; private set; } = new(); public CategoryImporter(LibationContext context) : base(context) { } diff --git a/Source/DtoImporterService/ContributorImporter.cs b/Source/DtoImporterService/ContributorImporter.cs index dd3e273f..f7fa41c5 100644 --- a/Source/DtoImporterService/ContributorImporter.cs +++ b/Source/DtoImporterService/ContributorImporter.cs @@ -8,10 +8,8 @@ using Dinah.Core.Collections.Generic; namespace DtoImporterService { - public class ContributorImporter : ItemsImporterBase + public class ContributorImporter : ImporterBase { - protected override IValidator Validator => new ContributorValidator(); - public Dictionary Cache { get; private set; } = new(); public ContributorImporter(LibationContext context) : base(context) { } diff --git a/Source/DtoImporterService/DtoImporterService.csproj b/Source/DtoImporterService/DtoImporterService.csproj index d784be6f..749d1a5b 100644 --- a/Source/DtoImporterService/DtoImporterService.csproj +++ b/Source/DtoImporterService/DtoImporterService.csproj @@ -2,6 +2,7 @@ net6.0-windows + True diff --git a/Source/DtoImporterService/ImporterBase.cs b/Source/DtoImporterService/ImporterBase.cs index 278659c7..bb5142c0 100644 --- a/Source/DtoImporterService/ImporterBase.cs +++ b/Source/DtoImporterService/ImporterBase.cs @@ -7,7 +7,7 @@ using Dinah.Core; namespace DtoImporterService { - public abstract class ImporterBase + public abstract class ImporterBase where TValidate : IValidator { protected LibationContext DbContext { get; } @@ -18,13 +18,13 @@ namespace DtoImporterService } /// LONG RUNNING. call with await Task.Run - public int Import(T param) => Run(DoImport, param); + public int Import(IEnumerable param) => Run(DoImport, param); - public TResult Run(Func func, T param) + public TResult Run(Func, TResult> func, IEnumerable param) { try { - var exceptions = Validate(param); + var exceptions = TValidate.Validate(param.Select(i => i.DtoItem)); if (exceptions is not null && exceptions.Any()) throw new AggregateException($"Importer validation failed", exceptions); } @@ -46,16 +46,6 @@ namespace DtoImporterService } } - protected abstract int DoImport(T elements); - public abstract IEnumerable Validate(T param); - } - - public abstract class ItemsImporterBase : ImporterBase> - { - protected ItemsImporterBase(LibationContext context) : base(context) { } - - protected abstract IValidator Validator { get; } - public sealed override IEnumerable Validate(IEnumerable importItems) - => Validator.Validate(importItems.Select(i => i.DtoItem)); + protected abstract int DoImport(IEnumerable elements); } } diff --git a/Source/DtoImporterService/LibraryBookImporter.cs b/Source/DtoImporterService/LibraryBookImporter.cs index 634d8494..9590393b 100644 --- a/Source/DtoImporterService/LibraryBookImporter.cs +++ b/Source/DtoImporterService/LibraryBookImporter.cs @@ -7,10 +7,8 @@ using Dinah.Core.Collections.Generic; namespace DtoImporterService { - public class LibraryBookImporter : ItemsImporterBase + public class LibraryBookImporter : ImporterBase { - protected override IValidator Validator => new LibraryValidator(); - private BookImporter bookImporter { get; } public LibraryBookImporter(LibationContext context) : base(context) diff --git a/Source/DtoImporterService/SeriesImporter.cs b/Source/DtoImporterService/SeriesImporter.cs index 67f5d487..e4541d01 100644 --- a/Source/DtoImporterService/SeriesImporter.cs +++ b/Source/DtoImporterService/SeriesImporter.cs @@ -8,10 +8,8 @@ using Dinah.Core.Collections.Generic; namespace DtoImporterService { - public class SeriesImporter : ItemsImporterBase + public class SeriesImporter : ImporterBase { - protected override IValidator Validator => new SeriesValidator(); - public Dictionary Cache { get; private set; } = new(); public SeriesImporter(LibationContext context) : base(context) { } diff --git a/Source/FileLiberator/FileLiberator.csproj b/Source/FileLiberator/FileLiberator.csproj index 65b461a1..5d8093fa 100644 --- a/Source/FileLiberator/FileLiberator.csproj +++ b/Source/FileLiberator/FileLiberator.csproj @@ -2,6 +2,7 @@ net6.0-windows + True diff --git a/Source/Hangover/Hangover.csproj b/Source/Hangover/Hangover.csproj index 5c2c104a..b421f3e5 100644 --- a/Source/Hangover/Hangover.csproj +++ b/Source/Hangover/Hangover.csproj @@ -6,7 +6,7 @@ true hangover.ico enable - + True true win-x64 false diff --git a/Source/LibationCli/LibationCli.csproj b/Source/LibationCli/LibationCli.csproj index e3b1fa09..b1edb68b 100644 --- a/Source/LibationCli/LibationCli.csproj +++ b/Source/LibationCli/LibationCli.csproj @@ -5,6 +5,7 @@ Exe net6.0-windows true + True win-x64 false false diff --git a/Source/LibationWinForms/LibationWinForms.csproj b/Source/LibationWinForms/LibationWinForms.csproj index b15b714c..340aecd7 100644 --- a/Source/LibationWinForms/LibationWinForms.csproj +++ b/Source/LibationWinForms/LibationWinForms.csproj @@ -6,6 +6,7 @@ net6.0-windows true libation.ico + True Libation true diff --git a/Source/LibationWinForms/Properties/PublishProfiles/FolderProfile.pubxml b/Source/LibationWinForms/Properties/PublishProfiles/FolderProfile.pubxml index 3ed14ad3..806982d7 100644 --- a/Source/LibationWinForms/Properties/PublishProfiles/FolderProfile.pubxml +++ b/Source/LibationWinForms/Properties/PublishProfiles/FolderProfile.pubxml @@ -5,7 +5,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121. Release - Any CPU + x64 ..\bin\publish\ FileSystem net6.0-windows diff --git a/Source/publish.bat b/Source/publish.bat new file mode 100644 index 00000000..e03f315d --- /dev/null +++ b/Source/publish.bat @@ -0,0 +1,4 @@ +rmdir bin\Publish /S /Q +dotnet publish LibationWinForms\LibationWinForms.csproj -p:PublishProfile=LibationWinForms\Properties\PublishProfiles\FolderProfile.pubxml +dotnet publish LibationCli\LibationCli.csproj -p:PublishProfile=LibationCli\Properties\PublishProfiles\FolderProfile.pubxml +dotnet publish Hangover\Hangover.csproj -p:PublishProfile=Hangover\Properties\PublishProfiles\FolderProfile.pubxml \ No newline at end of file