Save-Image-Info

This commit is contained in:
2023-06-29 22:41:09 -07:00
parent a4dd0fae45
commit 12d2779fa3
21 changed files with 681 additions and 21 deletions

View File

@ -31,8 +31,7 @@ public class CopyDistinct
_ConfigurationRoot = configurationRoot;
ILogger? log = Log.ForContext<CopyDistinct>();
Property.Models.Configuration propertyConfiguration = Property.Models.Binder.Configuration.Get(isEnvironment, configurationRoot);
string[] directories = new string[] { propertyConfiguration.ResultContent };
_FileGroups = Shared.Models.Stateless.Methods.IPath.GetKeyValuePairs(propertyConfiguration, appSettings.CopyTo, directories);
_FileGroups = Shared.Models.Stateless.Methods.IPath.GetKeyValuePairs(propertyConfiguration, appSettings.CopyTo, new string[] { appSettings.ResultDirectoryKey });
Configuration configuration = Models.Binder.Configuration.Get(isEnvironment, configurationRoot, propertyConfiguration);
_PropertyConfiguration = propertyConfiguration;
_Configuration = configuration;
@ -90,6 +89,7 @@ public class CopyDistinct
string directoryName;
bool wrapped = false;
List<string> distinct = new();
string key = string.IsNullOrEmpty(_AppSettings.ResultDirectoryKey) ? _PropertyConfiguration.ResultAllInOne : _AppSettings.ResultDirectoryKey;
foreach (FileHolder fileHolder in fileHolders)
{
progressBar.Tick();
@ -101,17 +101,19 @@ public class CopyDistinct
{
if (wrapped)
continue;
directory = _FileGroups[_PropertyConfiguration.ResultContent][directoryIndex];
directory = _FileGroups[key][directoryIndex];
}
else
{
if (!wrapped)
wrapped = true;
directory = Path.Combine(_FileGroups[_PropertyConfiguration.ResultContent][directoryIndex], directoryName);
directory = Path.Combine(_FileGroups[key][directoryIndex], directoryName);
}
checkFile = Path.Combine(directory, $"{fileHolder.NameWithoutExtension}{fileHolder.ExtensionLowered}");
if (distinct.Contains(checkFile))
{
if (!_AppSettings.CopyDuplicates)
continue;
for (int i = 1; i < int.MaxValue; i++)
{
fileInfo = new(checkFile);

View File

@ -7,19 +7,25 @@ public class AppSettings
{
public string Company { init; get; }
public bool CopyDuplicates { init; get; }
public string CopyTo { init; get; }
public int MaxDegreeOfParallelism { init; get; }
public string ResultDirectoryKey { init; get; }
public string WorkingDirectoryName { init; get; }
[JsonConstructor]
public AppSettings(string company,
bool copyDuplicates,
string copyTo,
int maxDegreeOfParallelism,
string resultDirectoryKey,
string workingDirectoryName)
{
Company = company;
CopyTo = copyTo;
CopyDuplicates = copyDuplicates;
MaxDegreeOfParallelism = maxDegreeOfParallelism;
ResultDirectoryKey = resultDirectoryKey;
WorkingDirectoryName = workingDirectoryName;
}

View File

@ -6,14 +6,12 @@ namespace View_by_Distance.Copy.Distinct.Models.Binder;
public class AppSettings
{
#nullable disable
public string Company { get; set; }
public string? Company { get; set; }
public int? MaxDegreeOfParallelism { get; set; }
public string CopyTo { get; set; }
public string WorkingDirectoryName { get; set; }
#nullable restore
public bool? CopyDuplicates { get; set; }
public string? CopyTo { get; set; }
public string? ResultDirectoryKey { init; get; }
public string? WorkingDirectoryName { get; set; }
public override string ToString()
{
@ -24,12 +22,24 @@ public class AppSettings
private static Models.AppSettings Get(AppSettings? appSettings)
{
Models.AppSettings result;
if (appSettings?.Company is null)
throw new NullReferenceException(nameof(appSettings.Company));
if (appSettings?.CopyDuplicates is null)
throw new NullReferenceException(nameof(appSettings.CopyDuplicates));
if (appSettings?.CopyTo is null)
throw new NullReferenceException(nameof(appSettings.CopyTo));
if (appSettings?.MaxDegreeOfParallelism is null)
throw new NullReferenceException(nameof(appSettings.MaxDegreeOfParallelism));
if (appSettings?.ResultDirectoryKey is null)
throw new NullReferenceException(nameof(appSettings.ResultDirectoryKey));
if (appSettings?.WorkingDirectoryName is null)
throw new NullReferenceException(nameof(appSettings.WorkingDirectoryName));
result = new(
appSettings.Company,
appSettings.CopyDuplicates.Value,
appSettings.CopyTo,
appSettings.MaxDegreeOfParallelism.Value,
appSettings.ResultDirectoryKey,
appSettings.WorkingDirectoryName
);
return result;

View File

@ -1,6 +1,7 @@
{
"ComparePathsFile": "",
"Company": "Mike Phares",
"CopyDuplicates": true,
"CopyTo": "",
"Linux": {},
"Logging": {