Add unused GetOutputFiles method

This commit is contained in:
Matt Nadareski
2024-08-22 14:13:52 -04:00
parent 4b4027f285
commit bc4fe17fab
9 changed files with 469 additions and 11 deletions

View File

@@ -33,6 +33,7 @@
- Start preparing for better output file checks
- Create currently-unused helper class
- Make helper class more robust
- Add unused GetOutputFiles method
### 3.2.1 (2024-08-05)

View File

@@ -32,7 +32,7 @@ namespace MPF.Processors
{
// Get the base filename and directory from the base path
string baseFilename = Path.GetFileName(basePath);
string baseDirectory = Path.GetDirectoryName(basePath);
string baseDirectory = Path.GetDirectoryName(basePath) ?? string.Empty;
var missingFiles = new List<string>();
switch (Type)
@@ -306,6 +306,64 @@ namespace MPF.Processors
return logFiles;
}
/// <inheritdoc/>
public override List<OutputFile> GetOutputFiles(string baseFilename)
{
switch (Type)
{
case MediaType.CDROM:
return [
new($"{baseFilename}.aaruf", OutputFileFlags.Required),
new($"{baseFilename}.cicm.xml", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}.error.log", OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}.ibg", OutputFileFlags.Required
| OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new($"{baseFilename}.log", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}.mhddlog.bin", OutputFileFlags.Required
| OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new($"{baseFilename}.resume.xml", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}.sub.log", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
];
case MediaType.DVD:
case MediaType.HDDVD:
case MediaType.BluRay:
return [
new($"{baseFilename}.aaruf", OutputFileFlags.Required),
new($"{baseFilename}.cicm.xml", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}.error.log", OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}.ibg", OutputFileFlags.Required
| OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new($"{baseFilename}.log", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}.mhddlog.bin", OutputFileFlags.Required
| OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new($"{baseFilename}.resume.xml", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
];
}
return [];
}
#endregion
#region Information Extraction Methods

View File

@@ -74,6 +74,13 @@ namespace MPF.Processors
/// <returns>List of all log file paths, empty otherwise</returns>
public abstract List<string> GetLogFilePaths(string basePath);
/// <summary>
/// Generate a list of all output files generated
/// </summary>
/// <param name="baseFilename">Base filename to use for checking</param>
/// <returns>List of all output files, empty otherwise</returns>
public abstract List<OutputFile> GetOutputFiles(string baseFilename);
#endregion
#region Virtual Methods

View File

@@ -24,7 +24,7 @@ namespace MPF.Processors
{
// Get the base filename and directory from the base path
string baseFilename = Path.GetFileName(basePath);
string baseDirectory = Path.GetDirectoryName(basePath);
string baseDirectory = Path.GetDirectoryName(basePath) ?? string.Empty;
var missingFiles = new List<string>();
switch (Type)
@@ -117,10 +117,10 @@ namespace MPF.Processors
case MediaType.DVD: // Only added here to help users; not strictly correct
case MediaType.NintendoGameCubeGameDisc:
case MediaType.NintendoWiiOpticalDisc:
if (File.Exists($"{basePath}-dumpinfo.txt"))
logFiles.Add($"{basePath}-dumpinfo.txt");
if (File.Exists($"{basePath}.bca"))
logFiles.Add($"{basePath}.bca");
if (File.Exists($"{basePath}-dumpinfo.txt"))
logFiles.Add($"{basePath}-dumpinfo.txt");
break;
}
@@ -128,6 +128,29 @@ namespace MPF.Processors
return logFiles;
}
/// <inheritdoc/>
public override List<OutputFile> GetOutputFiles(string baseFilename)
{
switch (Type)
{
case MediaType.DVD: // Only added here to help users; not strictly correct
case MediaType.NintendoGameCubeGameDisc:
case MediaType.NintendoWiiOpticalDisc:
return [
new($"{baseFilename}.bca", OutputFileFlags.Required
| OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new($"{baseFilename}.iso", OutputFileFlags.Required),
new($"{baseFilename}-dumpinfo.txt", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
];
}
return [];
}
#endregion
#region Information Extraction Methods

View File

@@ -72,7 +72,7 @@ namespace MPF.Processors
// Get the base filename and directory from the base path
string baseFilename = Path.GetFileName(basePath);
string baseDirectory = Path.GetDirectoryName(basePath);
string baseDirectory = Path.GetDirectoryName(basePath) ?? string.Empty;
var missingFiles = new List<string>();
switch (Type)
@@ -877,6 +877,178 @@ namespace MPF.Processors
return logFiles;
}
/// <inheritdoc/>
public override List<OutputFile> GetOutputFiles(string baseFilename)
{
switch (Type)
{
case MediaType.CDROM:
return [
new($"{baseFilename}.c2", OutputFileFlags.Zippable), // Doesn't output on Linux
new($"{baseFilename}.ccd", OutputFileFlags.Required
| OutputFileFlags.Binary
| OutputFileFlags.Zippable),
// TODO: Figure out how to get the command path generically?
new($"{baseFilename}.cue", OutputFileFlags.Required),
new($"{baseFilename}.dat", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}.img", OutputFileFlags.Required
| OutputFileFlags.Deleteable),
new([$"{baseFilename}.img_EdcEcc.txt", $"{baseFilename}.img_EccEdc.txt"], System.IsAudio()
? OutputFileFlags.Artifact | OutputFileFlags.Zippable
: OutputFileFlags.Required | OutputFileFlags.Artifact | OutputFileFlags.Zippable),
new([$"{baseFilename}.scm", $"{baseFilename}.scmtmp"], System.IsAudio()
? OutputFileFlags.Deleteable
: OutputFileFlags.Required | OutputFileFlags.Deleteable),
new([$"{baseFilename}.sub", $"{baseFilename}.subtmp"], OutputFileFlags.Required
| OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new($"{baseFilename}.toc", OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new($"{baseFilename}_c2Error.txt", OutputFileFlags.Artifact
| OutputFileFlags.Zippable), // Doesn't output on Linux
new($"{baseFilename}_cmd.txt", OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}_disc.txt", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}_drive.txt", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}_img.cue", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}_mainError.txt", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}_mainInfo.txt", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new([$"{baseFilename}_sub.txt", $"{baseFilename}_subReadable.txt"], OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}_subError.txt", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}_subInfo.txt", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}_subIntention.txt", OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}_suppl.dat", OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}_volDesc.txt", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new([$"{baseFilename} (Track 0).sub", $"{baseFilename} (Track 00).sub"], OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new([$"{baseFilename} (Track 1)(-LBA).sub", $"{baseFilename} (Track 01)(-LBA).sub"], OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new($"{baseFilename} (Track AA).sub", OutputFileFlags.Binary
| OutputFileFlags.Zippable),
];
// TODO: Confirm GD-ROM HD area outputs
case MediaType.GDROM:
return [
// TODO: Figure out how to get the command path generically?
new($"{baseFilename}.dat", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}.toc", OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new($"{baseFilename}_cmd.txt", OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}_disc.txt", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}_drive.txt", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}_mainError.txt", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}_mainInfo.txt", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}_suppl.dat", OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}_volDesc.txt", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
];
case MediaType.DVD:
case MediaType.HDDVD:
case MediaType.BluRay:
case MediaType.NintendoGameCubeGameDisc:
case MediaType.NintendoWiiOpticalDisc:
return [
// TODO: Figure out how to get the command path generically?
new($"{baseFilename}.dat", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}.raw", OutputFileFlags.None),
new($"{baseFilename}.toc", OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new($"{baseFilename}_cmd.txt", OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}_CSSKey.txt", OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}_disc.txt", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}_drive.txt", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}_mainError.txt", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}_mainInfo.txt", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}_suppl.dat", OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}_volDesc.txt", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
// TODO: Figure out when these are required
new($"{baseFilename}_DMI.bin", OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new($"{baseFilename}_PFI.bin", OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new($"{baseFilename}_PIC.bin", OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new($"{baseFilename}_SS.bin", OutputFileFlags.Binary
| OutputFileFlags.Zippable),
];
case MediaType.FloppyDisk:
case MediaType.HardDisk:
// TODO: Determine what outputs come out from a HDD, SD, etc.
return [
// TODO: Figure out how to get the command path generically?
new($"{baseFilename}.dat", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}_cmd.txt", OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}_disc.txt", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
];
}
return [];
}
#endregion
#region Private Extra Methods

View File

@@ -23,7 +23,7 @@ namespace MPF.Processors
{
// Get the base filename and directory from the base path
string baseFilename = Path.GetFileName(basePath);
string baseDirectory = Path.GetDirectoryName(basePath);
string baseDirectory = Path.GetDirectoryName(basePath) ?? string.Empty;
var missingFiles = new List<string>();
@@ -136,6 +136,26 @@ namespace MPF.Processors
return logFiles;
}
/// <inheritdoc/>
public override List<OutputFile> GetOutputFiles(string baseFilename)
{
switch (Type)
{
case MediaType.BluRay:
return [
new($"{baseFilename}.iso", OutputFileFlags.Required),
new($"{baseFilename}.getkey.log", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}.disc.pic", OutputFileFlags.Required
| OutputFileFlags.Binary
| OutputFileFlags.Zippable),
];
}
return [];
}
#endregion
#region Information Extraction Methods

View File

@@ -25,7 +25,7 @@ namespace MPF.Processors
{
// Get the base filename and directory from the base path
string baseFilename = Path.GetFileName(basePath);
string baseDirectory = Path.GetDirectoryName(basePath);
string baseDirectory = Path.GetDirectoryName(basePath) ?? string.Empty;
var missingFiles = new List<string>();
@@ -651,6 +651,123 @@ namespace MPF.Processors
return logFiles;
}
/// <inheritdoc/>
public override List<OutputFile> GetOutputFiles(string baseFilename)
{
switch (Type)
{
case MediaType.CDROM:
List<OutputFile> cdrom = [
new($"{baseFilename}.asus", OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new($"{baseFilename}.atip", OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new($"{baseFilename}.cdtext", OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new($"{baseFilename}.cue", OutputFileFlags.Required),
new($"{baseFilename}.fulltoc", OutputFileFlags.Required
| OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new($"{baseFilename}.log", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}.pma", OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new([$"{baseFilename}.scram", $"{baseFilename}.scrap"], OutputFileFlags.Required
| OutputFileFlags.Deleteable),
new($"{baseFilename}.state", OutputFileFlags.Required
| OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new($"{baseFilename}.subcode", OutputFileFlags.Required
| OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new($"{baseFilename}.toc", OutputFileFlags.Required
| OutputFileFlags.Binary
| OutputFileFlags.Zippable),
];
// Include .hash and .skeleton for all files in cuesheet
var cueSheet = SabreTools.Serialization.Deserializers.CueSheet.DeserializeFile($"{baseFilename}.cue");
if (cueSheet?.Files != null)
{
foreach (CueFile? file in cueSheet.Files)
{
string? trackName = Path.GetFileNameWithoutExtension(file?.FileName);
if (trackName == null)
continue;
cdrom.Add(new($"{trackName}.hash", OutputFileFlags.Binary
| OutputFileFlags.Zippable));
cdrom.Add(new($"{trackName}.skeleton", OutputFileFlags.Binary
| OutputFileFlags.Zippable));
}
}
else
{
cdrom.Add(new($"{baseFilename}.hash", OutputFileFlags.Binary
| OutputFileFlags.Zippable));
cdrom.Add(new($"{baseFilename}.skeleton", OutputFileFlags.Binary
| OutputFileFlags.Zippable));
}
return cdrom;
case MediaType.DVD:
return [
new($"{baseFilename}.asus", OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new($"{baseFilename}.hash", OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new($"{baseFilename}.log", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new([$"{baseFilename}.manufacturer", $"{baseFilename}.1.manufacturer"], OutputFileFlags.Required
| OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new($"{baseFilename}.2.manufacturer", OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new([$"{baseFilename}.physical", $"{baseFilename}.0.physical"], OutputFileFlags.Required
| OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new($"{baseFilename}.1.physical", OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new($"{baseFilename}.2.physical", OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new($"{baseFilename}.skeleton", OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new($"{baseFilename}.state", OutputFileFlags.Required
| OutputFileFlags.Binary
| OutputFileFlags.Zippable),
];
case MediaType.HDDVD: // TODO: Confirm that this information outputs
case MediaType.BluRay:
return [
new($"{baseFilename}.asus", OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new($"{baseFilename}.hash", OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new($"{baseFilename}.log", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new([$"{baseFilename}.physical", $"{baseFilename}.0.physical"], OutputFileFlags.Required
| OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new($"{baseFilename}.1.physical", OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new($"{baseFilename}.2.physical", OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new($"{baseFilename}.skeleton", OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new($"{baseFilename}.state", OutputFileFlags.Required
| OutputFileFlags.Binary
| OutputFileFlags.Zippable),
];
}
return [];
}
#endregion
#region Information Extraction Methods

View File

@@ -24,7 +24,7 @@ namespace MPF.Processors
{
// Get the base filename and directory from the base path
string baseFilename = Path.GetFileName(basePath);
string baseDirectory = Path.GetDirectoryName(basePath);
string baseDirectory = Path.GetDirectoryName(basePath) ?? string.Empty;
var missingFiles = new List<string>();
switch (Type)
@@ -156,6 +156,35 @@ namespace MPF.Processors
return logFiles;
}
/// <inheritdoc/>
public override List<OutputFile> GetOutputFiles(string baseFilename)
{
switch (Type)
{
case MediaType.UMD:
return [
new($"{baseFilename}.iso", OutputFileFlags.Required),
new($"{baseFilename}_disc.txt", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}_mainError.txt", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}_mainInfo.txt", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}_PFI.bin", OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new($"{baseFilename}_volDesc.txt", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
];
}
return [];
}
#endregion
#region Information Extraction Methods

View File

@@ -23,7 +23,7 @@ namespace MPF.Processors
{
// Get the base filename and directory from the base path
string baseFilename = Path.GetFileName(basePath);
string baseDirectory = Path.GetDirectoryName(basePath);
string baseDirectory = Path.GetDirectoryName(basePath) ?? string.Empty;
var missingFiles = new List<string>();
switch (Type)
@@ -90,7 +90,7 @@ namespace MPF.Processors
info = Builder.EnsureAllSections(info);
// Get base directory
string baseDirectory = Path.GetDirectoryName(basePath);
string baseDirectory = Path.GetDirectoryName(basePath) ?? string.Empty;
// Get log filename
string? logPath = GetLogName(baseDirectory);
@@ -217,7 +217,7 @@ namespace MPF.Processors
public override List<string> GetLogFilePaths(string basePath)
{
// Get base directory
string baseDirectory = Path.GetDirectoryName(basePath);
string baseDirectory = Path.GetDirectoryName(basePath) ?? string.Empty;
var logFiles = new List<string>();
switch (Type)
@@ -243,6 +243,37 @@ namespace MPF.Processors
return logFiles;
}
/// <inheritdoc/>
public override List<OutputFile> GetOutputFiles(string baseFilename)
{
switch (Type)
{
case MediaType.DVD:
return [
new($"{baseFilename}.dvd", OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new($"{baseFilename}.iso", OutputFileFlags.Required),
new("DMI.bin", OutputFileFlags.Required
| OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new("Log.txt", OutputFileFlags.Required
| OutputFileFlags.Artifact
| OutputFileFlags.Zippable),
new("PFI.bin", OutputFileFlags.Required
| OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new("RawSS.bin", OutputFileFlags.Binary
| OutputFileFlags.Zippable),
new("SS.bin", OutputFileFlags.Required
| OutputFileFlags.Binary
| OutputFileFlags.Zippable),
];
}
return [];
}
#endregion
#region Information Extraction Methods