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)); }
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); }
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); }
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)); }