Пример #1
0
        public static int Execute(ArgsOptions options)
        {
            var config = Toml.ReadFile(options.EnvFile);
            var xmlDoc = new XmlDocument();

            xmlDoc.Load(options.TemplateFile);

            foreach (var key in config.Keys)
            {
                var tomlBlock = config[key];
                var k         = key.ToLowerInvariant();
                if (k == "connectionstrings")
                {
                    ApplyConnectionStrings(tomlBlock as TomlTable, xmlDoc);
                }
                else if (k == "appsettings")
                {
                    ApplyAppSettings(tomlBlock as TomlTable, xmlDoc);
                }
            }
            if (string.IsNullOrEmpty(options.OutputFile) || options.DryRun)
            {
                Console.WriteLine(Utils.XmlToString(xmlDoc));
            }
            else
            {
                xmlDoc.Save(options.OutputFile);
            }
            return(ErrorCodes.NO_ERROR);
        }
Пример #2
0
        public static ArgsOptions Parse(string[] args)
        {
            var options = new ArgsOptions();

            if (args.Length == 0)
            {
                options.Command = Command.Help;
                options.Valid   = true;
                return(options);
            }

            var index    = 0;
            var position = 0;

            while (index < args.Length)
            {
                var argItem = args[index++];
                if (argItem == "--dry-run")
                {
                    options.DryRun = true;
                }
                else if (argItem == "-o")
                {
                    if (index + 1 <= args.Length)
                    {
                        var nextOption = args[index++];
                        options.OutputFile = nextOption;
                    }
                    else
                    {
                        options.Valid    = false;
                        options.ExitCode = 3;
                        Console.WriteLine("-o option should provide a target file.");
                        return(options);
                    }
                }
                else if (argItem == "--missing" || argItem == "-m")
                {
                    if (index + 1 <= args.Length)
                    {
                        var nextOption = args[index++];
                        options.ToBeDefinedKeyword = nextOption;
                    }
                    else
                    {
                        options.Valid    = false;
                        options.ExitCode = 4;
                        Console.WriteLine("--missing option should provide a missing keyword. Defaults: TBD.");
                        return(options);
                    }
                }
                else
                {
                    if (position == 0)
                    {
                        options.Command = GetCommand(args[0]);
                        position++;
                        if (options.Command == Command.None)
                        {
                            options.Valid    = false;
                            options.ExitCode = 5;
                            Console.WriteLine("Invalid command specified: '{0}' ", args[0]);
                            Console.WriteLine("For help type:  cenv help");
                            return(options);
                        }
                    }
                    else if (position == 1)
                    {
                        options.EnvFile = argItem;
                        position++;
                    }
                    else if (position == 2)
                    {
                        options.TemplateFile = argItem;
                        position++;
                    }
                }
            }
            // Validation
            if (!string.IsNullOrEmpty(options.EnvFile))
            {
                if (!File.Exists(options.EnvFile))
                {
                    options.Valid    = false;
                    options.ExitCode = 4;
                    Console.WriteLine("File '{0}' not found.", options.EnvFile);
                    return(options);
                }
            }
            if (!string.IsNullOrEmpty(options.TemplateFile))
            {
                if (!File.Exists(options.TemplateFile))
                {
                    options.Valid    = false;
                    options.ExitCode = 4;
                    Console.WriteLine("File '{0}' not found.", options.TemplateFile);
                    return(options);
                }
            }

            options.Valid = true;
            return(options);
        }
Пример #3
0
 public static bool IsMissing(string value, ArgsOptions options)
 {
     return(value == options.ToBeDefinedKeyword);
 }
Пример #4
0
        public static int Execute(ArgsOptions options)
        {
            var config = Toml.ReadFile(options.EnvFile);
            var xmlDoc = new XmlDocument();

            xmlDoc.Load(options.TemplateFile);

            var xmlNodes = xmlDoc.SelectNodes("configuration/connectionStrings/add");
            var tomlCS   = config["connectionStrings"] as TomlTable;

            foreach (XmlElement xmlNode in xmlNodes)
            {
                var name             = xmlNode.GetAttribute("name");
                var connectionString = xmlNode.GetAttribute("connectionString");
                var providerName     = xmlNode.GetAttribute("providerName");

                if (IsMissing(connectionString, options))
                {
                    ReportConnectionStringError("connectionStrings", name, "connectionString", connectionString);
                }
                if (IsMissing(providerName, options))
                {
                    ReportConnectionStringError("connectionStrings", name, "providerName", providerName);
                }

                if (tomlCS != null)
                {
                    var tomlSection          = tomlCS[name] as TomlTable;
                    var tomlConnectionString = (tomlSection as TomlTable)["connectionString"].ToString();
                    var tomlProviderName     = (tomlSection as TomlTable)["providerName"].ToString();

                    if (tomlConnectionString != connectionString)
                    {
                        ReportConnectionStringMismatch("connectionStrings", name, "connectionString", tomlConnectionString, connectionString);
                    }
                    if (tomlProviderName != providerName)
                    {
                        ReportConnectionStringMismatch("connectionStrings", name, "connectionString", tomlProviderName, providerName);
                    }
                }
            }
            var xmlNodes2 = xmlDoc.SelectNodes("configuration/appSettings/add");
            var tomlAs    = config["appSettings"] as TomlTable;

            foreach (XmlElement xmlNode in xmlNodes2)
            {
                var key   = xmlNode.GetAttribute("key");
                var value = xmlNode.GetAttribute("value");

                if (IsMissing(value, options))
                {
                    ReportAppSettingError("appSettings", key, value);
                }
                if (tomlAs != null)
                {
                    var tomlObj   = tomlAs.TryGetValue(key);
                    var tomlValue = tomlObj != null?tomlObj.ToString() : null;

                    if (tomlValue != value)
                    {
                        ReportAppSettingMismatch("appSettings", key, tomlValue, value);
                    }
                }
            }

            if (Errors == 0)
            {
                return(ErrorCodes.NO_ERROR);
            }
            else
            {
                Console.WriteLine(string.Format("{0} errors were found.", Errors));
                return(ErrorCodes.VALIDATION_ERRORS_FOUND);
            }
        }