コード例 #1
0
        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");
                }
            }
        }