diff --git a/RombaSharp/RombaSharp.cs b/RombaSharp/RombaSharp.cs index 5f80ad3b..7a85c8e8 100644 --- a/RombaSharp/RombaSharp.cs +++ b/RombaSharp/RombaSharp.cs @@ -174,65 +174,6 @@ namespace RombaSharp // Check all of the flag names and translate to arguments switch (feat.Key) { - // Top-level features - case "Help": - // No-op as this should be caught - break; - case "Archive": - archive = true; - break; - case "Build": - build = true; - break; - case "Stats": - dbstats = true; - break; - case "Rescan Depots": - depotRescan = true; - break; - case "Diffdat": - diffdat = true; - break; - case "Dir2Dat": - dir2dat = true; - break; - case "Export": - export = true; - break; - case "Fixdat": - fixdat = true; - break; - case "Import": - import = true; - break; - case "Lookup": - lookup = true; - break; - case "Memstats": - memstats = true; - break; - case "Merge": - merge = true; - break; - case "Miss": - miss = true; - break; - case "Purge Backup": - purgeBackup = true; - break; - case "Purge Delete": - purgeDelete = true; - break; - case "Refresh DATs": - refreshDats = true; - break; - case "Progress": - progress = true; - break; - case "Shutdown": - shutdown = true; - break; - // User flags case "copy": copy = true; @@ -257,133 +198,143 @@ namespace RombaSharp } } - // If a switch that requires a filename is set and no file is, show the help screen - if (inputs.Count == 0 && (archive || build || depotRescan || dir2dat || fixdat || - import || lookup || merge || miss)) - { - Globals.Logger.Error("This feature requires at least one input"); - _help.OutputGenericHelp(); - Globals.Logger.Close(); - return; - } - // Now take care of each mode in succesion - - // Adds ROM files from the specified directories to the ROM archive - if (archive) + switch(feature) { - InitArchive(inputs, onlyNeeded); - } - - // For each specified DAT file it creates the torrentzip files - else if (build) - { - InitBuild(inputs, copy); - } - - // Prints db stats - else if (dbstats) - { - DisplayDBStats(); - } - - // Rescan a specific depot - else if (depotRescan) - { - foreach (string input in inputs) - { - Rescan(input); - } - } - - // Creates a DAT file with those entries that are in new DAT - else if (diffdat) - { - InitDiffDat(newdat); - } - - // Creates a DAT file for the specified input directory - else if (dir2dat) - { - InitDir2Dat(inputs); - } - - // Export the database to file - else if (export) - { - ExportDatabase(); - } - - // For each specified DAT file it creates a fix DAT - else if (fixdat) - { - InitFixdat(inputs); - } - - // Import a CSV into the database - else if (import) - { - InitImport(inputs); - } - - // For each specified hash it looks up any available information - else if (lookup) - { - InitLookup(inputs); - } - - // Prints memory stats - else if (memstats) - { - DisplayMemoryStats(); - } - - // Merges depots - else if (merge) - { - InitMerge(inputs, depotPath, onlyNeeded); - } - - // For each specified DAT file it creates a miss file and a have file - else if (miss) - { - InitMiss(inputs); - } - - // Shows progress of the currently running command - else if (progress) - { - Globals.Logger.User("This feature is not used in RombaSharp: progress"); - } - - // Moves DAT index entries for orphaned DATs - else if (purgeBackup) - { - PurgeBackup(logOnly); - } - - // Deletes DAT index entries for orphaned DATs - else if (purgeDelete) - { - PurgeDelete(logOnly); - } - - // Refreshes the DAT index from the files in the DAT master directory tree - else if (refreshDats) - { - RefreshDatabase(); - } - - // Gracefully shuts down server - else if (shutdown) - { - Globals.Logger.User("This feature is not used in RombaSharp: shutdown"); - } - - // If nothing is set, show the help - else - { - _help.OutputGenericHelp(); + case "Help": + // No-op as this should be caught + break; + // Adds ROM files from the specified directories to the ROM archive + case "Archive": + if (inputs.Count == 0) + { + Globals.Logger.Error("This feature requires at least one input"); + _help.OutputIndividualFeature(feature); + break; + } + InitArchive(inputs, onlyNeeded); + break; + // For each specified DAT file it creates the torrentzip files + case "Build": + if (inputs.Count == 0) + { + Globals.Logger.Error("This feature requires at least one input"); + _help.OutputIndividualFeature(feature); + break; + } + InitBuild(inputs, copy); + break; + // Prints db stats + case "Stats": + DisplayDBStats(); + break; + // Rescan a specific depot + case "Rescan Depots": + if (inputs.Count == 0) + { + Globals.Logger.Error("This feature requires at least one input"); + _help.OutputIndividualFeature(feature); + break; + } + foreach (string input in inputs) + { + Rescan(input); + } + break; + // Creates a DAT file with those entries that are in new DAT + case "Diffdat": + InitDiffDat(newdat); + break; + // Creates a DAT file for the specified input directory + case "Dir2Dat": + if (inputs.Count == 0) + { + Globals.Logger.Error("This feature requires at least one input"); + _help.OutputIndividualFeature(feature); + break; + } + InitDir2Dat(inputs); + break; + // Export the database to file + case "Export": + ExportDatabase(); + break; + // For each specified DAT file it creates a fix DAT + case "Fixdat": + if (inputs.Count == 0) + { + Globals.Logger.Error("This feature requires at least one input"); + _help.OutputIndividualFeature(feature); + break; + } + InitFixdat(inputs); + break; + // Import a CSV into the database + case "Import": + if (inputs.Count == 0) + { + Globals.Logger.Error("This feature requires at least one input"); + _help.OutputIndividualFeature(feature); + break; + } + InitImport(inputs); + break; + // For each specified hash it looks up any available information + case "Lookup": + if (inputs.Count == 0) + { + Globals.Logger.Error("This feature requires at least one input"); + _help.OutputIndividualFeature(feature); + break; + } + InitLookup(inputs); + break; + // Prints memory stats + case "Memstats": + DisplayMemoryStats(); + break; + // Merges depots + case "Merge": + if (inputs.Count == 0) + { + Globals.Logger.Error("This feature requires at least one input"); + _help.OutputIndividualFeature(feature); + break; + } + InitMerge(inputs, depotPath, onlyNeeded); + break; + // For each specified DAT file it creates a miss file and a have file + case "Miss": + if (inputs.Count == 0) + { + Globals.Logger.Error("This feature requires at least one input"); + _help.OutputIndividualFeature(feature); + break; + } + InitMiss(inputs); + break; + // Moves DAT index entries for orphaned DATs + case "Purge Backup": + PurgeBackup(logOnly); + break; + // Deletes DAT index entries for orphaned DATs + case "Purge Delete": + PurgeDelete(logOnly); + break; + // Refreshes the DAT index from the files in the DAT master directory tree + case "Refresh DATs": + RefreshDatabase(); + break; + // Shows progress of the currently running command + case "Progress": + Globals.Logger.User("This feature is not used in RombaSharp: progress"); + break; + case "Shutdown": + Globals.Logger.User("This feature is not used in RombaSharp: shutdown"); + break; + default: + _help.OutputGenericHelp(); + break; } Globals.Logger.Close(); diff --git a/SabreTools/SabreTools.cs b/SabreTools/SabreTools.cs index 20d48b25..66bd97c6 100644 --- a/SabreTools/SabreTools.cs +++ b/SabreTools/SabreTools.cs @@ -71,16 +71,6 @@ namespace SabreTools return; } - // Feature flags - bool datFromDir = false, - extract = false, - restore = false, - sort = false, - split = false, - stats = false, - update = false, - verify = false; - // User flags bool addBlankFilesForEmptyFolder = false, addFileDates = false, @@ -187,38 +177,6 @@ namespace SabreTools // Check all of the flag names and translate to arguments switch (feat.Key) { - // Top-level features - case "Help": - // No-op as this should be caught - break; - case "DATFromDir": - datFromDir = true; - break; - case "Extract": - extract = true; - break; - case "Restore": - restore = true; - break; - case "Script": - // No-op as this should be caught - break; - case "Split": - split = true; - break; - case "Sort": - sort = true; - break; - case "Stats": - stats = true; - break; - case "Update": - update = true; - break; - case "Verify": - verify = true; - break; - // User flags case "add-blank": addBlankFilesForEmptyFolder = true; @@ -714,73 +672,96 @@ namespace SabreTools } } - // If a switch that requires a filename is set and no file is, show the help screen - if (inputs.Count == 0 - && (datFromDir || extract || restore || split || stats || update || verify)) - { - Globals.Logger.Error("This feature requires at least one input"); - _help.OutputIndividualFeature(feature); - Globals.Logger.Close(); - return; - } - // Now take care of each mode in succesion - - // Create a DAT from a directory or set of directories - if (datFromDir) + switch (feature) { - InitDatFromDir(inputs, datHeader, omitFromScan, removeDateFromAutomaticName, archivesAsFiles, chdsAsFiles, - skipFileType, addBlankFilesForEmptyFolder, addFileDates, tempDir, outDir, copyFiles); - } - - // If we're in header extract and remove mode - else if (extract) - { - InitExtractRemoveHeader(inputs, outDir, nostore); - } - - // If we're in header restore mode - else if (restore) - { - InitReplaceHeader(inputs, outDir); - } - - // If we're using the sorter - else if (sort) - { - InitSort(datfiles, inputs, outDir, depot, quickScan, addFileDates, delete, inverse, - outputFormat, datHeader.Romba, sevenzip, gz, rar, zip, updateDat, datHeader.Header, splitType, chdsAsFiles); - } - - // Split a DAT by the split type - else if (split) - { - InitSplit(inputs, outDir, inplace, datHeader.DatFormat, splittingMode, exta, extb, shortname, basedat); - } - - // Get statistics on input files - else if (stats) - { - InitStats(inputs, datHeader.FileName, outDir, filter.Single, showBaddumpColumn, showNodumpColumn, statDatFormat); - } - - // Convert, update, merge, diff, and filter a DAT or folder of DATs - else if (update) - { - InitUpdate(inputs, basePaths, datHeader, updateMode, inplace, skip, removeDateFromAutomaticName, filter, - splitType, outDir, cleanGameNames, removeUnicode, descAsName); - } - - // If we're using the verifier - else if (verify) - { - InitVerify(datfiles, inputs, depot, hashOnly, quickScan, datHeader.Header, splitType, chdsAsFiles); - } - - // If nothing is set, show the help - else - { - _help.OutputGenericHelp(); + case "Help": + // No-op as this should be caught + break; + // Create a DAT from a directory or set of directories + case "DATFromDir": + if (inputs.Count == 0) + { + Globals.Logger.Error("This feature requires at least one input"); + _help.OutputIndividualFeature(feature); + break; + } + InitDatFromDir(inputs, datHeader, omitFromScan, removeDateFromAutomaticName, archivesAsFiles, chdsAsFiles, + skipFileType, addBlankFilesForEmptyFolder, addFileDates, tempDir, outDir, copyFiles); + break; + // If we're in header extract and remove mode + case "Extract": + if (inputs.Count == 0) + { + Globals.Logger.Error("This feature requires at least one input"); + _help.OutputIndividualFeature(feature); + break; + } + InitExtractRemoveHeader(inputs, outDir, nostore); + break; + // If we're in header restore mode + case "Restore": + if (inputs.Count == 0) + { + Globals.Logger.Error("This feature requires at least one input"); + _help.OutputIndividualFeature(feature); + break; + } + InitReplaceHeader(inputs, outDir); + break; + case "Script": + // No-op as this should be caught + break; + // If we're using the sorter + case "Sort": + InitSort(datfiles, inputs, outDir, depot, quickScan, addFileDates, delete, inverse, + outputFormat, datHeader.Romba, sevenzip, gz, rar, zip, updateDat, datHeader.Header, splitType, chdsAsFiles); + break; + // Split a DAT by the split type + case "Split": + if (inputs.Count == 0) + { + Globals.Logger.Error("This feature requires at least one input"); + _help.OutputIndividualFeature(feature); + break; + } + InitSplit(inputs, outDir, inplace, datHeader.DatFormat, splittingMode, exta, extb, shortname, basedat); + break; + // Get statistics on input files + case "Stats": + if (inputs.Count == 0) + { + Globals.Logger.Error("This feature requires at least one input"); + _help.OutputIndividualFeature(feature); + break; + } + InitStats(inputs, datHeader.FileName, outDir, filter.Single, showBaddumpColumn, showNodumpColumn, statDatFormat); + break; + // Convert, update, merge, diff, and filter a DAT or folder of DATs + case "Update": + if (inputs.Count == 0) + { + Globals.Logger.Error("This feature requires at least one input"); + _help.OutputIndividualFeature(feature); + break; + } + InitUpdate(inputs, basePaths, datHeader, updateMode, inplace, skip, removeDateFromAutomaticName, filter, + splitType, outDir, cleanGameNames, removeUnicode, descAsName); + break; + // If we're using the verifier + case "Verify": + if (inputs.Count == 0) + { + Globals.Logger.Error("This feature requires at least one input"); + _help.OutputIndividualFeature(feature); + break; + } + InitVerify(datfiles, inputs, depot, hashOnly, quickScan, datHeader.Header, splitType, chdsAsFiles); + break; + // If nothing is set, show the help + default: + _help.OutputGenericHelp(); + break; } Globals.Logger.Close();