Move modifiers out of DatHeader

This commit is contained in:
Matt Nadareski
2025-01-29 22:51:30 -05:00
parent 5ee52d93b7
commit 14bb6fd87d
16 changed files with 345 additions and 318 deletions

View File

@@ -218,7 +218,7 @@ namespace SabreTools.DatTools
private static bool CheckDepotFile(DatFile datFile, string item)
{
// If we're not in Depot mode, return false
if (datFile.Header.GetFieldValue<DepotInformation?>(DatHeader.OutputDepotKey)?.IsActive != true)
if (datFile.Modifiers.OutputDepot?.IsActive != true)
return false;
// Check the file as if it were in a depot
@@ -329,7 +329,7 @@ namespace SabreTools.DatTools
private static void ProcessDirectoryBlanks(DatFile datFile, string? basePath)
{
// If we're in depot mode, we don't process blanks
if (datFile.Header.GetFieldValue<DepotInformation?>(DatHeader.OutputDepotKey)?.IsActive == true)
if (datFile.Modifiers.OutputDepot?.IsActive == true)
return;
List<string> empties = basePath.ListEmpty() ?? [];

View File

@@ -118,7 +118,7 @@ namespace SabreTools.DatTools
_staticLogger.User($"Checking hash '{hash}'");
// Get the extension path for the hash
string? subpath = Utilities.GetDepotPath(hash, datFile.Header.GetFieldValue<DepotInformation?>(DatHeader.InputDepotKey)?.Depth ?? 0);
string? subpath = Utilities.GetDepotPath(hash, datFile.Modifiers.InputDepot?.Depth ?? 0);
if (subpath == null)
continue;
@@ -681,7 +681,7 @@ namespace SabreTools.DatTools
// Get the proper output path
string sha1 = (datItem as Rom)!.GetStringFieldValue(Models.Metadata.Rom.SHA1Key) ?? string.Empty;
if (outputFormat == OutputFormat.TorrentGzipRomba)
outDir = Path.Combine(outDir, Utilities.GetDepotPath(sha1, datFile.Header.GetFieldValue<DepotInformation?>(DatHeader.OutputDepotKey)?.Depth ?? 0) ?? string.Empty);
outDir = Path.Combine(outDir, Utilities.GetDepotPath(sha1, datFile.Modifiers.OutputDepot?.Depth ?? 0) ?? string.Empty);
else
outDir = Path.Combine(outDir, sha1 + ".gz");
@@ -727,7 +727,7 @@ namespace SabreTools.DatTools
// Get the proper output path
string sha1 = (datItem as Rom)!.GetStringFieldValue(Models.Metadata.Rom.SHA1Key) ?? string.Empty;
if (outputFormat == OutputFormat.TorrentXZRomba)
outDir = Path.Combine(outDir, Utilities.GetDepotPath(sha1, datFile.Header.GetFieldValue<DepotInformation?>(DatHeader.OutputDepotKey)?.Depth ?? 0) ?? string.Empty).Replace(".gz", ".xz");
outDir = Path.Combine(outDir, Utilities.GetDepotPath(sha1, datFile.Modifiers.OutputDepot?.Depth ?? 0) ?? string.Empty).Replace(".gz", ".xz");
else
outDir = Path.Combine(outDir, sha1 + ".xz");
@@ -832,9 +832,9 @@ namespace SabreTools.DatTools
// Set the depth fields where appropriate
if (outputArchive is GZipArchive gzipArchive)
gzipArchive.Depth = datFile.Header.GetFieldValue<DepotInformation?>(DatHeader.OutputDepotKey)?.Depth ?? 0;
gzipArchive.Depth = datFile.Modifiers.OutputDepot?.Depth ?? 0;
else if (outputArchive is XZArchive xzArchive)
xzArchive.Depth = datFile.Header.GetFieldValue<DepotInformation?>(DatHeader.OutputDepotKey)?.Depth ?? 0;
xzArchive.Depth = datFile.Modifiers.OutputDepot?.Depth ?? 0;
return outputArchive;
}

View File

@@ -54,12 +54,12 @@ namespace SabreTools.DatTools
string newExtBString = string.Join(",", newExtB);
// Set all of the appropriate outputs for each of the subsets
DatFile extADat = DatFileTool.CreateDatFile(datFile.Header.CloneStandard());
DatFile extADat = DatFileTool.CreateDatFile(datFile.Header.CloneStandard(), datFile.Modifiers);
extADat.Header.SetFieldValue<string?>(DatHeader.FileNameKey, extADat.Header.GetStringFieldValue(DatHeader.FileNameKey) + $" ({newExtAString})");
extADat.Header.SetFieldValue<string?>(Models.Metadata.Header.NameKey, extADat.Header.GetStringFieldValue(Models.Metadata.Header.NameKey) + $" ({newExtAString})");
extADat.Header.SetFieldValue<string?>(Models.Metadata.Header.DescriptionKey, extADat.Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey) + $" ({newExtAString})");
DatFile extBDat = DatFileTool.CreateDatFile(datFile.Header.CloneStandard());
DatFile extBDat = DatFileTool.CreateDatFile(datFile.Header.CloneStandard(), datFile.Modifiers);
extBDat.Header.SetFieldValue<string?>(DatHeader.FileNameKey, extBDat.Header.GetStringFieldValue(DatHeader.FileNameKey) + $" ({newExtBString})");
extBDat.Header.SetFieldValue<string?>(Models.Metadata.Header.NameKey, extBDat.Header.GetStringFieldValue(Models.Metadata.Header.NameKey) + $" ({newExtBString})");
extBDat.Header.SetFieldValue<string?>(Models.Metadata.Header.DescriptionKey, extBDat.Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey) + $" ({newExtBString})");
@@ -131,12 +131,12 @@ namespace SabreTools.DatTools
string newExtBString = string.Join(",", newExtB);
// Set all of the appropriate outputs for each of the subsets
DatFile extADat = DatFileTool.CreateDatFile(datFile.Header.CloneStandard());
DatFile extADat = DatFileTool.CreateDatFile(datFile.Header.CloneStandard(), datFile.Modifiers);
extADat.Header.SetFieldValue<string?>(DatHeader.FileNameKey, extADat.Header.GetStringFieldValue(DatHeader.FileNameKey) + $" ({newExtAString})");
extADat.Header.SetFieldValue<string?>(Models.Metadata.Header.NameKey, extADat.Header.GetStringFieldValue(Models.Metadata.Header.NameKey) + $" ({newExtAString})");
extADat.Header.SetFieldValue<string?>(Models.Metadata.Header.DescriptionKey, extADat.Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey) + $" ({newExtAString})");
DatFile extBDat = DatFileTool.CreateDatFile(datFile.Header.CloneStandard());
DatFile extBDat = DatFileTool.CreateDatFile(datFile.Header.CloneStandard(), datFile.Modifiers);
extBDat.Header.SetFieldValue<string?>(DatHeader.FileNameKey, extBDat.Header.GetStringFieldValue(DatHeader.FileNameKey) + $" ({newExtBString})");
extBDat.Header.SetFieldValue<string?>(Models.Metadata.Header.NameKey, extBDat.Header.GetStringFieldValue(Models.Metadata.Header.NameKey) + $" ({newExtBString})");
extBDat.Header.SetFieldValue<string?>(Models.Metadata.Header.DescriptionKey, extBDat.Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey) + $" ({newExtBString})");
@@ -232,7 +232,7 @@ namespace SabreTools.DatTools
Dictionary<string, DatFile> fieldDats = [];
foreach (var kvp in mappings)
{
fieldDats[kvp.Key] = DatFileTool.CreateDatFile(datFile.Header.CloneStandard());
fieldDats[kvp.Key] = DatFileTool.CreateDatFile(datFile.Header.CloneStandard(), datFile.Modifiers);
fieldDats[kvp.Key].Header.SetFieldValue<string?>(DatHeader.FileNameKey, fieldDats[kvp.Key].Header.GetStringFieldValue(DatHeader.FileNameKey) + kvp.Value);
fieldDats[kvp.Key].Header.SetFieldValue<string?>(Models.Metadata.Header.NameKey, fieldDats[kvp.Key].Header.GetStringFieldValue(Models.Metadata.Header.NameKey) + kvp.Value);
fieldDats[kvp.Key].Header.SetFieldValue<string?>(Models.Metadata.Header.DescriptionKey, fieldDats[kvp.Key].Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey) + kvp.Value);
@@ -349,7 +349,7 @@ namespace SabreTools.DatTools
Dictionary<string, DatFile> fieldDats = [];
foreach (var kvp in mappings)
{
fieldDats[kvp.Key] = DatFileTool.CreateDatFile(datFile.Header.CloneStandard());
fieldDats[kvp.Key] = DatFileTool.CreateDatFile(datFile.Header.CloneStandard(), datFile.Modifiers);
fieldDats[kvp.Key].Header.SetFieldValue<string?>(DatHeader.FileNameKey, fieldDats[kvp.Key].Header.GetStringFieldValue(DatHeader.FileNameKey) + kvp.Value);
fieldDats[kvp.Key].Header.SetFieldValue<string?>(Models.Metadata.Header.NameKey, fieldDats[kvp.Key].Header.GetStringFieldValue(Models.Metadata.Header.NameKey) + kvp.Value);
fieldDats[kvp.Key].Header.SetFieldValue<string?>(Models.Metadata.Header.DescriptionKey, fieldDats[kvp.Key].Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey) + kvp.Value);
@@ -492,7 +492,7 @@ namespace SabreTools.DatTools
datFile.BucketBy(ItemKey.Machine, lower: false, norename: true);
// Create a temporary DAT to add things to
DatFile tempDat = DatFileTool.CreateDatFile(datFile.Header);
DatFile tempDat = DatFileTool.CreateDatFile(datFile.Header, datFile.Modifiers);
tempDat.Header.SetFieldValue<string?>(Models.Metadata.Header.NameKey, null);
// Sort the input keys
@@ -512,7 +512,7 @@ namespace SabreTools.DatTools
if (tempDat.Header.GetStringFieldValue(Models.Metadata.Header.NameKey) != null && tempDat.Header.GetStringFieldValue(Models.Metadata.Header.NameKey) != Path.GetDirectoryName(key))
{
// Reset the DAT for the next items
tempDat = DatFileTool.CreateDatFile(datFile.Header);
tempDat = DatFileTool.CreateDatFile(datFile.Header, datFile.Modifiers);
tempDat.Header.SetFieldValue<string?>(Models.Metadata.Header.NameKey, null);
}
@@ -615,12 +615,12 @@ namespace SabreTools.DatTools
// Create each of the respective output DATs
InternalStopwatch watch = new($"Splitting DAT by size");
DatFile lessThan = DatFileTool.CreateDatFile(datFile.Header.CloneStandard());
DatFile lessThan = DatFileTool.CreateDatFile(datFile.Header.CloneStandard(), datFile.Modifiers);
lessThan.Header.SetFieldValue<string?>(DatHeader.FileNameKey, lessThan.Header.GetStringFieldValue(DatHeader.FileNameKey) + $" (less than {radix})");
lessThan.Header.SetFieldValue<string?>(Models.Metadata.Header.NameKey, lessThan.Header.GetStringFieldValue(Models.Metadata.Header.NameKey) + $" (less than {radix})");
lessThan.Header.SetFieldValue<string?>(Models.Metadata.Header.DescriptionKey, lessThan.Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey) + $" (less than {radix})");
DatFile greaterThan = DatFileTool.CreateDatFile(datFile.Header.CloneStandard());
DatFile greaterThan = DatFileTool.CreateDatFile(datFile.Header.CloneStandard(), datFile.Modifiers);
greaterThan.Header.SetFieldValue<string?>(DatHeader.FileNameKey, greaterThan.Header.GetStringFieldValue(DatHeader.FileNameKey) + $" (equal-greater than {radix})");
greaterThan.Header.SetFieldValue<string?>(Models.Metadata.Header.NameKey, greaterThan.Header.GetStringFieldValue(Models.Metadata.Header.NameKey) + $" (equal-greater than {radix})");
greaterThan.Header.SetFieldValue<string?>(Models.Metadata.Header.DescriptionKey, greaterThan.Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey) + $" (equal-greater than {radix})");
@@ -681,12 +681,12 @@ namespace SabreTools.DatTools
// Create each of the respective output DATs
var watch = new InternalStopwatch($"Splitting DAT by size");
DatFile lessThan = DatFileTool.CreateDatFile(datFile.Header.CloneStandard());
DatFile lessThan = DatFileTool.CreateDatFile(datFile.Header.CloneStandard(), datFile.Modifiers);
lessThan.Header.SetFieldValue<string?>(DatHeader.FileNameKey, lessThan.Header.GetStringFieldValue(DatHeader.FileNameKey) + $" (less than {radix})");
lessThan.Header.SetFieldValue<string?>(Models.Metadata.Header.NameKey, lessThan.Header.GetStringFieldValue(Models.Metadata.Header.NameKey) + $" (less than {radix})");
lessThan.Header.SetFieldValue<string?>(Models.Metadata.Header.DescriptionKey, lessThan.Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey) + $" (less than {radix})");
DatFile greaterThan = DatFileTool.CreateDatFile(datFile.Header.CloneStandard());
DatFile greaterThan = DatFileTool.CreateDatFile(datFile.Header.CloneStandard(), datFile.Modifiers);
greaterThan.Header.SetFieldValue<string?>(DatHeader.FileNameKey, greaterThan.Header.GetStringFieldValue(DatHeader.FileNameKey) + $" (equal-greater than {radix})");
greaterThan.Header.SetFieldValue<string?>(Models.Metadata.Header.NameKey, greaterThan.Header.GetStringFieldValue(Models.Metadata.Header.NameKey) + $" (equal-greater than {radix})");
greaterThan.Header.SetFieldValue<string?>(Models.Metadata.Header.DescriptionKey, greaterThan.Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey) + $" (equal-greater than {radix})");
@@ -782,7 +782,7 @@ namespace SabreTools.DatTools
// Initialize everything
long currentSize = 0;
long currentIndex = 0;
DatFile currentDat = DatFileTool.CreateDatFile(datFile.Header.CloneStandard());
DatFile currentDat = DatFileTool.CreateDatFile(datFile.Header.CloneStandard(), datFile.Modifiers);
currentDat.Header.SetFieldValue<string?>(DatHeader.FileNameKey, currentDat.Header.GetStringFieldValue(DatHeader.FileNameKey) + $"_{currentIndex}");
currentDat.Header.SetFieldValue<string?>(Models.Metadata.Header.NameKey, currentDat.Header.GetStringFieldValue(Models.Metadata.Header.NameKey) + $"_{currentIndex}");
currentDat.Header.SetFieldValue<string?>(Models.Metadata.Header.DescriptionKey, currentDat.Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey) + $"_{currentIndex}");
@@ -825,7 +825,7 @@ namespace SabreTools.DatTools
datFiles.Add(currentDat);
currentSize = 0;
currentIndex++;
currentDat = DatFileTool.CreateDatFile(datFile.Header.CloneStandard());
currentDat = DatFileTool.CreateDatFile(datFile.Header.CloneStandard(), datFile.Modifiers);
currentDat.Header.SetFieldValue<string?>(DatHeader.FileNameKey, currentDat.Header.GetStringFieldValue(DatHeader.FileNameKey) + $"_{currentIndex}");
currentDat.Header.SetFieldValue<string?>(Models.Metadata.Header.NameKey, currentDat.Header.GetStringFieldValue(Models.Metadata.Header.NameKey) + $"_{currentIndex}");
currentDat.Header.SetFieldValue<string?>(Models.Metadata.Header.DescriptionKey, currentDat.Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey) + $"_{currentIndex}");
@@ -869,7 +869,7 @@ namespace SabreTools.DatTools
// Setup all of the DatFiles
foreach (ItemType itemType in outputTypes)
{
typeDats[itemType] = DatFileTool.CreateDatFile(datFile.Header.CloneStandard());
typeDats[itemType] = DatFileTool.CreateDatFile(datFile.Header.CloneStandard(), datFile.Modifiers);
typeDats[itemType].Header.SetFieldValue<string?>(DatHeader.FileNameKey, typeDats[itemType].Header.GetStringFieldValue(DatHeader.FileNameKey) + $" ({itemType})");
typeDats[itemType].Header.SetFieldValue<string?>(Models.Metadata.Header.NameKey, typeDats[itemType].Header.GetStringFieldValue(Models.Metadata.Header.NameKey) + $" ({itemType})");
typeDats[itemType].Header.SetFieldValue<string?>(Models.Metadata.Header.DescriptionKey, typeDats[itemType].Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey) + $" ({itemType})");

View File

@@ -66,7 +66,7 @@ namespace SabreTools.DatTools
_staticLogger.User($"Checking hash '{hash}'");
// Get the extension path for the hash
string? subpath = Utilities.GetDepotPath(hash, datFile.Header.GetFieldValue<DepotInformation?>(DatHeader.InputDepotKey)?.Depth ?? 0);
string? subpath = Utilities.GetDepotPath(hash, datFile.Modifiers.InputDepot?.Depth ?? 0);
if (subpath == null)
continue;
@@ -151,7 +151,7 @@ namespace SabreTools.DatTools
_staticLogger.User($"Checking hash '{hash}'");
// Get the extension path for the hash
string? subpath = Utilities.GetDepotPath(hash, datFile.Header.GetFieldValue<DepotInformation?>(DatHeader.InputDepotKey)?.Depth ?? 0);
string? subpath = Utilities.GetDepotPath(hash, datFile.Modifiers.InputDepot?.Depth ?? 0);
if (subpath == null)
continue;