private static void Configration(Configration opts, VuberConfig config) { foreach (var item in opts.GetType().GetProperties()) { if (item.GetValue(opts, null) != null && item.PropertyType == typeof(string)) { if (item.Name != "ConnectionString") { Regex folder = new Regex(@"^(?:[a-zA-Z]\:|\\\\[\w\.]+\\[\w.$]+)\\(?:[\w]+\\)*\w([\w.])+$"); // Folder regex c:\sql\working Regex share = new Regex(@"^(\\)(\\[A-Za-z0-9-_]+){2,}(\\?)$"); // Share Folder regex \\fileserver\shared if (folder.Match(item.GetValue(opts, null).ToString()).Success || share.Match(item.GetValue(opts, null).ToString()).Success) { config.GetType().GetProperty(item.Name).SetValue(config, item.GetValue(opts, null).ToString().Replace(@"\", "\\"), null); } else { Console.WriteLine("{0} property is not match folder or shared folder expressions. {1}", item.Name, item.GetValue(opts, null)); } } else { try { using (new SqlConnection(item.GetValue(opts, null).ToString())) { } config.GetType().GetProperty(item.Name).SetValue(config, item.GetValue(opts, null).ToString().Replace(@"\", "\\"), null); } catch (Exception) { Console.WriteLine("Connection string is missing. {0}", item.GetValue(opts, null)); } } } } config.SaveConfigFile(config); if (opts.List) { foreach (PropertyInfo prop in typeof(VuberConfig).GetProperties()) { if (prop.PropertyType == typeof(string)) { Console.WriteLine("{0} Configration is {1}", prop.Name, config.GetType().GetProperty(prop.Name).GetValue(config) ?? "Empty"); } } } if (opts.Test) { string configFile = string.Format(@"{0}\config.json", Environment.CurrentDirectory); if (File.Exists(configFile)) { Console.WriteLine("Connection String {0}", Utils.TestConnection()); Console.WriteLine("Working Directory {0}", Utils.DirectoryExists(config.WorkingDirectory)); Console.WriteLine("Executed Directory {0}", Utils.DirectoryExists(config.ExecutedDirectory)); Console.WriteLine("Rollback Directory {0}", Utils.DirectoryExists(config.RollbackDirectory)); } else { Console.WriteLine("Sometings is wrong to configration.\nPleace use vuber --help config"); } } }