diff --git a/RombaSharp/Partials/RombaSharp.Help.cs b/RombaSharp/Partials/RombaSharp.Help.cs new file mode 100644 index 00000000..dd1b8e25 --- /dev/null +++ b/RombaSharp/Partials/RombaSharp.Help.cs @@ -0,0 +1,183 @@ +using System.Collections.Generic; + +using SabreTools.Helper.Data; +using SabreTools.Helper.Help; +using SabreTools.Helper.Resources; + +namespace RombaSharp +{ + public partial class RombaSharp + { + public static Help RetrieveHelp() + { + // Create and add the header to the Help object + string barrier = "-----------------------------------------"; + List helpHeader = new List(); + helpHeader.Add(Resources.RombaSharp_Name + " - " + Resources.RombaSharp_Desc); + helpHeader.Add(barrier); + helpHeader.Add(Resources.Usage + ": " + Resources.RombaSharp_Name + " [option] [filename|dirname] ..."); + helpHeader.Add(""); + Help help = new Help(helpHeader); + + // Create the Help feature + Feature helpFeature = new Feature( + new List() { "-?", "-h", "--help" }, + "Show this help", + FeatureType.Flag, + null); + + // Create the Archive feature + Feature archive = new Feature( + "archive", + "Adds ROM files from the specified directories to depot", + FeatureType.Flag, + null); + archive.AddFeature("only-needed", new Feature( + "-only-needed", + "Only archive ROM files in database", + FeatureType.Flag, + null)); + + // Create the Build feature + Feature build = new Feature( + "build", + "For each specified DAT file it creates TZip files", + FeatureType.Flag, + null); + build.AddFeature("copy", new Feature( + "-copy", + "Copy files instead of rebuilding", + FeatureType.Flag, + null)); + + // Create the Stats feature + Feature stats = new Feature( + "dbstats", + "Prints db stats", + FeatureType.Flag, + null); + + // Create the Rescan Depots feature + Feature rescanDepots = new Feature( + "depot-rescan", + "Rescan a specific depot to get new information", + FeatureType.Flag, + null); + + // Create the Diffdat feature + Feature diffdat = new Feature( + "diffdat", + "Creates a DAT file for entries found in the new DAT", + FeatureType.Flag, + null); + diffdat.AddFeature("new", new Feature( + "-new", + "DAT to compare to", + FeatureType.String, + null)); + + // Create the Dir2Dat feature + Feature dir2dat = new Feature( + "dir2dat", + "Creates a DAT file for the specified input directory", + FeatureType.Flag, + null); + dir2dat.AddFeature("out", new Feature( + "-out", + "Filename to save out to", + FeatureType.String, + null)); + + // Create the Export feature + Feature export = new Feature( + "export", + "Exports db to export.csv", + FeatureType.Flag, + null); + + // Create the Fixdat feature + Feature fixdat = new Feature( + "fixdat", + "For each specified DAT file it creates a fix DAT", + FeatureType.Flag, + null); + + // Create the Lookup feature + Feature lookup = new Feature( + "lookup", + "For each specified hash, look up available information", + FeatureType.Flag, + null); + + // Create the Mmmstats feature + Feature memstats = new Feature( + "memstats", + "Prints memory stats", + FeatureType.Flag, + null); + + // Create the Miss feature + Feature miss = new Feature( + "miss", + "For each specified DAT file, create miss and have file", + FeatureType.Flag, + null); + + // Create the Purge Backup feature + Feature purgeBackup = new Feature( + "purge-backup", + "Moves DAT index entries for orphaned DATs", + FeatureType.Flag, + null); + + // Create the Purge Delete feature + Feature purgeDelete = new Feature( + "purge-delete", + "Deletes DAT index entries for orphaned DATs", + FeatureType.Flag, + null); + + // Create the Refresh DATs feature + Feature refreshDats = new Feature( + "refresh-dats", + "Refreshes the DAT index from the files in the DAT root", + FeatureType.Flag, + null); + + // Create the Progress feature + Feature progress = new Feature( + "progress", + "Shows progress of currently running command [OBSOLETE]", + FeatureType.Flag, + null); + + // Create the Shutdown feature + Feature shutdown = new Feature( + "shutdown", + "Gracefully shuts down server [OBSOLETE]", + FeatureType.Flag, + null); + + // Now, add all of the main features to the Help object + help.Add("Help", helpFeature); + help.Add("Archive", archive); + help.Add("Build", build); + help.Add("Stats", stats); + help.Add("Rescan Depots", rescanDepots); + help.Add("Diffdat", diffdat); + help.Add("Dir2Dat", dir2dat); + help.Add("Export", export); + help.Add("Fixdat", fixdat); + help.Add("Lookup", lookup); + help.Add("Memstats", memstats); + help.Add("Miss", miss); + help.Add("Purge Backup", purgeBackup); + help.Add("Purge Delete", purgeDelete); + help.Add("Refresh DATs", refreshDats); + help.Add("Progress", progress); + help.Add("Shutdown", shutdown); + + return help; + } + } +} diff --git a/RombaSharp/Partials/RombaSharp_Helpers.cs b/RombaSharp/Partials/RombaSharp.Helpers.cs similarity index 99% rename from RombaSharp/Partials/RombaSharp_Helpers.cs rename to RombaSharp/Partials/RombaSharp.Helpers.cs index 15bfd74b..8c7cdef2 100644 --- a/RombaSharp/Partials/RombaSharp_Helpers.cs +++ b/RombaSharp/Partials/RombaSharp.Helpers.cs @@ -20,7 +20,7 @@ using SearchOption = System.IO.SearchOption; using StreamWriter = System.IO.StreamWriter; #endif -namespace SabreTools +namespace RombaSharp { public partial class RombaSharp { diff --git a/RombaSharp/Partials/RombaSharp_Inits.cs b/RombaSharp/Partials/RombaSharp.Inits.cs similarity index 99% rename from RombaSharp/Partials/RombaSharp_Inits.cs rename to RombaSharp/Partials/RombaSharp.Inits.cs index 66d83f84..0a791867 100644 --- a/RombaSharp/Partials/RombaSharp_Inits.cs +++ b/RombaSharp/Partials/RombaSharp.Inits.cs @@ -14,7 +14,7 @@ using System.IO; using Alphaleonis.Win32.Filesystem; #endif -namespace SabreTools +namespace RombaSharp { public partial class RombaSharp { diff --git a/RombaSharp/RombaSharp.cs b/RombaSharp/RombaSharp.cs index bc1ccd2e..c4c89f04 100644 --- a/RombaSharp/RombaSharp.cs +++ b/RombaSharp/RombaSharp.cs @@ -3,9 +3,10 @@ using System.Collections.Generic; using SabreTools.Helper; using SabreTools.Helper.Data; +using SabreTools.Helper.Help; using SabreTools.Helper.Tools; -namespace SabreTools +namespace RombaSharp { /// /// Entry class for the RombaSharp application @@ -36,6 +37,7 @@ namespace SabreTools private static string _dbSchema = "rombasharp"; private static string _connectionString; private static Logger _logger; + private static Help _help; /// /// Entry class for the RombaSharp application @@ -44,9 +46,13 @@ namespace SabreTools { // Perform initial setup and verification _logger = new Logger(true, "romba.log"); + InitializeConfiguration(); DatabaseTools.EnsureDatabase(_dbSchema, _db, _connectionString); + // Create a new Help object for this program + _help = RetrieveHelp(); + // If output is being redirected, don't allow clear screens if (!Console.IsOutputRedirected) { @@ -64,14 +70,13 @@ namespace SabreTools // If there's no arguments, show help if (args.Length == 0) { - Build.Help("RombaSharp"); + _help.OutputGenericHelp(); _logger.Close(); return; } // Feature flags - bool help = false, - archive = false, + bool archive = false, build = false, dbstats = false, depotRescan = false, @@ -106,8 +111,15 @@ namespace SabreTools case "-?": case "-h": case "--help": - help = true; - break; + if (i + 1 < args.Length) + { + _help.OutputIndividualFeature(args[i + 1]); + } + else + { + _help.OutputGenericHelp(); + } + return; case "archive": archive = true; break; @@ -212,20 +224,12 @@ namespace SabreTools } } - // If help is set, show the help screen - if (help) - { - Build.Help("RombaSharp"); - _logger.Close(); - return; - } - // If more than one switch is enabled, show the help screen if (!(archive ^ build ^ dbstats ^ depotRescan ^ diffdat ^ dir2dat ^ export ^ fixdat ^ lookup ^ memstats ^ miss ^ progress ^ purgeBackup ^ purgeDelete ^ refreshDats ^ shutdown)) { _logger.Error("Only one feature switch is allowed at a time"); - Build.Help("RombaSharp"); + _help.OutputGenericHelp(); _logger.Close(); return; } @@ -234,7 +238,7 @@ namespace SabreTools if (inputs.Count == 0 && (archive || build || depotRescan || dir2dat || fixdat || lookup || miss)) { _logger.Error("This feature requires at least one input"); - Build.Help("RombaSharp"); + _help.OutputGenericHelp(); _logger.Close(); return; } @@ -343,7 +347,7 @@ namespace SabreTools // If nothing is set, show the help else { - Build.Help("RombaSharp"); + _help.OutputGenericHelp(); } _logger.Close(); diff --git a/RombaSharp/RombaSharp.csproj b/RombaSharp/RombaSharp.csproj index 827c49f6..35748ef9 100644 --- a/RombaSharp/RombaSharp.csproj +++ b/RombaSharp/RombaSharp.csproj @@ -99,8 +99,9 @@ - - + + +