created-date-offset (Day-Helper-2025-08-03)

P and J drives

Tasks json file inputs

IDE0005 none
This commit is contained in:
2025-08-11 09:08:14 -07:00
parent e74a0ccdce
commit 88bdd33285
4 changed files with 240 additions and 118 deletions

View File

@ -1,13 +1,10 @@
using Microsoft.Extensions.Logging;
using Phares.Shared.Models;
using Phares.Shared.Models.Stateless;
using System.Collections.ObjectModel;
using System.Text.Json;
using System.Text.Json.Serialization;
using Microsoft.Extensions.Logging;
using Phares.Shared.Models;
using Phares.Shared.Models.Stateless;
namespace File_Folder_Helper.ADO2025.PI6;
internal static partial class Helper20250726 {
@ -27,23 +24,36 @@ internal static partial class Helper20250726 {
logger.LogInformation(args[2]);
logger.LogInformation(args[3]);
logger.LogInformation(args[4]);
string searchPattern = args[3];
string jsonFile = Path.GetFullPath(args[2]);
logger.LogInformation(args[5]);
string[] files;
string[] searchPatterns = args[4].Split('~');
string jsonFile = Path.GetFullPath(args[3]);
if (!File.Exists(jsonFile)) {
throw new Exception($"json file doesn't exist! <{jsonFile}>");
}
ReadOnlyCollection<Record> records;
string json = File.ReadAllText(jsonFile);
ReadOnlyDictionary<byte, ReadOnlyCollection<string>> keyValues;
string sourceDirectory = Path.GetFullPath(args[0].Split('~')[0]);
string destinationDirectory = Path.GetFullPath(args[4].Split('~')[0]);
string destinationDirectory = Path.GetFullPath(args[5].Split('~')[0]);
long maxSize = long.Parse(args[2], System.Globalization.NumberStyles.Float);
ReadOnlyDictionary<int, ReadOnlyDictionary<byte, ReadOnlyCollection<string>>> keyValuePairs;
Helper20250726Settings? settings = JsonSerializer.Deserialize(json, Helper20250726SettingsSourceGenerationContext.Default.Helper20250726Settings);
if (settings?.ResultSettings is null || settings.ResultSettings.ResultAllInOneSubdirectoryLength < 1 || settings.MetadataSettings is null) {
throw new Exception(nameof(Helper20250726Settings));
}
string[] files = Directory.GetFiles(sourceDirectory, searchPattern, SearchOption.AllDirectories);
ReadOnlyDictionary<int, ReadOnlyDictionary<byte, ReadOnlyCollection<string>>> keyValuePairs = GetKeyValuePairs(destinationDirectory, settings.ResultSettings);
ReadOnlyCollection<Record> records = GetRecords(logger, settings.ResultSettings, settings.MetadataSettings, files);
ReadOnlyDictionary<byte, ReadOnlyCollection<string>> keyValues = keyValuePairs.ElementAt(0).Value;
CopyToCombinedEnumAndIndexFormat(logger, records, keyValues);
foreach (string searchPattern in searchPatterns) {
files = Directory.GetFiles(sourceDirectory, $"*{searchPattern}", SearchOption.AllDirectories);
if (files.Length == 0) {
logger.LogInformation($"Didn't find any {searchPattern} files");
continue;
}
logger.LogInformation($"Found {files.Length} {searchPattern} files");
keyValuePairs = GetKeyValuePairs(destinationDirectory, settings.ResultSettings);
records = GetRecords(logger, settings.ResultSettings, settings.MetadataSettings, files);
keyValues = keyValuePairs.ElementAt(0).Value;
CopyToCombinedEnumAndIndexFormat(logger, maxSize, records, keyValues);
}
Helpers.HelperDeleteEmptyDirectories.DeleteEmptyDirectories(logger, destinationDirectory);
}
@ -84,11 +94,15 @@ internal static partial class Helper20250726 {
return results.AsReadOnly();
}
private static void CopyToCombinedEnumAndIndexFormat(ILogger<Worker> logger, ReadOnlyCollection<Record> records, ReadOnlyDictionary<byte, ReadOnlyCollection<string>> keyValuePairs) {
private static void CopyToCombinedEnumAndIndexFormat(ILogger<Worker> logger, long maxSize, ReadOnlyCollection<Record> records, ReadOnlyDictionary<byte, ReadOnlyCollection<string>> keyValuePairs) {
string checkFile;
FileInfo fileInfo;
FileAttributes fileAttributes;
foreach (Record record in records) {
if (record.FilePath.Length > maxSize) {
logger.LogWarning("<{file}> skipped because it is over {size}!", record.FilePath.Name, maxSize);
continue;
}
checkFile = Path.Combine(keyValuePairs[record.CombinedEnumAndIndex.Enum][record.CombinedEnumAndIndex.Index], record.FilePath.Name);
if (File.Exists(checkFile)) {
logger.LogWarning("<{file}> skipped because it already exists!", record.FilePath.Name);