mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
[RombaSharp, SabreTools] Better switch statements
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user