diff --git a/CHANGELIST.md b/CHANGELIST.md index 92067c44..d068b53f 100644 --- a/CHANGELIST.md +++ b/CHANGELIST.md @@ -37,6 +37,7 @@ - Hook up GetOutputFiles in debug way - Replace GetLogFilePaths with common code - Move GetLogFilePaths to better location +- Replace GenerateArtifacts with common code ### 3.2.1 (2024-08-05) diff --git a/MPF.Processors/Aaru.cs b/MPF.Processors/Aaru.cs index 5088fec8..b8e2e8b5 100644 --- a/MPF.Processors/Aaru.cs +++ b/MPF.Processors/Aaru.cs @@ -88,25 +88,6 @@ namespace MPF.Processors return (!missingFiles.Any(), missingFiles); } - /// - public override void GenerateArtifacts(SubmissionInfo info, string basePath) - { - info.Artifacts ??= []; - - if (File.Exists(basePath + ".cicm.xml")) - info.Artifacts["cicm"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile(basePath + ".cicm.xml")) ?? string.Empty; - if (File.Exists(basePath + ".ibg")) - info.Artifacts["ibg"] = Convert.ToBase64String(File.ReadAllBytes(basePath + ".ibg")); - if (File.Exists(basePath + ".log")) - info.Artifacts["log"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile(basePath + ".log")) ?? string.Empty; - if (File.Exists(basePath + ".mhddlog.bin")) - info.Artifacts["mhddlog_bin"] = Convert.ToBase64String(File.ReadAllBytes(basePath + ".mhddlog.bin")); - if (File.Exists(basePath + ".resume.xml")) - info.Artifacts["resume"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile(basePath + ".resume.xml")) ?? string.Empty; - if (File.Exists(basePath + ".sub.log")) - info.Artifacts["sub_log"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile(basePath + ".sub.log")) ?? string.Empty; - } - /// public override void GenerateSubmissionInfo(SubmissionInfo info, string basePath, bool redumpCompat) { diff --git a/MPF.Processors/BaseProcessor.cs b/MPF.Processors/BaseProcessor.cs index 73921913..2e34e0ab 100644 --- a/MPF.Processors/BaseProcessor.cs +++ b/MPF.Processors/BaseProcessor.cs @@ -55,9 +55,57 @@ namespace MPF.Processors /// /// Generate artifacts and add to the SubmissionInfo /// - /// Base submission info to fill in specifics for + /// Base submission info to fill in specifics for /// Base filename and path to use for checking - public abstract void GenerateArtifacts(SubmissionInfo submissionInfo, string basePath); + public void GenerateArtifacts(SubmissionInfo info, string basePath) + { + // Get the base filename and directory from the base path + string baseFilename = Path.GetFileName(basePath); + string baseDirectory = Path.GetDirectoryName(basePath) ?? string.Empty; + + // Get the list of output files + var outputFiles = GetOutputFiles(baseFilename); + if (outputFiles.Count == 0) + return; + + // Ensure the artifacts dictionary exists + info.Artifacts ??= []; + + // Only try to create artifacts for files that exist + foreach (var outputFile in outputFiles) + { + // Skip non-artifact files + if (!outputFile.IsArtifact) + continue; + + // Skip non-existent files + foreach (string filename in outputFile.Filenames) + { + string outputFilePath = Path.Combine(baseDirectory, filename); + if (!File.Exists(outputFilePath)) + continue; + + // TODO: Determine a better way of getting the artifact key + // Get binary artifacts as a byte array + if (outputFile.IsBinaryArtifact) + { + byte[] data = File.ReadAllBytes(filename); + string str = Convert.ToBase64String(data); + info.Artifacts!.Add(filename, str); + } + else + { + string? data = ProcessingTool.GetFullFile(filename); + string str = ProcessingTool.GetBase64(data) ?? string.Empty; + info.Artifacts!.Add(filename, str); + } + + break; + } + } + + return; + } /// /// Generate a SubmissionInfo for the output files diff --git a/MPF.Processors/CleanRip.cs b/MPF.Processors/CleanRip.cs index 791f0462..0e845489 100644 --- a/MPF.Processors/CleanRip.cs +++ b/MPF.Processors/CleanRip.cs @@ -55,17 +55,6 @@ namespace MPF.Processors return (!missingFiles.Any(), missingFiles); } - /// - public override void GenerateArtifacts(SubmissionInfo info, string basePath) - { - info.Artifacts ??= []; - - if (File.Exists(basePath + ".bca")) - info.Artifacts["bca"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile(basePath + ".bca", binary: true)) ?? string.Empty; - if (File.Exists(basePath + "-dumpinfo.txt")) - info.Artifacts["dumpinfo"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile(basePath + "-dumpinfo.txt")) ?? string.Empty; - } - /// public override void GenerateSubmissionInfo(SubmissionInfo info, string basePath, bool redumpCompat) { diff --git a/MPF.Processors/DiscImageCreator.cs b/MPF.Processors/DiscImageCreator.cs index 31423be2..fca264d4 100644 --- a/MPF.Processors/DiscImageCreator.cs +++ b/MPF.Processors/DiscImageCreator.cs @@ -235,63 +235,6 @@ namespace MPF.Processors return (!missingFiles.Any(), missingFiles); } - /// - public override void GenerateArtifacts(SubmissionInfo info, string basePath) - { - info.Artifacts ??= []; - - //if (File.Exists($"{basePath}.c2")) - // info.Artifacts["c2"] = Convert.ToBase64String(File.ReadAllBytes($"{basePath}.c2")) ?? string.Empty; - if (File.Exists($"{basePath}_c2Error.txt")) - info.Artifacts["c2Error"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}_c2Error.txt")) ?? string.Empty; - if (File.Exists($"{basePath}.ccd")) - info.Artifacts["ccd"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}.ccd")) ?? string.Empty; - if (File.Exists($"{basePath}_cmd.txt")) // TODO: Figure out how to read in the timestamp-named file - info.Artifacts["cmd"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}_cmd.txt")) ?? string.Empty; - if (File.Exists($"{basePath}_CSSKey.txt")) - info.Artifacts["csskey"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}_CSSKey.txt")) ?? string.Empty; - if (File.Exists($"{basePath}.cue")) - info.Artifacts["cue"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}.cue")) ?? string.Empty; - if (File.Exists($"{basePath}.dat")) - info.Artifacts["dat"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}.dat")) ?? string.Empty; - if (File.Exists($"{basePath}_disc.txt")) - info.Artifacts["disc"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}_disc.txt")) ?? string.Empty; - //if (File.Exists(Path.Combine(outputDirectory, $"{basePath}_DMI.bin"))) - // info.Artifacts["dmi"] = Convert.ToBase64String(File.ReadAllBytes(Path.Combine(outputDirectory, $"{basePath}_DMI.bin"))) ?? string.Empty; - if (File.Exists($"{basePath}_drive.txt")) - info.Artifacts["drive"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}_drive.txt")) ?? string.Empty; - if (File.Exists($"{basePath}_img.cue")) - info.Artifacts["img_cue"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}_img.cue")) ?? string.Empty; - if (File.Exists($"{basePath}.img_EdcEcc.txt")) - info.Artifacts["img_EdcEcc"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}.img_EdcEcc.txt")) ?? string.Empty; - if (File.Exists($"{basePath}.img_EccEdc.txt")) - info.Artifacts["img_EdcEcc"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}.img_EccEdc.txt")) ?? string.Empty; - if (File.Exists($"{basePath}_mainError.txt")) - info.Artifacts["mainError"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}_mainError.txt")) ?? string.Empty; - if (File.Exists($"{basePath}_mainInfo.txt")) - info.Artifacts["mainInfo"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}_mainInfo.txt")) ?? string.Empty; - //if (File.Exists($"{basePath}_PFI.bin")) - // info.Artifacts["pfi"] = Convert.ToBase64String(File.ReadAllBytes($"{basePath}_PFI.bin")) ?? string.Empty; - //if (File.Exists($"{basePath}_PIC.bin")) - // info.Artifacts["pic"] = Convert.ToBase64String(File.ReadAllBytes($"{basePath}_PIC.bin")) ?? string.Empty; - //if (File.Exists($"{basePath}_SS.bin")) - // info.Artifacts["ss"] = Convert.ToBase64String(File.ReadAllBytes($"{basePath}_SS.bin")) ?? string.Empty; - if (File.Exists($"{basePath}.sub")) - info.Artifacts["sub"] = Convert.ToBase64String(File.ReadAllBytes($"{basePath}.sub")) ?? string.Empty; - if (File.Exists($"{basePath}_subError.txt")) - info.Artifacts["subError"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}_subError.txt")) ?? string.Empty; - if (File.Exists($"{basePath}_subInfo.txt")) - info.Artifacts["subInfo"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}_subInfo.txt")) ?? string.Empty; - if (File.Exists($"{basePath}_subIntention.txt")) - info.Artifacts["subIntention"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}_subIntention.txt")) ?? string.Empty; - //if (File.Exists($"{basePath}_sub.txt")) - // info.Artifacts["subReadable"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}_sub.txt")) ?? string.Empty; - //if (File.Exists($"{basePath}_subReadable.txt")) - // info.Artifacts["subReadable"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}_subReadable.txt")) ?? string.Empty; - if (File.Exists($"{basePath}_volDesc.txt")) - info.Artifacts["volDesc"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}_volDesc.txt")) ?? string.Empty; - } - /// public override void GenerateSubmissionInfo(SubmissionInfo info, string basePath, bool redumpCompat) { diff --git a/MPF.Processors/PS3CFW.cs b/MPF.Processors/PS3CFW.cs index af24e30d..5d504032 100644 --- a/MPF.Processors/PS3CFW.cs +++ b/MPF.Processors/PS3CFW.cs @@ -48,19 +48,6 @@ namespace MPF.Processors return (missingFiles.Count == 0, missingFiles); } - /// - public override void GenerateArtifacts(SubmissionInfo info, string basePath) - { - info.Artifacts ??= []; - - string? getKeyBasePath = GetCFWBasePath(basePath); - - if (File.Exists(getKeyBasePath + ".disc.pic")) - info.Artifacts["discpic"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile(getKeyBasePath + ".disc.pic", binary: true)) ?? string.Empty; - if (File.Exists(getKeyBasePath + ".getkey.log")) - info.Artifacts["getkeylog"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile(getKeyBasePath + ".getkey.log")) ?? string.Empty; - } - /// public override void GenerateSubmissionInfo(SubmissionInfo info, string basePath, bool redumpCompat) { diff --git a/MPF.Processors/Redumper.cs b/MPF.Processors/Redumper.cs index 3896aa67..4f7d0ba3 100644 --- a/MPF.Processors/Redumper.cs +++ b/MPF.Processors/Redumper.cs @@ -144,57 +144,6 @@ namespace MPF.Processors return (!missingFiles.Any(), missingFiles); } - /// - public override void GenerateArtifacts(SubmissionInfo info, string basePath) - { - info.Artifacts ??= []; - - if (File.Exists($"{basePath}.asus")) - info.Artifacts["asus"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}.asus")) ?? string.Empty; - if (File.Exists($"{basePath}.atip")) - info.Artifacts["atip"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}.atip")) ?? string.Empty; - if (File.Exists($"{basePath}.cdtext")) - info.Artifacts["cdtext"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}.cdtext")) ?? string.Empty; - if (File.Exists($"{basePath}.cue")) - info.Artifacts["cue"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}.cue")) ?? string.Empty; - if (File.Exists($"{basePath}.fulltoc")) - info.Artifacts["fulltoc"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}.fulltoc")) ?? string.Empty; - if (File.Exists($"{basePath}.hash")) - info.Artifacts["hash"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}.hash")) ?? string.Empty; - // TODO: "{basePath} (Track X).hash" (get from cuesheet) - if (File.Exists($"{basePath}.log")) - info.Artifacts["log"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}.log")) ?? string.Empty; - if (File.Exists($"{basePath}.manufacturer")) - info.Artifacts["manufacturer"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}.manufacturer")) ?? string.Empty; - if (File.Exists($"{basePath}.1.manufacturer")) - info.Artifacts["manufacturer1"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}.1.manufacturer")) ?? string.Empty; - if (File.Exists($"{basePath}.2.manufacturer")) - info.Artifacts["manufacturer2"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}.2.manufacturer")) ?? string.Empty; - if (File.Exists($"{basePath}.physical")) - info.Artifacts["physical"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}.physical")) ?? string.Empty; - if (File.Exists($"{basePath}.0.physical")) - info.Artifacts["physical0"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}.0.physical")) ?? string.Empty; - if (File.Exists($"{basePath}.1.physical")) - info.Artifacts["physical1"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}.1.physical")) ?? string.Empty; - if (File.Exists($"{basePath}.2.physical")) - info.Artifacts["physical2"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}.2.physical")) ?? string.Empty; - if (File.Exists($"{basePath}.pma")) - info.Artifacts["pma"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}.pma")) ?? string.Empty; - // if (File.Exists($"{basePath}.skeleton")) - // info.Artifacts["skeleton"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}.skeleton")) ?? string.Empty; - // // Also: "{basePath} (Track X).skeleton" (get from cuesheet) - // if (File.Exists($"{basePath}.scram")) - // info.Artifacts["scram"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}.scram")) ?? string.Empty; - // if (File.Exists($"{basePath}.scrap")) - // info.Artifacts["scrap"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}.scrap")) ?? string.Empty; - if (File.Exists($"{basePath}.state")) - info.Artifacts["state"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}.state")) ?? string.Empty; - if (File.Exists($"{basePath}.subcode")) - info.Artifacts["subcode"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}.subcode")) ?? string.Empty; - if (File.Exists($"{basePath}.toc")) - info.Artifacts["toc"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}.toc")) ?? string.Empty; - } - /// public override void GenerateSubmissionInfo(SubmissionInfo info, string basePath, bool redumpCompat) { diff --git a/MPF.Processors/UmdImageCreator.cs b/MPF.Processors/UmdImageCreator.cs index 4ef19bc8..ebe24e62 100644 --- a/MPF.Processors/UmdImageCreator.cs +++ b/MPF.Processors/UmdImageCreator.cs @@ -57,25 +57,6 @@ namespace MPF.Processors return (!missingFiles.Any(), missingFiles); } - /// - public override void GenerateArtifacts(SubmissionInfo info, string basePath) - { - info.Artifacts ??= []; - - if (File.Exists($"{basePath}_disc.txt")) - info.Artifacts["disc"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}_disc.txt")) ?? string.Empty; - if (File.Exists($"{basePath}_drive.txt")) - info.Artifacts["drive"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}_drive.txt")) ?? string.Empty; - if (File.Exists($"{basePath}_mainError.txt")) - info.Artifacts["mainError"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}_mainError.txt")) ?? string.Empty; - if (File.Exists($"{basePath}_mainInfo.txt")) - info.Artifacts["mainInfo"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}_mainInfo.txt")) ?? string.Empty; - //if (File.Exists($"{basePath}_PFI.bin")) - // info.Artifacts["pfi"] = Convert.ToBase64String(File.ReadAllBytes($"{basePath}_PFI.bin")) ?? string.Empty; - if (File.Exists($"{basePath}_volDesc.txt")) - info.Artifacts["volDesc"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}_volDesc.txt")) ?? string.Empty; - } - /// public override void GenerateSubmissionInfo(SubmissionInfo info, string basePath, bool redumpCompat) { diff --git a/MPF.Processors/XboxBackupCreator.cs b/MPF.Processors/XboxBackupCreator.cs index e0743562..8d222f49 100644 --- a/MPF.Processors/XboxBackupCreator.cs +++ b/MPF.Processors/XboxBackupCreator.cs @@ -65,29 +65,6 @@ namespace MPF.Processors return (!missingFiles.Any(), missingFiles); } - /// - public override void GenerateArtifacts(SubmissionInfo info, string basePath) - { - info.Artifacts ??= []; - - string baseDir = Path.GetDirectoryName(basePath) + Path.DirectorySeparatorChar; - string? logPath = GetLogName(baseDir); - - if (File.Exists(logPath)) - info.Artifacts["log"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile(logPath!)) ?? string.Empty; - if (File.Exists($"{basePath}.dvd")) - info.Artifacts["dvd"] = ProcessingTool.GetBase64(ProcessingTool.GetFullFile($"{basePath}.dvd")) ?? string.Empty; - //if (File.Exists(Path.Combine(baseDirectory, "DMI.bin")) - // info.Artifacts["dmi"] = Convert.ToBase64String(File.ReadAllBytes(Path.Combine(baseDirectory, "DMI.bin")) ?? string.Empty; - // TODO: Include PFI artifact only if the hash doesn't match known PFI hashes - //if (File.Exists(Path.Combine(baseDirectory, "PFI.bin")) - // info.Artifacts["pfi"] = Convert.ToBase64String(File.ReadAllBytes(Path.Combine(baseDirectory, "PFI.bin")) ?? string.Empty; - //if (File.Exists(Path.Combine(baseDirectory, "SS.bin")) - // info.Artifacts["ss"] = Convert.ToBase64String(File.ReadAllBytes(Path.Combine(baseDirectory, "SS.bin")) ?? string.Empty; - //if (File.Exists(Path.Combine(baseDirectory, "RawSS.bin")) - // info.Artifacts["rawss"] = Convert.ToBase64String(File.ReadAllBytes(Path.Combine(baseDirectory, "RawSS.bin")) ?? string.Empty; - } - /// public override void GenerateSubmissionInfo(SubmissionInfo info, string basePath, bool redumpCompat) {