[RombaSharp] Move RombaSharp to new Help system

This commit is contained in:
Matt Nadareski
2017-02-02 15:08:21 -08:00
parent 6591f84438
commit d9fe786a2b
5 changed files with 209 additions and 21 deletions

View File

@@ -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<string> helpHeader = new List<string>();
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<string>() { "-?", "-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;
}
}
}

View File

@@ -20,7 +20,7 @@ using SearchOption = System.IO.SearchOption;
using StreamWriter = System.IO.StreamWriter;
#endif
namespace SabreTools
namespace RombaSharp
{
public partial class RombaSharp
{

View File

@@ -14,7 +14,7 @@ using System.IO;
using Alphaleonis.Win32.Filesystem;
#endif
namespace SabreTools
namespace RombaSharp
{
public partial class RombaSharp
{

View File

@@ -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
{
/// <summary>
/// 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;
/// <summary>
/// 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();

View File

@@ -99,8 +99,9 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Partials\RombaSharp_Helpers.cs" />
<Compile Include="Partials\RombaSharp_Inits.cs" />
<Compile Include="Partials\RombaSharp.Help.cs" />
<Compile Include="Partials\RombaSharp.Helpers.cs" />
<Compile Include="Partials\RombaSharp.Inits.cs" />
<Compile Include="RombaSharp.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>