Further cleanup in Options

This commit is contained in:
Matt Nadareski
2026-02-07 20:24:39 -05:00
parent 90f808b63b
commit ff58e48ce9
8 changed files with 92 additions and 85 deletions

View File

@@ -31,6 +31,7 @@
- Replace original Options object
- Clean up options serialization and ordering
- Add placeholder CLI media info methods
- Further cleanup in Options
### 3.6.0 (2025-11-28)

View File

@@ -77,13 +77,13 @@ namespace MPF.CLI.Features
Options.Processing.ProtectionScanning.HideDriveLetters = false;
// Redump Login Information
Options.Processing.Login.RetrieveMatchInformation = true;
Options.Processing.Login.PullAllInformation = false;
Options.Processing.Login.RedumpUsername = null;
Options.Processing.Login.RedumpPassword = null;
Options.Processing.Login.RetrieveMatchInformation = true;
// Media Information
Options.Processing.MediaInformation.AddPlaceholders = true;
Options.Processing.MediaInformation.PullAllInformation = false;
// Post-Information Options
Options.Processing.AddFilenameSuffix = false;

View File

@@ -52,13 +52,13 @@ namespace MPF.Check.Features
Options.Processing.ProtectionScanning.HideDriveLetters = false;
// Redump Login Information
Options.Processing.Login.RetrieveMatchInformation = true;
Options.Processing.Login.PullAllInformation = false;
Options.Processing.Login.RedumpUsername = null;
Options.Processing.Login.RedumpPassword = null;
Options.Processing.Login.RetrieveMatchInformation = true;
// Media Information
Options.Processing.MediaInformation.AddPlaceholders = true;
Options.Processing.MediaInformation.PullAllInformation = false;
// Post-Information Options
Options.Processing.AddFilenameSuffix = false;

View File

@@ -50,13 +50,13 @@ namespace MPF.Check.Features
Options.Processing.ProtectionScanning.HideDriveLetters = false;
// Redump Login Information
Options.Processing.Login.RetrieveMatchInformation = true;
Options.Processing.Login.PullAllInformation = false;
Options.Processing.Login.RedumpUsername = null;
Options.Processing.Login.RedumpPassword = null;
Options.Processing.Login.RetrieveMatchInformation = true;
// Media Information
Options.Processing.MediaInformation.AddPlaceholders = true;
Options.Processing.MediaInformation.PullAllInformation = false;
// Post-Information Options
Options.Processing.AddFilenameSuffix = false;
@@ -92,7 +92,7 @@ namespace MPF.Check.Features
Console.WriteLine($"5) Create IRD (Currently '{Options.Processing.CreateIRDAfterDumping}')");
Console.WriteLine($"6) Attempt Redump matches (Currently '{Options.Processing.Login.RetrieveMatchInformation}')");
Console.WriteLine($"7) Redump credentials (Currently '{Options.Processing.Login.RedumpUsername}')");
Console.WriteLine($"8) Pull all information (Currently '{Options.Processing.MediaInformation.PullAllInformation}')");
Console.WriteLine($"8) Pull all information (Currently '{Options.Processing.Login.PullAllInformation}')");
Console.WriteLine($"9) Set device path (Currently '{DevicePath}')");
Console.WriteLine($"A) Scan for protection (Currently '{scan}')");
Console.WriteLine($"B) Scan archives for protection (Currently '{enableArchives}')");
@@ -130,7 +130,7 @@ namespace MPF.Check.Features
case "7":
goto redumpCredentials;
case "8":
Options.Processing.MediaInformation.PullAllInformation = !Options.Processing.MediaInformation.PullAllInformation;
Options.Processing.Login.PullAllInformation = !Options.Processing.Login.PullAllInformation;
goto root;
case "9":
goto devicePath;

View File

@@ -135,13 +135,13 @@ namespace MPF.Check.Features
Options.Processing.ProtectionScanning.HideDriveLetters = false;
// Redump Login Information
Options.Processing.Login.RetrieveMatchInformation = true;
Options.Processing.Login.PullAllInformation = false;
Options.Processing.Login.RedumpUsername = null;
Options.Processing.Login.RedumpPassword = null;
Options.Processing.Login.RetrieveMatchInformation = true;
// Media Information
Options.Processing.MediaInformation.AddPlaceholders = true;
Options.Processing.MediaInformation.PullAllInformation = false;
// Post-Information Options
Options.Processing.AddFilenameSuffix = false;
@@ -211,7 +211,7 @@ namespace MPF.Check.Features
// Pull all information (requires Redump login)
else if (PullAllInput.ProcessInput(args, ref index))
Options.Processing.MediaInformation.PullAllInformation = !Options.Processing.MediaInformation.PullAllInformation;
Options.Processing.Login.PullAllInformation = !Options.Processing.Login.PullAllInformation;
// Use a device path for physical checks
else if (PathInput.ProcessInput(args, ref index))

View File

@@ -118,36 +118,36 @@ namespace MPF.Frontend.Features
Console.WriteLine("Protection Scanning Options:");
Console.WriteLine($" Scan for Protection = {options.Processing.ProtectionScanning.ScanForProtection}");
Console.WriteLine($" Scan Archives for Protection = {options.Processing.ProtectionScanning.ScanArchivesForProtection}");
Console.WriteLine($" Include Debug Protection Information = {options.Processing.ProtectionScanning.IncludeDebugProtectionInformation}");
Console.WriteLine($" Hide Drive Letters = {options.Processing.ProtectionScanning.HideDriveLetters}");
Console.WriteLine($" Include Debug Protection Information = {options.Processing.ProtectionScanning.IncludeDebugProtectionInformation}");
Console.WriteLine();
// Redump Login Information
Console.WriteLine("Redump Login Information:");
Console.WriteLine($" Retrieve Match Information = {options.Processing.Login.RetrieveMatchInformation}");
Console.WriteLine($" Pull All Information = {options.Processing.Login.PullAllInformation}");
Console.WriteLine($" Redump Username = {options.Processing.Login.RedumpUsername}");
Console.WriteLine($" Redump Password = {(string.IsNullOrEmpty(options.Processing.Login.RedumpPassword) ? "[UNSET]" : "[SET]")}");
Console.WriteLine($" Retrieve Match Information = {options.Processing.Login.RetrieveMatchInformation}");
Console.WriteLine();
// Media Information
Console.WriteLine("Media Information:");
Console.WriteLine($" Add Placeholders = {options.Processing.MediaInformation.AddPlaceholders}");
Console.WriteLine($" Prompt for Media Information = {options.Processing.MediaInformation.PromptForDiscInformation}");
Console.WriteLine($" Pull All Information = {options.Processing.MediaInformation.PullAllInformation}");
Console.WriteLine($" Enable Tabs in Input Fields = {options.Processing.MediaInformation.EnableTabsInInputFields}");
Console.WriteLine($" Enable Redump Compatibility = {options.Processing.MediaInformation.EnableRedumpCompatibility}");
Console.WriteLine($" Enable Tabs in Input Fields = {options.Processing.MediaInformation.EnableTabsInInputFields}");
Console.WriteLine($" Prompt for Media Information = {options.Processing.MediaInformation.PromptForDiscInformation}");
Console.WriteLine();
// Output Options
Console.WriteLine("Output Options:");
Console.WriteLine($" Show Disc Eject Reminder = {options.Processing.ShowDiscEjectReminder}");
// Post-Information Options
Console.WriteLine("Post-Information Options:");
Console.WriteLine($" Add Filename Suffix = {options.Processing.AddFilenameSuffix}");
Console.WriteLine($" Create IRD After Dumping = {options.Processing.CreateIRDAfterDumping}");
Console.WriteLine($" Output Submission JSON = {options.Processing.OutputSubmissionJSON}");
Console.WriteLine($" Include Artifacts = {options.Processing.IncludeArtifacts}");
Console.WriteLine($" Compress Log Files = {options.Processing.CompressLogFiles}");
Console.WriteLine($" Log Compression = {options.Processing.LogCompression.LongName()}");
Console.WriteLine($" Create IRD After Dumping = {options.Processing.CreateIRDAfterDumping}");
Console.WriteLine($" Delete Unnecessary Files = {options.Processing.DeleteUnnecessaryFiles}");
Console.WriteLine($" Include Artifacts = {options.Processing.IncludeArtifacts}");
Console.WriteLine($" Log Compression = {options.Processing.LogCompression.LongName()}");
Console.WriteLine($" Output Submission JSON = {options.Processing.OutputSubmissionJSON}");
Console.WriteLine($" Show Disc Eject Reminder = {options.Processing.ShowDiscEjectReminder}");
Console.WriteLine();
return true;

View File

@@ -167,28 +167,28 @@ namespace MPF.Frontend
Processing.ProtectionScanning.ScanForProtection = GetBooleanSetting(source, "ScanForProtection", true);
Processing.ProtectionScanning.ScanArchivesForProtection = GetBooleanSetting(source, "ScanArchivesForProtection", true);
Processing.ProtectionScanning.IncludeDebugProtectionInformation = GetBooleanSetting(source, "IncludeDebugProtectionInformation", false);
Processing.ProtectionScanning.HideDriveLetters = GetBooleanSetting(source, "HideDriveLetters", false);
Processing.ProtectionScanning.IncludeDebugProtectionInformation = GetBooleanSetting(source, "IncludeDebugProtectionInformation", false);
Processing.Login.RetrieveMatchInformation = GetBooleanSetting(source, "RetrieveMatchInformation", true);
Processing.Login.PullAllInformation = GetBooleanSetting(source, "PullAllInformation", false);
Processing.Login.RedumpUsername = GetStringSetting(source, "RedumpUsername", string.Empty);
Processing.Login.RedumpPassword = GetStringSetting(source, "RedumpPassword", string.Empty);
Processing.Login.RetrieveMatchInformation = GetBooleanSetting(source, "RetrieveMatchInformation", true);
Processing.MediaInformation.AddPlaceholders = GetBooleanSetting(source, "AddPlaceholders", true);
Processing.MediaInformation.PromptForDiscInformation = GetBooleanSetting(source, "PromptForDiscInformation", true);
Processing.MediaInformation.PullAllInformation = GetBooleanSetting(source, "PullAllInformation", false);
Processing.MediaInformation.EnableTabsInInputFields = GetBooleanSetting(source, "EnableTabsInInputFields", true);
Processing.MediaInformation.EnableRedumpCompatibility = GetBooleanSetting(source, "EnableRedumpCompatibility", true);
Processing.MediaInformation.EnableTabsInInputFields = GetBooleanSetting(source, "EnableTabsInInputFields", true);
Processing.MediaInformation.PromptForDiscInformation = GetBooleanSetting(source, "PromptForDiscInformation", true);
Processing.ShowDiscEjectReminder = GetBooleanSetting(source, "ShowDiscEjectReminder", true);
Processing.AddFilenameSuffix = GetBooleanSetting(source, "AddFilenameSuffix", false);
Processing.CreateIRDAfterDumping = GetBooleanSetting(source, "CreateIRDAfterDumping", false);
Processing.OutputSubmissionJSON = GetBooleanSetting(source, "OutputSubmissionJSON", false);
Processing.IncludeArtifacts = GetBooleanSetting(source, "IncludeArtifacts", false);
Processing.CompressLogFiles = GetBooleanSetting(source, "CompressLogFiles", true);
Processing.CreateIRDAfterDumping = GetBooleanSetting(source, "CreateIRDAfterDumping", false);
Processing.DeleteUnnecessaryFiles = GetBooleanSetting(source, "DeleteUnnecessaryFiles", false);
Processing.IncludeArtifacts = GetBooleanSetting(source, "IncludeArtifacts", false);
valueString = GetStringSetting(source, "LogCompression", LogCompression.DeflateMaximum.ToString());
Processing.LogCompression = valueString.ToLogCompression();
Processing.DeleteUnnecessaryFiles = GetBooleanSetting(source, "DeleteUnnecessaryFiles", false);
Processing.OutputSubmissionJSON = GetBooleanSetting(source, "OutputSubmissionJSON", false);
Processing.ShowDiscEjectReminder = GetBooleanSetting(source, "ShowDiscEjectReminder", true);
}
/// <summary>
@@ -261,27 +261,27 @@ namespace MPF.Frontend
Processing.ProtectionScanning.ScanForProtection = source.Processing.ProtectionScanning.ScanForProtection;
Processing.ProtectionScanning.ScanArchivesForProtection = source.Processing.ProtectionScanning.ScanArchivesForProtection;
Processing.ProtectionScanning.IncludeDebugProtectionInformation = source.Processing.ProtectionScanning.IncludeDebugProtectionInformation;
Processing.ProtectionScanning.HideDriveLetters = source.Processing.ProtectionScanning.HideDriveLetters;
Processing.ProtectionScanning.IncludeDebugProtectionInformation = source.Processing.ProtectionScanning.IncludeDebugProtectionInformation;
Processing.Login.RetrieveMatchInformation = source.Processing.Login.RetrieveMatchInformation;
Processing.Login.PullAllInformation = source.Processing.Login.PullAllInformation;
Processing.Login.RedumpUsername = source.Processing.Login.RedumpUsername;
Processing.Login.RedumpPassword = source.Processing.Login.RedumpPassword;
Processing.Login.RetrieveMatchInformation = source.Processing.Login.RetrieveMatchInformation;
Processing.MediaInformation.AddPlaceholders = source.Processing.MediaInformation.AddPlaceholders;
Processing.MediaInformation.PromptForDiscInformation = source.Processing.MediaInformation.PromptForDiscInformation;
Processing.MediaInformation.PullAllInformation = source.Processing.MediaInformation.PullAllInformation;
Processing.MediaInformation.EnableTabsInInputFields = source.Processing.MediaInformation.EnableTabsInInputFields;
Processing.MediaInformation.EnableRedumpCompatibility = source.Processing.MediaInformation.EnableRedumpCompatibility;
Processing.MediaInformation.EnableTabsInInputFields = source.Processing.MediaInformation.EnableTabsInInputFields;
Processing.MediaInformation.PromptForDiscInformation = source.Processing.MediaInformation.PromptForDiscInformation;
Processing.ShowDiscEjectReminder = source.Processing.ShowDiscEjectReminder;
Processing.AddFilenameSuffix = source.Processing.AddFilenameSuffix;
Processing.CreateIRDAfterDumping = source.Processing.CreateIRDAfterDumping;
Processing.OutputSubmissionJSON = source.Processing.OutputSubmissionJSON;
Processing.IncludeArtifacts = source.Processing.IncludeArtifacts;
Processing.CompressLogFiles = source.Processing.CompressLogFiles;
Processing.LogCompression = source.Processing.LogCompression;
Processing.CreateIRDAfterDumping = source.Processing.CreateIRDAfterDumping;
Processing.DeleteUnnecessaryFiles = source.Processing.DeleteUnnecessaryFiles;
Processing.IncludeArtifacts = source.Processing.IncludeArtifacts;
Processing.LogCompression = source.Processing.LogCompression;
Processing.OutputSubmissionJSON = source.Processing.OutputSubmissionJSON;
Processing.ShowDiscEjectReminder = source.Processing.ShowDiscEjectReminder;
}
#endregion
@@ -350,7 +350,7 @@ namespace MPF.Frontend
{ "ScanForProtection", Processing.ProtectionScanning.ScanForProtection.ToString() },
{ "AddPlaceholders", Processing.MediaInformation.AddPlaceholders.ToString() },
{ "PromptForDiscInformation", Processing.MediaInformation.PromptForDiscInformation.ToString() },
{ "PullAllInformation", Processing.MediaInformation.PullAllInformation.ToString() },
{ "PullAllInformation", Processing.Login.PullAllInformation.ToString() },
{ "EnableTabsInInputFields", Processing.MediaInformation.EnableTabsInInputFields.ToString() },
{ "EnableRedumpCompatibility", Processing.MediaInformation.EnableRedumpCompatibility.ToString() },
{ "ShowDiscEjectReminder", Processing.ShowDiscEjectReminder.ToString() },
@@ -774,16 +774,10 @@ namespace MPF.Frontend
public bool AddPlaceholders { get; set; } = true;
/// <summary>
/// Show the media information window after dumping
/// Limit outputs to Redump-supported values only
/// </summary>
/// <remarks>Version 1 and greater</remarks>
public bool PromptForDiscInformation { get; set; } = true;
/// <summary>
/// Pull all information from Redump if signed in
/// </summary>
/// <remarks>Version 1 and greater</remarks>
public bool PullAllInformation { get; set; } = false;
public bool EnableRedumpCompatibility { get; set; } = true;
/// <summary>
/// Enable tabs in all input fields
@@ -792,10 +786,10 @@ namespace MPF.Frontend
public bool EnableTabsInInputFields { get; set; } = true;
/// <summary>
/// Limit outputs to Redump-supported values only
/// Show the media information window after dumping
/// </summary>
/// <remarks>Version 1 and greater</remarks>
public bool EnableRedumpCompatibility { get; set; } = true;
public bool PromptForDiscInformation { get; set; } = true;
}
/// <summary>
@@ -833,13 +827,7 @@ namespace MPF.Frontend
#endregion
#region Output
/// <summary>
/// Show disc eject reminder before the media information window is shown
/// </summary>
/// <remarks>Version 1 and greater</remarks>
public bool ShowDiscEjectReminder { get; set; } = true;
#region Post-Information
/// <summary>
/// Add the dump filename as a suffix to the auto-generated files
@@ -847,6 +835,12 @@ namespace MPF.Frontend
/// <remarks>Version 1 and greater</remarks>
public bool AddFilenameSuffix { get; set; } = false;
/// <summary>
/// Compress output log files to reduce space
/// </summary>
/// <remarks>Version 1 and greater</remarks>
public bool CompressLogFiles { get; set; } = true;
/// <summary>
/// Create a PS3 IRD file after dumping PS3 BD-ROM discs
/// </summary>
@@ -854,10 +848,10 @@ namespace MPF.Frontend
public bool CreateIRDAfterDumping { get; set; } = false;
/// <summary>
/// Output the compressed JSON version of the submission info
/// Delete unnecessary files to reduce space
/// </summary>
/// <remarks>Version 1 and greater</remarks>
public bool OutputSubmissionJSON { get; set; } = false;
public bool DeleteUnnecessaryFiles { get; set; } = false;
/// <summary>
/// Include log files in serialized JSON data
@@ -865,12 +859,6 @@ namespace MPF.Frontend
/// <remarks>Version 1 and greater</remarks>
public bool IncludeArtifacts { get; set; } = false;
/// <summary>
/// Compress output log files to reduce space
/// </summary>
/// <remarks>Version 1 and greater</remarks>
public bool CompressLogFiles { get; set; } = true;
/// <summary>
/// Compression type used during log compression
/// </summary>
@@ -878,10 +866,16 @@ namespace MPF.Frontend
public LogCompression LogCompression { get; set; } = LogCompression.DeflateMaximum;
/// <summary>
/// Delete unnecessary files to reduce space
/// Output the compressed JSON version of the submission info
/// </summary>
/// <remarks>Version 1 and greater</remarks>
public bool DeleteUnnecessaryFiles { get; set; } = false;
public bool OutputSubmissionJSON { get; set; } = false;
/// <summary>
/// Show disc eject reminder before the media information window is shown
/// </summary>
/// <remarks>Version 1 and greater</remarks>
public bool ShowDiscEjectReminder { get; set; } = true;
#endregion
}
@@ -903,17 +897,17 @@ namespace MPF.Frontend
/// <remarks>Version 1 and greater</remarks>
public bool ScanArchivesForProtection { get; set; } = true;
/// <summary>
/// Include debug information with scan results
/// </summary>
/// <remarks>Version 1 and greater</remarks>
public bool IncludeDebugProtectionInformation { get; set; } = false;
/// <summary>
/// Remove drive letters from protection scan output
/// </summary>
/// <remarks>Version 1 and greater</remarks>
public bool HideDriveLetters { get; set; } = false;
/// <summary>
/// Include debug information with scan results
/// </summary>
/// <remarks>Version 1 and greater</remarks>
public bool IncludeDebugProtectionInformation { get; set; } = false;
}
/// <summary>
@@ -921,18 +915,30 @@ namespace MPF.Frontend
/// </summary>
public class SiteLoginSettings
{
/// <summary>
/// Pull all information from Redump if signed in
/// </summary>
/// <remarks>Version 1 and greater</remarks>
public bool PullAllInformation { get; set; } = false;
/// <summary>
/// Username for Redump, requires <see cref="RedumpPassword"/>
/// </summary>
/// <remarks>Version 1 and greater</remarks>
public string? RedumpUsername { get; set; } = string.Empty;
/// <summary>
/// Password for Redump, requires <see cref="RedumpUsername"/>
/// </summary>
/// <remarks>Version 1 and greater</remarks>
// TODO: Figure out a way to keep this encrypted in some way, BASE64 to start?
public string? RedumpPassword { get; set; } = string.Empty;
/// <summary>
/// Enable retrieving match information from Redump
/// </summary>
/// <remarks>Version 1 and greater</remarks>
public bool RetrieveMatchInformation { get; set; } = true;
/// <remarks>Version 1 and greater</remarks>
public string? RedumpUsername { get; set; } = string.Empty;
/// <remarks>Version 1 and greater</remarks>
// TODO: Figure out a way to keep this encrypted in some way, BASE64 to start?
public string? RedumpPassword { get; set; } = string.Empty;
}
/// <summary>

View File

@@ -350,7 +350,7 @@ namespace MPF.Frontend.Tools
// Fill in the fields from the existing ID
resultProgress?.Report(ResultEventArgs.Neutral($"Filling fields from existing ID {fullyMatchedIdsList[i]}..."));
_ = await Builder.FillFromId(wc, info, fullyMatchedIdsList[i], options.Processing.MediaInformation.PullAllInformation);
_ = await Builder.FillFromId(wc, info, fullyMatchedIdsList[i], options.Processing.Login.PullAllInformation);
resultProgress?.Report(ResultEventArgs.Success("Information filling complete!"));
// Set the fully matched ID to the current