FilePath ready to test
This commit is contained in:
@ -6,6 +6,7 @@ using System.Collections.ObjectModel;
|
||||
using View_by_Distance.Copy.Distinct.Models;
|
||||
using View_by_Distance.Shared.Models;
|
||||
using View_by_Distance.Shared.Models.Methods;
|
||||
using View_by_Distance.Shared.Models.Stateless.Methods;
|
||||
|
||||
namespace View_by_Distance.Copy.Distinct;
|
||||
|
||||
@ -17,7 +18,7 @@ public class CopyDistinct
|
||||
private readonly Configuration _Configuration;
|
||||
private readonly IsEnvironment _IsEnvironment;
|
||||
private readonly IConfigurationRoot _ConfigurationRoot;
|
||||
private readonly IReadOnlyDictionary<string, string[]> _FileGroups;
|
||||
private readonly ReadOnlyDictionary<string, string[]> _FileGroups;
|
||||
private readonly Property.Models.Configuration _PropertyConfiguration;
|
||||
|
||||
public CopyDistinct(List<string> args, ILogger<Program> logger, IsEnvironment isEnvironment, IConfigurationRoot configurationRoot, AppSettings appSettings, string workingDirectory, bool isSilent, IConsole console)
|
||||
@ -63,7 +64,7 @@ public class CopyDistinct
|
||||
const string directorySearchFilter = "*";
|
||||
string copyTo = Path.GetFullPath(_AppSettings.CopyTo);
|
||||
bool move = copyTo == _PropertyConfiguration.RootDirectory;
|
||||
ReadOnlyCollection<string[]> filesCollection = Shared.Models.Stateless.Methods.IDirectory.GetFilesCollection(_PropertyConfiguration.RootDirectory, directorySearchFilter, fileSearchFilter, useCeilingAverage);
|
||||
ReadOnlyCollection<string[]> filesCollection = IDirectory.GetFilesCollection(_PropertyConfiguration.RootDirectory, directorySearchFilter, fileSearchFilter, useCeilingAverage);
|
||||
bool anyLenFiles = filesCollection.Any(l => l.Any(m => m.EndsWith("len")));
|
||||
if (!move)
|
||||
moveBack = false;
|
||||
@ -92,13 +93,15 @@ public class CopyDistinct
|
||||
return (move, new(filesCollection), anyLenFiles, moveBack);
|
||||
}
|
||||
|
||||
private static (string[], List<(FileHolder, string?, string)>) GetMoveBackToDoCollection(ReadOnlyCollection<string[]> filesCollection)
|
||||
private static (string[], List<(FilePath, string)>) GetMoveBackToDoCollection(Property.Models.Configuration propertyConfiguration, ReadOnlyCollection<string[]> filesCollection)
|
||||
{
|
||||
List<(FileHolder, string?, string)> results = [];
|
||||
List<(FilePath, string)> results = [];
|
||||
string key;
|
||||
string? value;
|
||||
string fileName;
|
||||
FilePath filePath;
|
||||
string? directory;
|
||||
FileHolder fileHolder;
|
||||
string destinationFile;
|
||||
List<string> distinctFound = [];
|
||||
List<string> distinctNeeded = [];
|
||||
@ -146,7 +149,9 @@ public class CopyDistinct
|
||||
directory = Path.GetDirectoryName(value);
|
||||
if (string.IsNullOrEmpty(directory))
|
||||
continue;
|
||||
results.Add(new(new(file), null, value));
|
||||
fileHolder = Shared.Models.Stateless.Methods.IFileHolder.Get(file);
|
||||
filePath = FilePath.Get(propertyConfiguration, fileHolder, index: null);
|
||||
results.Add(new(filePath, value));
|
||||
if (!distinctDirectories.Contains(directory))
|
||||
distinctDirectories.Add(directory);
|
||||
}
|
||||
@ -161,21 +166,21 @@ public class CopyDistinct
|
||||
string[] distinctDirectories;
|
||||
ConsoleKey? consoleKey = null;
|
||||
string message = nameof(CopyDistinct);
|
||||
List<(FileHolder, string?, string)> toDoCollection;
|
||||
List<(FilePath, string)> toDoCollection;
|
||||
int count = filesCollection.Select(l => l.Length).Sum();
|
||||
ProgressBarOptions options = new() { ProgressCharacter = '─', ProgressBarOnBottom = true, DisableBottomPercentage = true };
|
||||
if (moveBack)
|
||||
{
|
||||
if (!anyLenFiles)
|
||||
throw new NotSupportedException();
|
||||
(distinctDirectories, toDoCollection) = GetMoveBackToDoCollection(filesCollection);
|
||||
(distinctDirectories, toDoCollection) = GetMoveBackToDoCollection(_PropertyConfiguration, filesCollection);
|
||||
}
|
||||
else
|
||||
{
|
||||
progressBar = new(count, message, options);
|
||||
string key = string.IsNullOrEmpty(_AppSettings.ResultDirectoryKey) ? _PropertyConfiguration.ResultAllInOne : _AppSettings.ResultDirectoryKey;
|
||||
string[] directories = _FileGroups[key];
|
||||
(distinctDirectories, toDoCollection) = Shared.Models.Stateless.Methods.IDirectory.GetToDoCollection(_PropertyConfiguration, _AppSettings.CopyDuplicates, _AppSettings.IfCanUseId, filesCollection, directories, () => progressBar.Tick());
|
||||
(distinctDirectories, toDoCollection) = IDirectory.GetToDoCollection(_PropertyConfiguration, _AppSettings.CopyDuplicates, _AppSettings.IfCanUseId, filesCollection, directories, () => progressBar.Tick());
|
||||
progressBar.Dispose();
|
||||
}
|
||||
foreach (string distinctDirectory in distinctDirectories)
|
||||
@ -212,7 +217,7 @@ public class CopyDistinct
|
||||
else
|
||||
{
|
||||
progressBar = new(count, message, options);
|
||||
results.AddRange(Shared.Models.Stateless.Methods.IDirectory.CopyOrMove(toDoCollection, move, moveBack, () => progressBar.Tick()));
|
||||
results.AddRange(IDirectory.CopyOrMove(toDoCollection, move, moveBack, () => progressBar.Tick()));
|
||||
progressBar.Dispose();
|
||||
if (move || moveBack)
|
||||
logger?.LogInformation("Done moving");
|
||||
|
Reference in New Issue
Block a user