Beispiel #1
0
        public void Test_GivenNoArguments_CommandLineArgumentHelper_MustNotCrash()
        {
            var instance = new CommandLineArgumentHelper();

            Assert.IsNotNull(instance);
            Assert.IsFalse(instance.HelpRequested);
            Assert.AreEqual(0, instance.Count);
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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));
        }
Beispiel #4
0
        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);
        }