mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 11:14:23 +00:00
Try to reconsile header values again
This commit is contained in:
@@ -159,6 +159,12 @@ namespace SabreTools.DatFiles
|
|||||||
header.Remove(Models.Metadata.Header.ForceNodumpKey);
|
header.Remove(Models.Metadata.Header.ForceNodumpKey);
|
||||||
if (header.ReadString(Models.Metadata.Header.ForcePackingKey).AsPackingFlag() == PackingFlag.None)
|
if (header.ReadString(Models.Metadata.Header.ForcePackingKey).AsPackingFlag() == PackingFlag.None)
|
||||||
header.Remove(Models.Metadata.Header.ForcePackingKey);
|
header.Remove(Models.Metadata.Header.ForcePackingKey);
|
||||||
|
if (header.ReadString(Models.Metadata.Header.BiosModeKey).AsMergingFlag() == MergingFlag.None)
|
||||||
|
header.Remove(Models.Metadata.Header.BiosModeKey);
|
||||||
|
if (header.ReadString(Models.Metadata.Header.RomModeKey).AsMergingFlag() == MergingFlag.None)
|
||||||
|
header.Remove(Models.Metadata.Header.RomModeKey);
|
||||||
|
if (header.ReadString(Models.Metadata.Header.SampleModeKey).AsMergingFlag() == MergingFlag.None)
|
||||||
|
header.Remove(Models.Metadata.Header.SampleModeKey);
|
||||||
|
|
||||||
// Convert subheader values
|
// Convert subheader values
|
||||||
if (CanOpenSpecified)
|
if (CanOpenSpecified)
|
||||||
|
|||||||
@@ -149,6 +149,9 @@ namespace SabreTools.DatTools
|
|||||||
statsOnly: statsOnly,
|
statsOnly: statsOnly,
|
||||||
filterRunner: filterRunner,
|
filterRunner: filterRunner,
|
||||||
throwOnError: throwOnError);
|
throwOnError: throwOnError);
|
||||||
|
|
||||||
|
// Copy the header values back
|
||||||
|
datFile.SetHeader(parsingDatFile.Header);
|
||||||
}
|
}
|
||||||
catch (Exception ex) when (!throwOnError)
|
catch (Exception ex) when (!throwOnError)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -103,9 +103,6 @@ namespace SabreTools.Features
|
|||||||
? Modifiers.ReplaceExtension
|
? Modifiers.ReplaceExtension
|
||||||
: $".{Modifiers.ReplaceExtension}";
|
: $".{Modifiers.ReplaceExtension}";
|
||||||
|
|
||||||
// If we're in a non-replacement special update mode and the names aren't set, set defaults
|
|
||||||
SetDefaultHeaderValues(updateMode, GetBoolean(features, NoAutomaticDateValue));
|
|
||||||
|
|
||||||
// If no update fields are set, default to Names
|
// If no update fields are set, default to Names
|
||||||
if (updateItemFieldNames == null || updateItemFieldNames.Count == 0)
|
if (updateItemFieldNames == null || updateItemFieldNames.Count == 0)
|
||||||
{
|
{
|
||||||
@@ -123,7 +120,7 @@ namespace SabreTools.Features
|
|||||||
// If we're in standard update mode, run through all of the inputs
|
// If we're in standard update mode, run through all of the inputs
|
||||||
if (updateMode == UpdateMode.None)
|
if (updateMode == UpdateMode.None)
|
||||||
{
|
{
|
||||||
StandardUpdate(inputPaths, GetBoolean(features, InplaceValue));
|
StandardUpdate(inputPaths, GetBoolean(features, InplaceValue), GetBoolean(features, NoAutomaticDateValue));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -150,6 +147,9 @@ namespace SabreTools.Features
|
|||||||
// Create a DAT to capture inputs
|
// Create a DAT to capture inputs
|
||||||
DatFile userInputDat = Parser.CreateDatFile(Header!, Modifiers);
|
DatFile userInputDat = Parser.CreateDatFile(Header!, Modifiers);
|
||||||
|
|
||||||
|
// If we're in a non-replacement special update mode and the names aren't set, set defaults
|
||||||
|
SetDefaultHeaderValues(userInputDat, updateMode, GetBoolean(features, NoAutomaticDateValue));
|
||||||
|
|
||||||
// Populate using the correct set
|
// Populate using the correct set
|
||||||
List<DatHeader> datHeaders = GetDatHeaders(updateMode, inputPaths, basePaths, userInputDat);
|
List<DatHeader> datHeaders = GetDatHeaders(updateMode, inputPaths, basePaths, userInputDat);
|
||||||
|
|
||||||
@@ -391,12 +391,13 @@ namespace SabreTools.Features
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Set default header values for non-specialized update types
|
/// Set default header values for non-specialized update types
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <param name="datFile">DatFile to update the header for</param>
|
||||||
/// <param name="updateMode">Update mode that is currently being run</param>
|
/// <param name="updateMode">Update mode that is currently being run</param>
|
||||||
/// <param name="noAutomaticDate">True if date should be omitted from the description, false otherwise</param>
|
/// <param name="noAutomaticDate">True if date should be omitted from the description, false otherwise</param>
|
||||||
private void SetDefaultHeaderValues(UpdateMode updateMode, bool noAutomaticDate)
|
private void SetDefaultHeaderValues(DatFile datFile, UpdateMode updateMode, bool noAutomaticDate)
|
||||||
{
|
{
|
||||||
// Skip running if a required object is null
|
// Skip running if a required objects are null
|
||||||
if (Header == null || Cleaner == null)
|
if (datFile.Header == null || Cleaner == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Skip running for diff against and base replacement
|
// Skip running for diff against and base replacement
|
||||||
@@ -413,39 +414,39 @@ namespace SabreTools.Features
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Date
|
// Date
|
||||||
if (string.IsNullOrEmpty(Header.GetStringFieldValue(Models.Metadata.Header.DateKey)))
|
if (string.IsNullOrEmpty(datFile.Header.GetStringFieldValue(Models.Metadata.Header.DateKey)))
|
||||||
Header.SetFieldValue<string?>(Models.Metadata.Header.DateKey, DateTime.Now.ToString("yyyy-MM-dd"));
|
datFile.Header.SetFieldValue<string?>(Models.Metadata.Header.DateKey, DateTime.Now.ToString("yyyy-MM-dd"));
|
||||||
|
|
||||||
// Name
|
// Name
|
||||||
if (string.IsNullOrEmpty(Header.GetStringFieldValue(Models.Metadata.Header.NameKey)))
|
if (string.IsNullOrEmpty(datFile.Header.GetStringFieldValue(Models.Metadata.Header.NameKey)))
|
||||||
{
|
{
|
||||||
Header.SetFieldValue<string?>(Models.Metadata.Header.NameKey, (updateMode != 0 ? "DiffDAT" : "MergeDAT")
|
datFile.Header.SetFieldValue<string?>(Models.Metadata.Header.NameKey, (updateMode != 0 ? "DiffDAT" : "MergeDAT")
|
||||||
+ (Header.GetStringFieldValue(Models.Metadata.Header.TypeKey) == "SuperDAT" ? "-SuperDAT" : string.Empty)
|
+ (datFile.Header.GetStringFieldValue(Models.Metadata.Header.TypeKey) == "SuperDAT" ? "-SuperDAT" : string.Empty)
|
||||||
+ (Cleaner.DedupeRoms != DedupeType.None ? "-deduped" : string.Empty));
|
+ (Cleaner.DedupeRoms != DedupeType.None ? "-deduped" : string.Empty));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Description
|
// Description
|
||||||
if (string.IsNullOrEmpty(Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey)))
|
if (string.IsNullOrEmpty(datFile.Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey)))
|
||||||
{
|
{
|
||||||
Header.SetFieldValue<string?>(Models.Metadata.Header.DescriptionKey, (updateMode != 0 ? "DiffDAT" : "MergeDAT")
|
datFile.Header.SetFieldValue<string?>(Models.Metadata.Header.DescriptionKey, (updateMode != 0 ? "DiffDAT" : "MergeDAT")
|
||||||
+ (Header.GetStringFieldValue(Models.Metadata.Header.TypeKey) == "SuperDAT" ? "-SuperDAT" : string.Empty)
|
+ (datFile.Header.GetStringFieldValue(Models.Metadata.Header.TypeKey) == "SuperDAT" ? "-SuperDAT" : string.Empty)
|
||||||
+ (Cleaner!.DedupeRoms != DedupeType.None ? " - deduped" : string.Empty));
|
+ (Cleaner!.DedupeRoms != DedupeType.None ? " - deduped" : string.Empty));
|
||||||
|
|
||||||
if (!noAutomaticDate)
|
if (!noAutomaticDate)
|
||||||
Header.SetFieldValue<string?>(Models.Metadata.Header.DescriptionKey, $"{Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey)} ({Header.GetStringFieldValue(Models.Metadata.Header.DateKey)})");
|
datFile.Header.SetFieldValue<string?>(Models.Metadata.Header.DescriptionKey, $"{datFile.Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey)} ({datFile.Header.GetStringFieldValue(Models.Metadata.Header.DateKey)})");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Category
|
// Category
|
||||||
if (string.IsNullOrEmpty(Header.GetStringFieldValue(Models.Metadata.Header.CategoryKey)) && updateMode != 0)
|
if (string.IsNullOrEmpty(datFile.Header.GetStringFieldValue(Models.Metadata.Header.CategoryKey)) && updateMode != 0)
|
||||||
Header.SetFieldValue<string?>(Models.Metadata.Header.CategoryKey, "DiffDAT");
|
datFile.Header.SetFieldValue<string?>(Models.Metadata.Header.CategoryKey, "DiffDAT");
|
||||||
|
|
||||||
// Author
|
// Author
|
||||||
if (string.IsNullOrEmpty(Header.GetStringFieldValue(Models.Metadata.Header.AuthorKey)))
|
if (string.IsNullOrEmpty(datFile.Header.GetStringFieldValue(Models.Metadata.Header.AuthorKey)))
|
||||||
Header.SetFieldValue<string?>(Models.Metadata.Header.AuthorKey, $"SabreTools {Globals.Version}");
|
datFile.Header.SetFieldValue<string?>(Models.Metadata.Header.AuthorKey, $"SabreTools {Globals.Version}");
|
||||||
|
|
||||||
// Comment
|
// Comment
|
||||||
if (string.IsNullOrEmpty(Header.GetStringFieldValue(Models.Metadata.Header.CommentKey)))
|
if (string.IsNullOrEmpty(datFile.Header.GetStringFieldValue(Models.Metadata.Header.CommentKey)))
|
||||||
Header.SetFieldValue<string?>(Models.Metadata.Header.CommentKey, $"Generated by SabreTools {Globals.Version}");
|
datFile.Header.SetFieldValue<string?>(Models.Metadata.Header.CommentKey, $"Generated by SabreTools {Globals.Version}");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -453,7 +454,8 @@ namespace SabreTools.Features
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="inputPaths">Set of input paths to process</param>
|
/// <param name="inputPaths">Set of input paths to process</param>
|
||||||
/// <param name="inplace">True to output to the input folder, false otherwise</param>
|
/// <param name="inplace">True to output to the input folder, false otherwise</param>
|
||||||
private void StandardUpdate(List<ParentablePath> inputPaths, bool inplace)
|
/// <param name="noAutomaticDate">True if date should be omitted from the description, false otherwise</param>
|
||||||
|
private void StandardUpdate(List<ParentablePath> inputPaths, bool inplace, bool noAutomaticDate)
|
||||||
{
|
{
|
||||||
// Loop through each input and update
|
// Loop through each input and update
|
||||||
#if NET452_OR_GREATER || NETCOREAPP
|
#if NET452_OR_GREATER || NETCOREAPP
|
||||||
@@ -489,6 +491,9 @@ namespace SabreTools.Features
|
|||||||
filterRunner: FilterRunner);
|
filterRunner: FilterRunner);
|
||||||
datFile.Header.SetFieldValue<DatFormat>(DatHeader.DatFormatKey, currentFormat);
|
datFile.Header.SetFieldValue<DatFormat>(DatHeader.DatFormatKey, currentFormat);
|
||||||
|
|
||||||
|
// Set any missing header values
|
||||||
|
SetDefaultHeaderValues(datFile, updateMode: UpdateMode.None, noAutomaticDate: noAutomaticDate);
|
||||||
|
|
||||||
// Perform additional processing steps
|
// Perform additional processing steps
|
||||||
AdditionalProcessing(datFile);
|
AdditionalProcessing(datFile);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user