Align with BaGet

This commit is contained in:
Mike Phares 2023-07-31 14:21:41 -07:00
parent 7417cc49e1
commit 79b9daedfa
2 changed files with 107 additions and 70 deletions

View File

@ -8,8 +8,9 @@ namespace File_Folder_Helper.Helpers;
internal static class HelperZipFilesByDate internal static class HelperZipFilesByDate
{ {
internal static void ZipFilesByDate(ILogger log, string sourceDirectory, SearchOption searchOption = SearchOption.TopDirectoryOnly, string dayFormat = "") internal static bool ZipFilesByDate(ILogger log, string sourceDirectory, SearchOption searchOption = SearchOption.TopDirectoryOnly, string dayFormat = "")
{ {
bool result = false;
string key; string key;
bool addFile; bool addFile;
string? zipPath; string? zipPath;
@ -137,7 +138,11 @@ internal static class HelperZipFilesByDate
if (weeks.TryGetValue(fileName, out DateTime value)) if (weeks.TryGetValue(fileName, out DateTime value))
{ {
try try
{ File.SetLastWriteTime(subFile, value); } {
if (!result)
result = true;
File.SetLastWriteTime(subFile, value);
}
catch (Exception) { } catch (Exception) { }
} }
} }
@ -147,22 +152,110 @@ internal static class HelperZipFilesByDate
{ _ = HelperDeleteEmptyDirectories.DeleteEmptyDirectories(topDirectory); } { _ = HelperDeleteEmptyDirectories.DeleteEmptyDirectories(topDirectory); }
catch (Exception) { } catch (Exception) { }
} }
log.LogInformation(topDirectory); log.LogInformation("{topDirectory}", topDirectory);
} }
return result;
} }
internal static void SetDateFromZipEntry(ILogger log, string sourceDirectory, SearchOption searchOption = SearchOption.AllDirectories) private static bool SetDateFromZipEntry(ILogger log, string[] zipFiles, string keyFile, string keyFileB, string keyFileC)
{ {
bool result = false;
string[] files; string[] files;
string checkFile;
FileInfo fileInfo;
string? zipDirectory;
DateTimeOffset? dateTimeOffset;
foreach (string zipFile in zipFiles)
{
try
{
dateTimeOffset = null;
fileInfo = new(zipFile);
using ZipArchive zip = ZipFile.Open(zipFile, ZipArchiveMode.Read);
foreach (ZipArchiveEntry zipArchiveEntry in zip.Entries)
{
if (!zipArchiveEntry.Name.EndsWith(keyFile))
continue;
dateTimeOffset = zipArchiveEntry.LastWriteTime;
break;
}
zipDirectory = Path.GetDirectoryName(zipFile);
if (dateTimeOffset is null || zipDirectory is null)
continue;
if (fileInfo.LastWriteTime != dateTimeOffset.Value.LocalDateTime)
{
File.SetLastWriteTime(fileInfo.FullName, dateTimeOffset.Value.LocalDateTime);
if (!result)
result = true;
}
files = Directory.GetFiles(zipDirectory, $"*{keyFile}", SearchOption.TopDirectoryOnly);
foreach (string file in files)
{
fileInfo = new(file);
if (fileInfo.LastWriteTime != dateTimeOffset.Value.LocalDateTime)
{
File.SetLastWriteTime(fileInfo.FullName, dateTimeOffset.Value.LocalDateTime);
if (!result)
result = true;
}
}
if (string.IsNullOrEmpty(keyFileB))
continue;
files = Directory.GetFiles(zipDirectory, keyFileB, SearchOption.TopDirectoryOnly);
foreach (string file in files)
{
fileInfo = new(file);
if (fileInfo.LastWriteTime != dateTimeOffset.Value.LocalDateTime)
{
File.SetLastWriteTime(fileInfo.FullName, dateTimeOffset.Value.LocalDateTime);
if (!result)
result = true;
}
}
if (string.IsNullOrEmpty(keyFileC))
continue;
files = Directory.GetFiles(zipDirectory, keyFileC, SearchOption.TopDirectoryOnly);
foreach (string file in files)
{
fileInfo = new(file);
if (fileInfo.LastWriteTime != dateTimeOffset.Value.LocalDateTime)
{
File.SetLastWriteTime(fileInfo.FullName, dateTimeOffset.Value.LocalDateTime);
if (!result)
result = true;
}
}
}
catch (Exception)
{
log.LogInformation("<{zipFile}> is invalid!", zipFile);
checkFile = string.Concat(zipFile, ".err");
for (int e = 0; e < short.MaxValue; e++)
{
if (!File.Exists(checkFile))
break;
checkFile = string.Concat(checkFile, e);
}
try
{ File.Move(zipFile, checkFile); }
catch (Exception) { log.LogInformation("<{zipFile}> couldn't be moved!", zipFile); }
}
}
return result;
}
internal static bool SetDateFromZipEntryForNuspec(ILogger log, string[] files) =>
SetDateFromZipEntry(log, files, ".nuspec", "icon", "readme");
internal static bool SetDateFromZipEntry(ILogger log, string sourceDirectory, SearchOption searchOption = SearchOption.AllDirectories)
{
bool result = false;
bool loop;
string keyFile; string keyFile;
string keyFileB; string keyFileB;
string keyFileC; string keyFileC;
string checkFile;
FileInfo fileInfo;
string[] zipFiles; string[] zipFiles;
string searchPattern; string searchPattern;
string? zipDirectory;
DateTimeOffset? dateTimeOffset;
if (!Directory.Exists(sourceDirectory)) if (!Directory.Exists(sourceDirectory))
_ = Directory.CreateDirectory(sourceDirectory); _ = Directory.CreateDirectory(sourceDirectory);
for (int i = 1; i < 3; i++) for (int i = 1; i < 3; i++)
@ -174,67 +267,11 @@ internal static class HelperZipFilesByDate
_ => throw new NotSupportedException() _ => throw new NotSupportedException()
}; };
zipFiles = Directory.GetFiles(sourceDirectory, searchPattern, searchOption); zipFiles = Directory.GetFiles(sourceDirectory, searchPattern, searchOption);
foreach (string zipFile in zipFiles) loop = SetDateFromZipEntry(log, zipFiles, keyFile, keyFileB, keyFileC);
{ if (loop && !result)
try result = true;
{
dateTimeOffset = null;
fileInfo = new(zipFile);
using ZipArchive zip = ZipFile.Open(zipFile, ZipArchiveMode.Read);
foreach (ZipArchiveEntry zipArchiveEntry in zip.Entries)
{
if (!zipArchiveEntry.Name.EndsWith(keyFile))
continue;
dateTimeOffset = zipArchiveEntry.LastWriteTime;
break;
}
zipDirectory = Path.GetDirectoryName(zipFile);
if (dateTimeOffset is null || zipDirectory is null)
continue;
if (fileInfo.LastWriteTime != dateTimeOffset.Value.LocalDateTime)
File.SetLastWriteTime(fileInfo.FullName, dateTimeOffset.Value.LocalDateTime);
files = Directory.GetFiles(zipDirectory, $"*{keyFile}", SearchOption.TopDirectoryOnly);
foreach (string file in files)
{
fileInfo = new(file);
if (fileInfo.LastWriteTime != dateTimeOffset.Value.LocalDateTime)
File.SetLastWriteTime(fileInfo.FullName, dateTimeOffset.Value.LocalDateTime);
}
if (string.IsNullOrEmpty(keyFileB))
continue;
files = Directory.GetFiles(zipDirectory, keyFileB, SearchOption.TopDirectoryOnly);
foreach (string file in files)
{
fileInfo = new(file);
if (fileInfo.LastWriteTime != dateTimeOffset.Value.LocalDateTime)
File.SetLastWriteTime(fileInfo.FullName, dateTimeOffset.Value.LocalDateTime);
}
if (string.IsNullOrEmpty(keyFileC))
continue;
files = Directory.GetFiles(zipDirectory, keyFileC, SearchOption.TopDirectoryOnly);
foreach (string file in files)
{
fileInfo = new(file);
if (fileInfo.LastWriteTime != dateTimeOffset.Value.LocalDateTime)
File.SetLastWriteTime(fileInfo.FullName, dateTimeOffset.Value.LocalDateTime);
}
}
catch (Exception)
{
log.LogInformation($"<{zipFile}> is invalid!");
checkFile = string.Concat(zipFile, ".err");
for (int e = 0; e < short.MaxValue; e++)
{
if (!File.Exists(checkFile))
break;
checkFile = string.Concat(checkFile, e);
}
try
{ File.Move(zipFile, checkFile); }
catch (Exception) { log.LogInformation($"<{zipFile}> couldn't be moved!"); }
}
}
} }
return result;
} }
} }

View File

@ -144,7 +144,7 @@ public class Worker : BackgroundService
Helpers.HelperRenameToOldMoveDeleteOldMerge.RenameToOldMoveDeleteOld(_Logger, _Args[0]); Helpers.HelperRenameToOldMoveDeleteOldMerge.RenameToOldMoveDeleteOld(_Logger, _Args[0]);
break; break;
case ConsoleKey.S: case ConsoleKey.S:
Helpers.HelperZipFilesByDate.SetDateFromZipEntry(_Logger, _Args[0]); _ = Helpers.HelperZipFilesByDate.SetDateFromZipEntry(_Logger, _Args[0]);
break; break;
case ConsoleKey.T: case ConsoleKey.T:
Helpers.HelperTooLong.TooLong(_Args[0], delete: false); Helpers.HelperTooLong.TooLong(_Args[0], delete: false);
@ -154,7 +154,7 @@ public class Worker : BackgroundService
Helpers.HelperMarkdown.MarkdownConvertLinksForHugo(_AppSettings, _Logger, _Args); Helpers.HelperMarkdown.MarkdownConvertLinksForHugo(_AppSettings, _Logger, _Args);
break; break;
case ConsoleKey.Z: case ConsoleKey.Z:
Helpers.HelperZipFilesByDate.ZipFilesByDate(_Logger, _Args[0]); _ = Helpers.HelperZipFilesByDate.ZipFilesByDate(_Logger, _Args[0]);
break; break;
default: default:
switch (consoleKey) switch (consoleKey)