diff --git a/Deheader/Headerer.csproj b/Deheader/Headerer.csproj index f115de5a..c3e59492 100644 --- a/Deheader/Headerer.csproj +++ b/Deheader/Headerer.csproj @@ -79,7 +79,7 @@ - + diff --git a/Deheader/HeadererApp.cs b/Deheader/HeadererApp.cs new file mode 100644 index 00000000..cd4ef42f --- /dev/null +++ b/Deheader/HeadererApp.cs @@ -0,0 +1,140 @@ +using SabreTools.Helper; +using System; +using System.Collections.Generic; +using System.IO; + +namespace SabreTools +{ + /// + /// Entry class for the Deheader application + /// + public class HeadererApp + { + // Private required variables + private static string _headererDbSchema = "Headerer"; + private static string _headererDbName = "Headerer.sqlite"; + private static string _headererConnectionString = "Data Source=" + _headererDbName + ";Version = 3;"; + + /// + /// Start deheader operation with 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(); + } + + // Perform initial setup and verification + Logger logger = new Logger(true, "headerer.log"); + logger.Start(); + DBTools.EnsureDatabase(_headererDbSchema, _headererDbName, _headererConnectionString); + + // Credits take precidence over all + if ((new List(args)).Contains("--credits")) + { + Build.Credits(); + return; + } + + // If we have no arguments, show the help + if (args.Length == 0) + { + Build.Help(); + logger.Close(); + return; + } + + // Output the title + Build.Start("Headerer"); + + // Get the filename (or foldername) + string input = ""; + bool help = false, + extract = true, + headerer = true; + foreach (string arg in args) + { + string temparg = arg.Replace("\"", "").Replace("file://", ""); + switch (temparg) + { + case "-?": + case "-h": + case "--help": + help = true; + break; + case "-e": + case "--extract": + extract = true; + break; + case "-r": + case "--restore": + extract = false; + break; + default: + if (File.Exists(temparg) || Directory.Exists(temparg)) + { + input = temparg; + } + else + { + logger.Error("Invalid input detected: " + arg); + Console.WriteLine(); + Build.Help(); + Console.WriteLine(); + logger.Error("Invalid input detected: " + arg); + logger.Close(); + return; + } + break; + } + } + + // If help is set, show the help screen + if (help) + { + Build.Help(); + logger.Close(); + return; + } + + // If a switch that requires a filename is set and no file is, show the help screen + if (String.IsNullOrEmpty(input) && (headerer)) + { + logger.Error("This feature requires at least one input"); + Build.Help(); + logger.Close(); + return; + } + + // If we're in headerer mode + if (headerer) + { + InitHeaderer(input, extract, logger); + } + + // If nothing is set, show the help + else + { + Build.Help(); + } + + logger.Close(); + return; + } + + /// + /// Wrap extracting and replacing headers + /// + /// Input file or folder name + /// True if we're extracting headers (default), false if we're replacing them + /// Logger object for file and console output + private static void InitHeaderer(string input, bool flag, Logger logger) + { + Headerer headerer = new Headerer(input, flag, logger); + headerer.Process(); + } + } +} diff --git a/Deheader/Headerer.cs b/SabreTools.Helper/Objects/Headerer.cs similarity index 69% rename from Deheader/Headerer.cs rename to SabreTools.Helper/Objects/Headerer.cs index 1093e1ae..da01fedc 100644 --- a/Deheader/Headerer.cs +++ b/SabreTools.Helper/Objects/Headerer.cs @@ -34,128 +34,6 @@ namespace SabreTools _logger = logger; } - /// - /// Start deheader operation with 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(); - } - - // Perform initial setup and verification - Logger logger = new Logger(true, "headerer.log"); - logger.Start(); - DBTools.EnsureDatabase(_dbSchema, _dbName, _connectionString); - - // Credits take precidence over all - if ((new List(args)).Contains("--credits")) - { - Build.Credits(); - return; - } - - // If we have no arguments, show the help - if (args.Length == 0) - { - Build.Help(); - logger.Close(); - return; - } - - // Output the title - Build.Start("Headerer"); - - // Get the filename (or foldername) - string input = ""; - bool help = false, - extract = true, - headerer = true; - foreach (string arg in args) - { - string temparg = arg.Replace("\"", "").Replace("file://", ""); - switch (temparg) - { - case "-?": - case "-h": - case "--help": - help = true; - break; - case "-e": - case "--extract": - extract = true; - break; - case "-r": - case "--restore": - extract = false; - break; - default: - if (File.Exists(temparg) || Directory.Exists(temparg)) - { - input = temparg; - } - else - { - logger.Error("Invalid input detected: " + arg); - Console.WriteLine(); - Build.Help(); - Console.WriteLine(); - logger.Error("Invalid input detected: " + arg); - logger.Close(); - return; - } - break; - } - } - - // If help is set, show the help screen - if (help) - { - Build.Help(); - logger.Close(); - return; - } - - // If a switch that requires a filename is set and no file is, show the help screen - if (String.IsNullOrEmpty(input) && (headerer)) - { - logger.Error("This feature requires at least one input"); - Build.Help(); - logger.Close(); - return; - } - - // If we're in headerer mode - if (headerer) - { - InitHeaderer(input, extract, logger); - } - - // If nothing is set, show the help - else - { - Build.Help(); - } - - logger.Close(); - return; - } - - /// - /// Wrap extracting and replacing headers - /// - /// Input file or folder name - /// True if we're extracting headers (default), false if we're replacing them - /// Logger object for file and console output - private static void InitHeaderer(string input, bool flag, Logger logger) - { - Headerer headerer = new Headerer(input, flag, logger); - headerer.Process(); - } - /// /// Extract and remove or replace headers /// diff --git a/SabreTools.Helper/SabreTools.Helper.csproj b/SabreTools.Helper/SabreTools.Helper.csproj index 068d8e9b..9d0eea7a 100644 --- a/SabreTools.Helper/SabreTools.Helper.csproj +++ b/SabreTools.Helper/SabreTools.Helper.csproj @@ -91,6 +91,7 @@ +