From b98d1e480bd4790bc77eff625e2625f1fd9a8197 Mon Sep 17 00:00:00 2001 From: Mike Phares Date: Sat, 14 Jun 2025 08:01:01 -0700 Subject: [PATCH] Second pass with standard get files (Day-Helper-2024-12-17) mklink for vscode extension --- .vscode/mklink.md | 25 ++++++------ ADO2024/PI4/Helper-2024-12-17.cs | 68 ++++++++++++++++++-------------- 2 files changed, 51 insertions(+), 42 deletions(-) diff --git a/.vscode/mklink.md b/.vscode/mklink.md index d4f23be..15be66d 100644 --- a/.vscode/mklink.md +++ b/.vscode/mklink.md @@ -14,18 +14,19 @@ mklink /J "L:\DevOps\Mesa_FI\File-Folder-Helper\.kanbn" "D:\5-Other-Small\Kanban mklink /J "L:\DevOps\Mesa_FI\File-Folder-Helper\.kanbn" "D:\5-Other-Small\Kanban\File-Folder-Helper" ``` -```bash -del "L:\DevOps\Mesa_FI\File-Folder-Helper\.extensions-vscode" -del "L:\DevOps\Mesa_FI\File-Folder-Helper\.extensions-vscode-oss" -del "L:\DevOps\Mesa_FI\File-Folder-Helper\.extensions-vscode-insiders" -mkdir "C:\Users\phares\.vscode\extensions\ifx.type-script-helper-1.111.0\net8.0\win-x64\publish" -mkdir "C:\Users\phares\.vscode-oss\extensions\ifx.type-script-helper-1.111.0\net8.0\win-x64\publish" -mkdir "C:\Users\phares\.vscode-insiders\extensions\ifx.type-script-helper-1.111.0\net8.0\win-x64\publish" -mklink /J "L:\DevOps\Mesa_FI\File-Folder-Helper\.extensions-vscode" "C:\Users\phares\.vscode\extensions\ifx.type-script-helper-1.111.0" -mklink /J "L:\DevOps\Mesa_FI\File-Folder-Helper\.extensions-vscode-oss" "C:\Users\phares\.vscode-oss\extensions\ifx.type-script-helper-1.111.0" -mklink /J "L:\DevOps\Mesa_FI\File-Folder-Helper\.extensions-vscode-insiders" "C:\Users\phares\.vscode-insiders\extensions\ifx.type-script-helper-1.111.0" -``` - ```bash Thu Jul 18 2024 13:47:40 GMT-0700 (Mountain Standard Time) mklink /J "L:\DevOps\Mesa_FI\File-Folder-Helper\.vscode\.UserSecrets" "C:\Users\phares\AppData\Roaming\Microsoft\UserSecrets\8da397d4-13ec-4576-9722-3c79cad25563" ``` + +```bash 1749414316830 = 638850111168300000 = 2025-2.Spring = Sun Jun 08 2025 13:25:16 GMT-0700 (Mountain Standard Time) +C:\Users\PHARES\.vscode\extensions\infineon-technologies-ag-mesa-fi.infineon-technologies-ag-mesa-fi-cost-of-delay-helper-1.124.0 +del "L:\DevOps\Mesa_FI\File-Folder-Helper\.extensions-vscode" +del "L:\DevOps\Mesa_FI\File-Folder-Helper\.extensions-vscode-oss" +del "L:\DevOps\Mesa_FI\File-Folder-Helper\.extensions-vscode-insiders" +mkdir "C:\Users\phares\.vscode\extensions\infineon-technologies-ag-mesa-fi.infineon-technologies-ag-mesa-fi-cost-of-delay-helper-1.124.0\net8.0\win-x64" +mkdir "C:\Users\phares\.vscode-oss\extensions\infineon-technologies-ag-mesa-fi.infineon-technologies-ag-mesa-fi-cost-of-delay-helper-1.124.0\net8.0\win-x64" +mkdir "C:\Users\phares\.vscode-insiders\extensions\infineon-technologies-ag-mesa-fi.infineon-technologies-ag-mesa-fi-cost-of-delay-helper-1.124.0\net8.0\win-x64" +mklink /J "C:\Users\phares\.vscode\extensions\infineon-technologies-ag-mesa-fi.infineon-technologies-ag-mesa-fi-cost-of-delay-helper-1.124.0\net8.0\win-x64\publish" "L:\DevOps\Mesa_FI\File-Folder-Helper\bin\Release\net8.0\win-x64\publish" +mklink /J "C:\Users\phares\.vscode-oss\extensions\infineon-technologies-ag-mesa-fi.infineon-technologies-ag-mesa-fi-cost-of-delay-helper-1.124.0\net8.0\win-x64\publish" "L:\DevOps\Mesa_FI\File-Folder-Helper\bin\Release\net8.0\win-x64\publish" +mklink /J "C:\Users\phares\.vscode-insiders\extensions\infineon-technologies-ag-mesa-fi.infineon-technologies-ag-mesa-fi-cost-of-delay-helper-1.124.0\net8.0\win-x64\publish" "L:\DevOps\Mesa_FI\File-Folder-Helper\bin\Release\net8.0\win-x64\publish" +``` diff --git a/ADO2024/PI4/Helper-2024-12-17.cs b/ADO2024/PI4/Helper-2024-12-17.cs index 6bcf1ff..df0af8f 100644 --- a/ADO2024/PI4/Helper-2024-12-17.cs +++ b/ADO2024/PI4/Helper-2024-12-17.cs @@ -57,6 +57,7 @@ internal static partial class Helper20241217 string asidePath; bool areTheyTheSame; string directoryName; + IEnumerable 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 files; string searchPattern = args[2]; + IEnumerable 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 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 GetRecords(string directory, string searchPattern) + private static IEnumerable GetRecords(string directory, IEnumerable files) { Job? job; string json; Record record; string fileName; string directoryName; - IEnumerable files = Directory.EnumerateFiles(directory, searchPattern, new EnumerationOptions { IgnoreInaccessible = true, RecurseSubdirectories = true }); foreach (string file in files) { fileName = Path.GetFileName(file);