using Microsoft.Extensions.Logging; namespace File_Folder_Helper.ADO2025.PI5; internal static partial class Helper20250421 { internal static void FreeFileSyncChangeCreatedDate(ILogger logger, List args) { string searchPattern = args[2]; string[] searchPatterns = args[3].Split('~'); string sourceDirectory = Path.GetFullPath(args[0]); if (searchPatterns.Length != 2) { throw new NotImplementedException($"Not the correct number of {searchPatterns} were passed!"); } string lastSyncSearch = $"{searchPatterns[0]}=\""; string configurationFileSearch = $"{searchPatterns[1]}=\""; string[] files = Directory.GetFiles(sourceDirectory, searchPattern, SearchOption.AllDirectories); if (files.Length != 1) { logger.LogWarning("<{files}>(s)", files.Length); } else { ChangeCreatedDate(lastSyncSearch, configurationFileSearch, files[0]); } } private static void ChangeCreatedDate(string lastSyncSearch, string configurationFileSearch, string sourceFile) { long epoch; string lastSync; string[] segments; string[] segmentsB; DateTime creationTime; string configurationFile; string[] lines = File.ReadAllLines(sourceFile); foreach (string line in lines) { segments = line.Split(lastSyncSearch); if (segments.Length != 2) { continue; } segmentsB = line.Split(configurationFileSearch); if (segmentsB.Length != 2) { continue; } lastSync = segments[1].Split('"')[0]; if (!long.TryParse(lastSync, out epoch) || epoch == 0) { continue; } configurationFile = segmentsB[1].Split('"')[0]; if (!File.Exists(configurationFile)) { continue; } creationTime = new(DateTimeOffset.UnixEpoch.AddSeconds(epoch).ToLocalTime().Ticks); File.SetCreationTime(configurationFile, creationTime); } } }