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); } } }