diff --git a/MPF.Core/Converters/EnumConverter.cs b/MPF.Core/Converters/EnumConverter.cs
index 7e6bb5aa..e11be6bc 100644
--- a/MPF.Core/Converters/EnumConverter.cs
+++ b/MPF.Core/Converters/EnumConverter.cs
@@ -136,7 +136,7 @@ namespace MPF.Core.Converters
case InternalProgram.DiscImageCreator:
return "DiscImageCreator";
case InternalProgram.Redumper:
- return "Redumper";
+ return "redumper";
#endregion
diff --git a/MPF.Modules/Redumper/Parameters.cs b/MPF.Modules/Redumper/Parameters.cs
index 559a3d9d..18fe3aba 100644
--- a/MPF.Modules/Redumper/Parameters.cs
+++ b/MPF.Modules/Redumper/Parameters.cs
@@ -196,8 +196,8 @@ namespace MPF.Modules.Redumper
///
public override void GenerateSubmissionInfo(SubmissionInfo info, Options options, string basePath, Drive drive, bool includeArtifacts)
{
- // TODO: Determine if there's a Redumper version anywhere
- info.DumpingInfo.DumpingProgram = EnumConverter.LongName(this.InternalProgram);
+ // Get the dumping program and version
+ info.DumpingInfo.DumpingProgram = $"{EnumConverter.LongName(this.InternalProgram)} {GetVersion($"{basePath}.log") ?? "Unknown Version"}";
switch (this.Type)
{
@@ -1105,6 +1105,47 @@ namespace MPF.Modules.Redumper
}
}
+ ///
+ /// Get the version. if possible
+ ///
+ /// Log file location
+ /// Version if possible, null on error
+ private static string GetVersion(string log)
+ {
+ // If the file doesn't exist, we can't get info from it
+ if (!File.Exists(log))
+ return null;
+
+ // Samples:
+ // redumper v2022.10.28 [Oct 28 2022, 05:41:43] (print usage: --help,-h)
+ // redumper v2022.12.22 build_87 [Dec 22 2022, 01:56:26]
+
+ using (StreamReader sr = File.OpenText(log))
+ {
+ try
+ {
+ // Skip first line (dump date)
+ sr.ReadLine();
+
+ // Generate regex
+ // Permissive
+ var regex = new Regex(@"^redumper (v.+) \[.+\]");
+ // Strict
+ //var regex = new Regex(@"^redumper (v\d{4}\.\d{2}\.\d{2}(| build_\d+)) \[.+\]");
+
+ // Extract the version string
+ var match = regex.Match(sr.ReadLine().Trim());
+ var version = match.Groups[1].Value;
+ return string.IsNullOrWhiteSpace(version) ? null : version;
+ }
+ catch
+ {
+ // We don't care what the exception is right now
+ return null;
+ }
+ }
+ }
+
#endregion
}
}