public void Test_GivenNoArguments_CommandLineArgumentHelper_MustNotCrash() { var instance = new CommandLineArgumentHelper(); Assert.IsNotNull(instance); Assert.IsFalse(instance.HelpRequested); Assert.AreEqual(0, instance.Count); }
public void Test_GivenValidArguments_CommandLineArgumentHelper_MustNotCrash() { var instance = new CommandLineArgumentHelper("--help", "--name=foo", "--weight=bar"); Assert.IsNotNull(instance); Assert.IsTrue(instance.HelpRequested); Assert.AreEqual(3, instance.Count); Assert.AreEqual("foo", instance["name"]); Assert.AreEqual("foo", instance["Name"]); Assert.AreEqual("bar", instance["WEIGHT"]); Assert.AreEqual("bar", instance.GetArgumentValue("weight", _ => _, string.Empty)); }
public void Test_GivenArgumentValuesQuotedWithEmbeddedSpaces_CommandLineArgumentHelper_MustNotCrash() { var instance = new CommandLineArgumentHelper("help", "name='foo is fun'", "weight=\"bar is not fun\""); Assert.IsNotNull(instance); Assert.IsTrue(instance.HelpRequested); Assert.AreEqual(3, instance.Count); Assert.AreEqual("'foo is fun'", instance["name"]); Assert.AreEqual("'foo is fun'", instance["Name"]); Assert.AreEqual("\"bar is not fun\"", instance["WEIGHT"]); Assert.AreEqual("\"bar is not fun\"", instance.GetArgumentValue("weight", _ => _, string.Empty)); }
public void Test_GivenArgumentsWithoutMinusMinus_CommandLineArgumentHelper_MustNotCrash() { var instance = new CommandLineArgumentHelper("help", "name=foo", "weight=bar"); Assert.IsNotNull(instance); Assert.IsTrue(instance.HelpRequested); Assert.AreEqual(3, instance.Count); Assert.AreEqual("foo", instance["name"]); Assert.AreEqual("foo", instance["Name"]); Assert.AreEqual("bar", instance["WEIGHT"]); Assert.AreEqual("bar_of_soap", instance.GetArgumentValue("weight", _ => $"{_}_of_soap", string.Empty)); Assert.Throws <ArgumentOutOfRangeException>(() => { var result = instance["date"]; }); Assert.AreEqual(string.Empty, instance.GetArgumentValue("date", _ => $"{_}_of_soap", string.Empty)); }
static int Main(string[] args) { // An optimistic start. Environment.ExitCode = (int)ExitCode.Success; #region unit testing // Unit testing only. //var testArgs = new string[] //{ // // "-i", @"C:\Github\Data-Warehouse-Automation-Metadata-Schema\ClassLibrary\DataWarehouseAutomation\Sample_Metadata\sampleBasic.json" // "-i", @"C:\Github\Data-Warehouse-Automation-Metadata-Schema\ClassLibrary\DataWarehouseAutomation\Sample_Metadata\" // ,"-p", @"C:\Github\Data-Warehouse-Automation-Metadata-Schema\ClassLibrary\DataWarehouseAutomation\Sample_Templates\TemplateSampleBasic.Handlebars" // ,"-o" // ,"-d", @"C:\Files\" // ,"-e", "sql" // ,"-f", "roelant" // ,"-v" //}; //var testArgs = new string[] //{ // "-i", @"C:\Github\Data-Warehouse-Automation-Metadata-Schema\ClassLibrary\DataWarehouseAutomation\Sample_Metadata\sampleBasic.json" // "-i", @"C:\Files\Test\" // ,"-p", @"C:\Files\Test\TemplateSampleBasic.Handlebars" // ,"-o" // ,"-f", "roelant" // ,"-v" //}; #endregion CommandLineArgumentHelper environmentHelper = new CommandLineArgumentHelper(); string[] localArgs = environmentHelper.args; Parser.Default.ParseArguments <Options>(localArgs).WithParsed(options => { // Make sure there is a default directory set when output is enabled if (options.output) { if (options.outputDirectory == null) { options.outputDirectory = AppDomain.CurrentDomain.BaseDirectory; } if (options.outputFileExtension == null) { options.outputFileExtension = "txt"; } } // Determine if the output is a file or path var path = Path.GetExtension(options.input); bool isPath; isPath = path == String.Empty; // Managing verbose information back to user if (options.verbose) { Console.WriteLine("Verbose mode enabled."); if (!string.IsNullOrEmpty(options.input)) { Console.WriteLine($"The input (file or directory) provided is {options.input}"); Console.WriteLine(isPath ? $"{options.input} is evaluated as a directory." : $"{options.input} is evaluated as a file."); } if (!string.IsNullOrEmpty(options.pattern)) { Console.WriteLine($"The pattern used is {options.pattern}"); } if (options.output) { Console.WriteLine($"Output is enabled."); Console.WriteLine($"The Output Directory is {options.outputDirectory}."); Console.WriteLine($"The File Extension for output file(s) is {options.outputFileExtension}"); } //Console.WriteLine(); } #region Core // Do the main stuff HandleBarsHelpers.RegisterHandleBarsHelpers(); if (isPath) { var localFiles = Directory.GetFiles(options.input, "*.json"); foreach (var file in localFiles) { if (options.outputFileName == null) { RunAutomation(options, file); } else { RunAutomation(options, file, options.outputFileName + Array.IndexOf(localFiles, file)); } } } else { if (options.outputFileName == null) { RunAutomation(options, options.input); } else { RunAutomation(options, options.input, options.outputFileName); } } #endregion }).WithNotParsed(e => { Console.WriteLine($"An error was encountered while parsing the parameters/arguments. Please review the above possible options."); }); //var result = Parser.Default.ParseArguments<Options>(args); //var helpText = CommandLine.Text.HelpText.AutoBuild(result, // h => CommandLine.Text.HelpText.DefaultParsingErrorsHandler(result, h), // e => e); //Console.WriteLine(helpText); //Console.ReadKey(); return(Environment.ExitCode); }