Dependency Injection Style

AOT Compiling
Switched to Secret from Development json file
Added Kanbn
Humanizer
HelperCreateNoteFiles.CleanExistingFiles
HelperPackageFilesByDate
Added SRP
Helper Hardcoded File Search and Sort
Set Date from Zip Entry
This commit is contained in:
2023-07-08 10:05:52 -07:00
parent 81472165f7
commit 229b508ae1
39 changed files with 1584 additions and 781 deletions

View File

@ -1,4 +1,4 @@
using Serilog;
using Microsoft.Extensions.Logging;
using System.Globalization;
using System.IO.Compression;
using System.Text.RegularExpressions;
@ -12,12 +12,15 @@ internal static class HelperZipFilesByDate
{
string key;
bool addFile;
string? zipPath;
string fileName;
string[] segments;
string[] subFiles;
string weekOfYear;
FileInfo fileInfo;
string zipDirectory;
DateTime creationTime;
string? directoryName;
DateTime lastWriteTime;
DateTime nowDateTime = DateTime.Now;
Regex regex = new("[a-zA-Z0-9]{1,}");
@ -46,7 +49,10 @@ internal static class HelperZipFilesByDate
foreach (string topDirectory in topDirectories)
{
keyValuePairs.Clear();
directoryName = Path.GetDirectoryName(topDirectory);
subFiles = Directory.GetFiles(topDirectory, "*", searchOption);
zipPath = string.IsNullOrEmpty(directoryName) ? null : Path.Combine(directoryName, "ZipPath");
zipDirectory = zipPath is not null && Directory.Exists(zipPath) ? zipPath : topDirectory;
foreach (string subFile in subFiles)
{
addFile = false;
@ -98,12 +104,12 @@ internal static class HelperZipFilesByDate
}
foreach (KeyValuePair<string, List<string>> element in keyValuePairs)
{
key = Path.Combine(topDirectory, $"{element.Key}.zip");
key = Path.Combine(zipDirectory, $"{element.Key}.zip");
if (File.Exists(key))
{
for (short i = 101; i < short.MaxValue; i++)
{
key = Path.Combine(topDirectory, $"{element.Key}_{i}.zip");
key = Path.Combine(zipDirectory, $"{element.Key}_{i}.zip");
if (!File.Exists(key))
break;
}
@ -114,18 +120,24 @@ internal static class HelperZipFilesByDate
_ = zip.CreateEntryFromFile(file, Path.GetFileName(file));
File.Delete(file);
}
if (zipPath is not null && Directory.Exists(zipPath) && !string.IsNullOrEmpty(directoryName))
{
try
{ Directory.SetLastWriteTime(directoryName, DateTime.Now); }
catch (Exception) { }
}
}
subFiles = Directory.GetFiles(topDirectory, "*.zip", SearchOption.TopDirectoryOnly);
subFiles = Directory.GetFiles(zipDirectory, "*.zip", SearchOption.TopDirectoryOnly);
foreach (string subFile in subFiles)
{
fileName = Path.GetFileNameWithoutExtension(subFile);
segments = fileName.Split('_');
if (segments.Length > 2)
fileName = string.Concat(segments[0], '_', segments[1], '_', segments[2]);
if (weeks.ContainsKey(fileName))
if (weeks.TryGetValue(fileName, out DateTime value))
{
try
{ File.SetLastWriteTime(subFile, weeks[fileName]); }
{ File.SetLastWriteTime(subFile, value); }
catch (Exception) { }
}
}
@ -135,7 +147,93 @@ internal static class HelperZipFilesByDate
{ _ = HelperDeleteEmptyDirectories.DeleteEmptyDirectories(topDirectory); }
catch (Exception) { }
}
log.Information(topDirectory);
log.LogInformation(topDirectory);
}
}
internal static void SetDateFromZipEntry(ILogger log, string sourceDirectory, SearchOption searchOption = SearchOption.AllDirectories)
{
string[] files;
string keyFile;
string keyFileB;
string keyFileC;
string checkFile;
FileInfo fileInfo;
string[] zipFiles;
string searchPattern;
string? zipDirectory;
DateTimeOffset? dateTimeOffset;
if (!Directory.Exists(sourceDirectory))
_ = Directory.CreateDirectory(sourceDirectory);
for (int i = 1; i < 3; i++)
{
(searchPattern, keyFile, keyFileB, keyFileC) = i switch
{
1 => ("*.nupkg", ".nuspec", "icon", "readme"),
2 => ("*.vsix", ".vsixmanifest", string.Empty, string.Empty),
_ => throw new NotSupportedException()
};
zipFiles = Directory.GetFiles(sourceDirectory, searchPattern, searchOption);
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);
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!"); }
}
}
}
}