.vscode
ADO2024
ADO2025
Day
Helpers
Exif
HelperCreateNoteFiles.cs
HelperDeleteEmptyDirectories.cs
HelperDirectory.cs
HelperFindReplace.cs
HelperGenealogicalDataCommunication.cs
HelperGit.cs
HelperILMerge.cs
HelperKanbanMetadata.cs
HelperLogMerge.cs
HelperMarkdown.cs
HelperNPM.cs
HelperPackageFilesByDate.cs
HelperPdfStripperWrapper.cs
HelperRenameToOldMoveDeleteOld.cs
HelperSaveOrCopyContents.cs
HelperStart.cs
HelperTooLong.cs
HelperZipFilesBy.cs
RijndaelEncryption.cs
Models
Scripts
Server-Management
.editorconfig
.gitignore
.prettierignore
Dockerfile
File-Folder-Helper.csproj
Program.cs
README.md
Worker.cs
docker-compose.yaml
global.json
package-lock.json
package.json
77 lines
3.4 KiB
C#
77 lines
3.4 KiB
C#
using File_Folder_Helper.Models;
|
|
using Microsoft.Extensions.Logging;
|
|
using System.Text.Json;
|
|
|
|
namespace File_Folder_Helper.Helpers;
|
|
|
|
internal static class HelperPackageFilesByDate
|
|
{
|
|
|
|
internal static void SetDateFromJsonEntry(ILogger log, string sourceDirectory, SearchOption searchOption = SearchOption.AllDirectories)
|
|
{
|
|
string json;
|
|
DateTime dateTime;
|
|
FileInfo fileInfo;
|
|
string[] segments;
|
|
string[] tgzFiles;
|
|
PackageJson? packageJson;
|
|
string[] packageJsonFiles;
|
|
string? packageJsonDirectory;
|
|
List<DateTime> dateTimes = [];
|
|
string fileNameWithoutExtension;
|
|
string packageJsonDirectoryName;
|
|
if (log is null)
|
|
throw new NullReferenceException();
|
|
if (!Directory.Exists(sourceDirectory))
|
|
_ = Directory.CreateDirectory(sourceDirectory);
|
|
for (int i = 1; i < 2; i++)
|
|
{
|
|
packageJsonFiles = Directory.GetFiles(sourceDirectory, "package.json", searchOption);
|
|
foreach (string packageJsonFile in packageJsonFiles)
|
|
{
|
|
packageJsonDirectory = Path.GetDirectoryName(packageJsonFile);
|
|
if (string.IsNullOrEmpty(packageJsonDirectory))
|
|
continue;
|
|
json = File.ReadAllText(packageJsonFile);
|
|
packageJson = JsonSerializer.Deserialize(json, PackageJsonSourceGenerationContext.Default.PackageJson);
|
|
if (packageJson is null || packageJson.Times.Count == 0)
|
|
continue;
|
|
packageJsonDirectoryName = Path.GetFileName(packageJsonDirectory);
|
|
tgzFiles = Directory.GetFiles(packageJsonDirectory, "*.tgz", SearchOption.TopDirectoryOnly);
|
|
foreach (string tgzFile in tgzFiles)
|
|
{
|
|
dateTimes.Clear();
|
|
fileNameWithoutExtension = Path.GetFileNameWithoutExtension(tgzFile);
|
|
segments = fileNameWithoutExtension.Split('-');
|
|
foreach (string segment in segments)
|
|
{
|
|
if (!packageJson.Times.TryGetValue(segment, out dateTime))
|
|
continue;
|
|
dateTimes.Add(dateTime);
|
|
fileInfo = new(tgzFile);
|
|
if (fileInfo.LastWriteTime != dateTime)
|
|
File.SetLastWriteTime(fileInfo.FullName, dateTime);
|
|
}
|
|
if (dateTimes.Count == 0)
|
|
{
|
|
if (fileNameWithoutExtension.Length + 1 < packageJsonDirectoryName.Length)
|
|
continue;
|
|
if (!packageJson.Times.TryGetValue(fileNameWithoutExtension[(packageJsonDirectoryName.Length + 1)..], out dateTime))
|
|
continue;
|
|
dateTimes.Add(dateTime);
|
|
fileInfo = new(tgzFile);
|
|
if (fileInfo.LastWriteTime != dateTime)
|
|
File.SetLastWriteTime(fileInfo.FullName, dateTime);
|
|
}
|
|
}
|
|
if (dateTimes.Count == 0)
|
|
continue;
|
|
dateTime = dateTimes.Max();
|
|
fileInfo = new(packageJsonFile);
|
|
if (fileInfo.LastWriteTime != dateTime)
|
|
File.SetLastWriteTime(fileInfo.FullName, dateTime);
|
|
}
|
|
}
|
|
}
|
|
|
|
} |