using System;
using MPF.Frontend;
using MPF.Frontend.Tools;
using SabreTools.RedumpLib.Data;
namespace MPF.Frontend.Features
{
public class ListConfigFeature : SabreTools.CommandLine.Feature
{
#region Feature Definition
public const string DisplayName = "listconfig";
private static readonly string[] _flags = ["lo", "listconfig"];
private const string _description = "List current configuration values";
#endregion
public ListConfigFeature()
: base(DisplayName, _flags, _description)
{
}
///
public override bool Execute()
{
// Try to load the current config
var options = OptionsLoader.LoadFromConfig();
if (options.FirstRun)
{
Console.WriteLine("No valid configuration found!");
return true;
}
// Root-level
Console.WriteLine($"Configuration Version = {options.Version}");
Console.WriteLine($"Check for Updates on Startup = {options.CheckForUpdatesOnStartup}");
Console.WriteLine($"Verbose Logging = {options.VerboseLogging}");
Console.WriteLine();
// GUI
Console.WriteLine("GUI:");
Console.WriteLine($" Copy Update URL to Clipboard = {options.GUI.CopyUpdateUrlToClipboard}");
Console.WriteLine($" Open Log Window at Startup = {options.GUI.OpenLogWindowAtStartup}");
Console.WriteLine($" Default Interface Language = {options.GUI.DefaultInterfaceLanguage.LongName()}");
Console.WriteLine($" Show Debug Menu Item = {options.GUI.ShowDebugViewMenuItem}");
Console.WriteLine(" Theming:");
Console.WriteLine($" Dark Mode = {options.GUI.Theming.EnableDarkMode}");
Console.WriteLine($" Purp Mode = {options.GUI.Theming.EnablePurpMode}");
Console.WriteLine($" Custom Background Color = {options.GUI.Theming.CustomBackgroundColor}");
Console.WriteLine($" Custom Text Color = {options.GUI.Theming.CustomTextColor}");
Console.WriteLine($" Fast Label Update = {options.GUI.FastUpdateLabel}");
Console.WriteLine($" Ignore Fixed Drives = {options.GUI.IgnoreFixedDrives}");
Console.WriteLine($" Skip System Detection = {options.GUI.SkipSystemDetection}");
Console.WriteLine();
// Dump Paths
Console.WriteLine("Dump Paths:");
Console.WriteLine($" Aaru Path = {options.Dumping.AaruPath}");
Console.WriteLine($" DiscImageCreator Path = {options.Dumping.DiscImageCreatorPath}");
Console.WriteLine($" Dreamdump Path = {options.Dumping.DreamdumpPath}");
Console.WriteLine($" Redumper Path = {options.Dumping.RedumperPath}");
Console.WriteLine();
// Dump Defaults
Console.WriteLine("Dump Defaults:");
Console.WriteLine($" Default Program = {options.InternalProgram.LongName()}");
Console.WriteLine($" Default Output Path = {options.Dumping.DefaultOutputPath}");
Console.WriteLine($" Default System = {options.Dumping.DefaultSystem.LongName()}");
Console.WriteLine($" Default CD Speed = {options.Dumping.DumpSpeeds.CD}");
Console.WriteLine($" Default DVD Speed = {options.Dumping.DumpSpeeds.DVD}");
Console.WriteLine($" Default HD-DVD Speed = {options.Dumping.DumpSpeeds.HDDVD}");
Console.WriteLine($" Default Blu-ray Speed = {options.Dumping.DumpSpeeds.Bluray}");
Console.WriteLine();
// Aaru
Console.WriteLine("Aaru-Specific Options:");
Console.WriteLine($" Enable Debug = {options.Dumping.Aaru.EnableDebug}");
Console.WriteLine($" Enable Verbose = {options.Dumping.Aaru.EnableVerbose}");
Console.WriteLine($" Force Dumping = {options.Dumping.Aaru.ForceDumping}");
Console.WriteLine($" Reread Count = {options.Dumping.Aaru.RereadCount}");
Console.WriteLine($" Strip Personal Data = {options.Dumping.Aaru.StripPersonalData}");
Console.WriteLine();
// DiscImageCreator
Console.WriteLine("DiscImageCreator-Specific Options:");
Console.WriteLine($" Multi-Sector Read Flag = {options.Dumping.DIC.MultiSectorRead}");
Console.WriteLine($" Multi-Sector Read Value = {options.Dumping.DIC.MultiSectorReadValue}");
Console.WriteLine($" Overly-Secure Flags = {options.Dumping.DIC.ParanoidMode}");
Console.WriteLine($" Quiet Flag = {options.Dumping.DIC.QuietMode}");
Console.WriteLine($" CD Reread Count = {options.Dumping.DIC.RereadCount}");
Console.WriteLine($" DVD Reread Count = {options.Dumping.DIC.DVDRereadCount}");
Console.WriteLine($" Use CMI Flag = {options.Dumping.DIC.UseCMIFlag}");
Console.WriteLine();
// Dreamdump
Console.WriteLine("Dreamdump-Specific Options:");
Console.WriteLine($" Non-Redump Mode = {options.Dumping.Dreamdump.NonRedumpMode}");
Console.WriteLine($" Sector Order = {options.Dumping.Dreamdump.SectorOrder.LongName()}");
Console.WriteLine($" Reread Count = {options.Dumping.Dreamdump.RereadCount}");
Console.WriteLine();
// Redumper
Console.WriteLine("Redumper-Specific Options:");
Console.WriteLine($" Enable Skeleton = {options.Dumping.Redumper.EnableSkeleton}");
Console.WriteLine($" Enable Verbose = {options.Dumping.Redumper.EnableVerbose}");
Console.WriteLine($" Lead-in Retry Count = {options.Dumping.Redumper.LeadinRetryCount}");
Console.WriteLine($" Non-Redump Mode = {options.Dumping.Redumper.NonRedumpMode}");
Console.WriteLine($" Drive Type = {options.Dumping.Redumper.DriveType.LongName()}");
Console.WriteLine($" Read Method = {options.Dumping.Redumper.ReadMethod.LongName()}");
Console.WriteLine($" Sector Order = {options.Dumping.Redumper.SectorOrder.LongName()}");
Console.WriteLine($" Reread Count = {options.Dumping.Redumper.RereadCount}");
Console.WriteLine($" Refine Sector Mode = {options.Dumping.Redumper.RefineSectorMode}");
Console.WriteLine();
// Protection Scanning Options
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($" 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($" 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($" 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();
// Post-Information Options
Console.WriteLine("Post-Information Options:");
Console.WriteLine($" Add Filename Suffix = {options.Processing.AddFilenameSuffix}");
Console.WriteLine($" Compress Log Files = {options.Processing.CompressLogFiles}");
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;
}
///
public override bool VerifyInputs() => true;
}
}