Second pass with standard get files (Day-Helper-2024-12-17)

mklink for vscode extension
This commit is contained in:
2025-06-14 08:01:01 -07:00
parent 404ffe18f5
commit b98d1e480b
2 changed files with 51 additions and 42 deletions

View File

@ -57,6 +57,7 @@ internal static partial class Helper20241217
string asidePath;
bool areTheyTheSame;
string directoryName;
IEnumerable<Record> records;
logger.LogInformation(args[0]);
logger.LogInformation(args[1]);
logger.LogInformation(args[2]);
@ -64,6 +65,7 @@ internal static partial class Helper20241217
logger.LogInformation(args[4]);
ReadOnlyCollection<File> files;
string searchPattern = args[2];
IEnumerable<string> searchPatternFiles;
string[] ignoreFileNames = args[3].Split('~');
string destination = Path.GetFullPath(args[4]);
string sourceDirectory = Path.GetFullPath(args[0]);
@ -71,37 +73,44 @@ internal static partial class Helper20241217
logger.LogInformation("Searching <{sourceDirectory}> with search pattern {searchPattern}", args[0], searchPattern);
if (Debugger.IsAttached)
Verify(searchPattern, ignoreFileNames);
IEnumerable<Record> records = GetRecords(sourceDirectory, searchPattern);
foreach (Record record in records)
for (int i = 1; i < 3; i++)
{
if (record.Job is null || string.IsNullOrEmpty(record.Job.Extension))
continue;
logger.LogInformation("Searching <{directory}>", record.Directory);
files = GetFiles(searchPattern, ignoreFileNames, record);
jobNew = GetJob(searchPattern, ignoreFileNames, record, files);
json = JsonSerializer.Serialize(jobNew, JobSourceGenerationContext.Default.Job);
areTheyTheSame = GetAreTheyTheSame(logger, searchPattern, ignoreFileNames, record, jobNew);
if (areTheyTheSame)
if (i == 1)
{
WriteAllText(record.Path, json);
continue;
searchPatternFiles = Directory.EnumerateFiles(sourceDirectory, searchPattern, new EnumerationOptions { IgnoreInaccessible = true, RecurseSubdirectories = true });
}
else if (i == 2)
{
searchPatternFiles = Directory.GetFiles(sourceDirectory, searchPattern, SearchOption.AllDirectories);
}
else
throw new NotImplementedException();
records = GetRecords(sourceDirectory, searchPatternFiles);
foreach (Record record in records)
{
if (record.Job is null || string.IsNullOrEmpty(record.Job.Extension))
continue;
logger.LogInformation("Searching <{directory}>", record.Directory);
files = GetFiles(searchPattern, ignoreFileNames, record);
jobNew = GetJob(searchPattern, ignoreFileNames, record, files);
json = JsonSerializer.Serialize(jobNew, JobSourceGenerationContext.Default.Job);
areTheyTheSame = GetAreTheyTheSame(logger, searchPattern, ignoreFileNames, record, jobNew);
if (areTheyTheSame)
{
WriteAllText(record.Path, json);
continue;
}
directoryName = Path.GetFileName(record.Directory);
asidePath = Path.Combine(record.Directory, $"{directoryName}-{DateTime.Now:yyyy-MM-dd-HH-mm-ss-fff}{record.Job.Extension}");
path = $"{destinationDriveLetter}{asidePath[1..]}";
logger.LogInformation("Writing <{path}> extension", path);
WritePassedExtension(record, files, directoryName, path);
logger.LogInformation("Wrote <{path}> extension", path);
MovePassedExtension(destination, path);
logger.LogInformation("Moved <{path}> extension", path);
WriteAllText(record.Path, json);
Helpers.HelperDeleteEmptyDirectories.DeleteEmptyDirectories(logger, $"{destinationDriveLetter}{record.Directory[1..]}");
}
directoryName = Path.GetFileName(record.Directory);
asidePath = Path.Combine(record.Directory, $"{directoryName}-{DateTime.Now:yyyy-MM-dd-HH-mm-ss-fff}{record.Job.Extension}");
path = $"{destinationDriveLetter}{asidePath[1..]}";
logger.LogInformation("Writing <{path}> extension", path);
WritePassedExtension(record, files, directoryName, path);
logger.LogInformation("Wrote <{path}> extension", path);
MovePassedExtension(destination, path);
logger.LogInformation("Moved <{path}> extension", path);
WriteAllText(record.Path, json);
Helpers.HelperDeleteEmptyDirectories.DeleteEmptyDirectories(logger, $"{destinationDriveLetter}{record.Directory[1..]}");
}
if (Debugger.IsAttached && records.Count() == 0)
{
files = GetFiles(sourceDirectory, searchPattern, ignoreFileNames);
json = JsonSerializer.Serialize(files.ToArray(), FilesSourceGenerationContext.Default.FileArray);
WriteAllText(Path.Combine(Environment.CurrentDirectory, ".vscode", "helper", ".json"), json);
}
}
@ -150,14 +159,13 @@ internal static partial class Helper20241217
return results.AsReadOnly();
}
private static IEnumerable<Record> GetRecords(string directory, string searchPattern)
private static IEnumerable<Record> GetRecords(string directory, IEnumerable<string> files)
{
Job? job;
string json;
Record record;
string fileName;
string directoryName;
IEnumerable<string> files = Directory.EnumerateFiles(directory, searchPattern, new EnumerationOptions { IgnoreInaccessible = true, RecurseSubdirectories = true });
foreach (string file in files)
{
fileName = Path.GetFileName(file);