diff --git a/DATabase/Filter.cs b/DATabase/Filter.cs index ad0d7ab8..d10dc5e0 100644 --- a/DATabase/Filter.cs +++ b/DATabase/Filter.cs @@ -24,196 +24,6 @@ namespace SabreTools private bool? _nodump; private Logger _logger; - /// - /// Start help or use supplied parameters - /// - /// String array representing command line parameters - public static void Main(string[] args) - { - // If output is being redirected, don't allow clear screens - if (!Console.IsOutputRedirected) - { - Console.Clear(); - } - - // Credits take precidence over all - if ((new List(args)).Contains("--credits")) - { - Build.Credits(); - return; - } - - Logger logger = new Logger(true, "filter.log"); - logger.Start(); - - // First things first, take care of all of the arguments that this could have - bool? nodump = null; - string outdir = "", gamename = "", romname = "", romtype = "", crc = "", md5 = "", sha1= ""; - long sgt = -1, slt = -1, seq = -1; - List inputs = new List(); - foreach (string arg in args) - { - switch (arg) - { - case "-h": - case "-?": - case "--help": - Build.Help(); - logger.Close(); - return; - case "-nd": - case "--nodump": - nodump = true; - break; - case "-nnd": - case "--not-nodump": - nodump = false; - break; - default: - // Numerical inputs - if (arg.StartsWith("-seq=") || arg.StartsWith("--equal=")) - { - if (!Int64.TryParse(arg.Split('=')[1], out seq)) - { - seq = -1; - } - } - else if (arg.StartsWith("-sgt=") || arg.StartsWith("--greater=")) - { - if (!Int64.TryParse(arg.Split('=')[1], out sgt)) - { - sgt = -1; - } - } - else if (arg.StartsWith("-slt=") || arg.StartsWith("--less=")) - { - if (!Int64.TryParse(arg.Split('=')[1], out slt)) - { - slt = -1; - } - } - - // String inputs - else if (arg.StartsWith("-out=") || arg.StartsWith("--out=")) - { - outdir = arg.Split('=')[1]; - } - else if (arg.StartsWith("-crc=") || arg.StartsWith("--crc=")) - { - crc = arg.Split('=')[1]; - } - else if (arg.StartsWith("-gn=") || arg.StartsWith("--game-name=")) - { - gamename = arg.Split('=')[1]; - } - else if (arg.StartsWith("-md5=") || arg.StartsWith("--md5=")) - { - md5 = arg.Split('=')[1]; - } - else if (arg.StartsWith("-rn=") || arg.StartsWith("--rom-name=")) - { - romname = arg.Split('=')[1]; - } - else if (arg.StartsWith("-rt=") || arg.StartsWith("--rom-type=")) - { - romtype = arg.Split('=')[1]; - } - else if (arg.StartsWith("-sha1=") || arg.StartsWith("--sha1=")) - { - sha1 = arg.Split('=')[1]; - } - else - { - inputs.Add(arg); - } - break; - } - } - - // If there's no inputs, show the help - if (inputs.Count == 0) - { - Build.Help(); - logger.Close(); - return; - } - - // Output the title - Build.Start("Filter"); - - // If any of the inputs are not valid, show the help - foreach (string input in inputs) - { - if (!File.Exists(input) && !Directory.Exists(input)) - { - logger.Error(input + " is not a valid input!"); - Console.WriteLine(); - Build.Help(); - return; - } - } - - // Run the filter - InitFilter(inputs, outdir, gamename, romname, romtype, sgt, slt, seq, crc, md5, sha1, nodump, logger); - - logger.Close(); - } - - /// - /// Wrap filtering a DAT or set of DATs - /// - /// List of inputs to be procesed - /// Output directory for new files (optional) - /// Name of the game to match (can use asterisk-partials) - /// Name of the rom to match (can use asterisk-partials) - /// Type of the rom to match - /// Find roms greater than or equal to this size - /// Find roms less than or equal to this size - /// Find roms equal to this size - /// CRC of the rom to match (can use asterisk-partials) - /// MD5 of the rom to match (can use asterisk-partials) - /// SHA-1 of the rom to match (can use asterisk-partials) - /// Select roms with nodump status as follows: null (match all), true (match Nodump only), false (exclude Nodump) - /// Logging object for file and console output - private static void InitFilter(List inputs, string outdir, string gamename, string romname, string romtype, long sgt, - long slt, long seq, string crc, string md5, string sha1, bool? nodump, Logger logger) - { - // Create new Filter objects for each input - Filter filter; - bool success = true; - foreach (string input in inputs) - { - string newinput = Path.GetFullPath(input.Replace("\"", "")); - - if (File.Exists(newinput)) - { - filter = new Filter(newinput, outdir, gamename, romname, romtype, sgt, slt, seq, crc, md5, sha1, nodump, logger); - success &= filter.Process(); - } - - if (Directory.Exists(newinput)) - { - foreach (string file in Directory.EnumerateFiles(newinput, "*", SearchOption.AllDirectories)) - { - string nestedoutdir = ""; - if (outdir != "") - { - nestedoutdir = outdir + Path.GetDirectoryName(file).Remove(0, newinput.Length); - } - filter = new Filter(file, nestedoutdir, gamename, romname, romtype, sgt, slt, seq, crc, md5, sha1, nodump, logger); - success &= filter.Process(); - } - } - } - - // If we failed, show the help - if (!success) - { - Console.WriteLine(); - Build.Help(); - } - } - /// /// Create a Filter object ///