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