diff --git a/DatToMiss/DatToMiss.cs b/DatToMiss/DatToMiss.cs index e6750a2e..0c682416 100644 --- a/DatToMiss/DatToMiss.cs +++ b/DatToMiss/DatToMiss.cs @@ -33,7 +33,7 @@ namespace SabreTools // Output the title Build.Start("DatToMiss"); - string prefix = "", postfix = "", input = ""; + string prefix = "", postfix = "", input = "", addext = "", repext = ""; bool tofile = false, help = false, usegame = true, quotes = false; foreach (string arg in args) { @@ -57,14 +57,22 @@ namespace SabreTools quotes = true; break; default: - if ((arg.StartsWith("-pre=") || arg.StartsWith("--prefix=")) && prefix == "") + if (arg.StartsWith("-pre=") || arg.StartsWith("--prefix=")) { prefix = arg.Split('=')[1]; } - else if ((arg.StartsWith("-post=") || arg.StartsWith("--postfix=")) && postfix == "") + else if (arg.StartsWith("-post=") || arg.StartsWith("--postfix=")) { postfix = arg.Split('=')[1]; } + else if (arg.StartsWith("-ae=") || arg.StartsWith("-add-ext=")) + { + addext = arg.Split('=')[1]; + } + else if (arg.StartsWith("-re=") || arg.StartsWith("-rep-ext=")) + { + repext = arg.Split('=')[1]; + } else if (input == "" && File.Exists(arg.Replace("\"", ""))) { input = arg.Replace("\"", ""); @@ -93,7 +101,7 @@ namespace SabreTools name += Path.GetFileNameWithoutExtension(input) + "-miss.txt"; // Read in the roms from the DAT and then write them to the file - Output.WriteToText(name, Path.GetDirectoryName(input), RomManipulation.Parse(input, 0, 0, logger), logger, usegame, prefix, postfix, quotes); + Output.WriteToText(name, Path.GetDirectoryName(input), RomManipulation.Parse(input, 0, 0, logger), logger, usegame, prefix, postfix, addext, repext, quotes); } } } diff --git a/SabreHelper/Build.cs b/SabreHelper/Build.cs index fad0932b..6d742388 100644 --- a/SabreHelper/Build.cs +++ b/SabreHelper/Build.cs @@ -170,7 +170,9 @@ Options: -r, --roms Output roms to miss instead of sets -pre=, --prefix= Set prefix to be printed in front of all lines -post=, --postfix= Set postfix to be printed behind all lines - -q, --quotes Put double-quotes around each outputted item (not prefix/postfix)"); + -q, --quotes Put double-quotes around each outputted item (not prefix/postfix) + -ae=, --add-ext= Add an extension to each outputted item + -re=, --rep-ext= Replace all extensions with specified"); break; default: Console.Write("This is the default help output"); diff --git a/SabreHelper/Output.cs b/SabreHelper/Output.cs index 13d1e643..7157d537 100644 --- a/SabreHelper/Output.cs +++ b/SabreHelper/Output.cs @@ -138,7 +138,8 @@ namespace SabreTools.Helper /// Arbitrary string to postfix each line /// True if quotes should be put around the item, false otherwise (default) /// True if the file was written, false otherwise - public static bool WriteToText(string textfile, string outdir, List roms, Logger logger, bool useGame = true, string prefix = "", string postfix = "", bool quotes = false) + public static bool WriteToText(string textfile, string outdir, List roms, Logger logger, bool useGame = true, string prefix = "", + string postfix = "", string addext = "", string repext = "", bool quotes = false) { // Normalize the output directory if (outdir == "") @@ -166,6 +167,20 @@ namespace SabreTools.Helper string lastgame = ""; foreach (RomData rom in roms) { + string pre = prefix + (quotes ? "\"" : ""); + string post = (quotes ? "\"" : "") + postfix; + string name = (useGame ? rom.Game : rom.Name); + if (repext != "") + { + string dir = Path.GetDirectoryName(name); + dir = (dir.EndsWith(Path.DirectorySeparatorChar.ToString()) ? dir : dir + Path.DirectorySeparatorChar); + name = dir + Path.GetFileNameWithoutExtension(name) + repext; + } + if (addext != "") + { + name += addext; + } + if (useGame && rom.Game != lastgame) { sw.WriteLine(prefix + (quotes ? "\"" : "") + rom.Game + (quotes ? "\"" : "") + postfix);