public static ArgcOptions Read(Logging l, string[] args)
        {
            var parser = new Parser(settings =>
            {
                settings.CaseSensitive          = false;
                settings.HelpWriter             = Console.Error;
                settings.IgnoreUnknownArguments = false;
            });
            var result = parser.ParseArguments <ArgcOptions>(args);

            var argcOptions = new ArgcOptions();

            result
            .MapResult(
                options =>
            {
                argcOptions = options;
                return(0);
            },
                errors =>
            {
                l.Debug(
                    String.Join(",",
                                errors.Select(x => x.ToString())
                                )
                    );
                return(1);
            });
            return(Validation(argcOptions));
        }
Example #2
0
        public static IList <ImportFileOptions> ReadFromJsonFile(Logging l, ArgcOptions argv)
        {
            try
            {
                l.Debug($"Read import tasks from JSON-file: '{argv.JsonCfgFile}'.");
                var fileContent = File.ReadAllText(argv.JsonCfgFile);

                //importTasks = (List<ImportFileOptions>)importTasks.ToObject<IList<ImportFileOptions>>(); ' Boom :(
                List <ImportFileOptions> importTasks = (List <ImportFileOptions>)ReadTasks(l, fileContent);

                // Truncate from commandLine have a priority, and set ImportDateTime
                importTasks.ForEach(it => { if (argv.Truncate)
                                            {
                                                it.truncate = argv.Truncate;
                                            }
                                            it.ImportDateTime = argv.ImportDateTime; });

                return(importTasks);
            }
            catch (Exception ex)
            {
                l.Error($"ReadFromJsonFile: Error. Exception : {ex.Message}.\n\nDocumentation in ..\\..\\..\\doc\\Configuration.md\n\nUsage: CsvToSql.exe --settings mySettings.json");
                return(new List <ImportFileOptions>());
            }
        }
 private static ArgcOptions Validation(ArgcOptions argcOptions)
 {
     if (string.IsNullOrWhiteSpace(argcOptions.JsonCfgFile))
     {
         argcOptions.JsonCfgFile = "settings.json";
     }
     argcOptions.ImportDateTime = parseDateTime(argcOptions.ImportDate);
     return(argcOptions);
 }
Example #4
0
        public void ImportTasksTest_ReadFile()
        {
            // Arrange
            var argv = new ArgcOptions()
            {
                JsonCfgFile = "..\\..\\..\\..\\JsonCfg\\settings.json"
            };

            // Act
            var importTasks = CsvToSql.Configuration.ImportTasks.ReadFromJsonFile(log, argv);

            // Assert
            Assert.AreEqual(importTasks.Count, 2);
        }
Example #5
0
        static void Main(string[] args)
        {
            IConfiguration appSettings = new ConfigurationBuilder()
                                         .SetBasePath(AppDomain.CurrentDomain.BaseDirectory)
                                         .AddJsonFile("appsettings.json").Build();

            var defaultConnectionString = appSettings.GetSection("ConnectionStrings").GetChildren().First().Value;

            var         log         = new Logging();
            ArgcOptions programCfg  = ProgramConfiguration.Read(log, args);
            var         importTasks = (List <ImportFileOptions>)ImportTasks.ReadFromJsonFile(log, programCfg);

            var csvReader = new FileReader.ReadCsv(log);
            var sqlWriter = new SqlWriter.SqlServerWriter(log, defaultConnectionString);

            var executor = new TaskExecutor(log, csvReader, sqlWriter);

            importTasks.ForEach(impTask => executor.Run(impTask));
        }