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); }
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); }
public static bool IsMissing(string value, ArgsOptions options) { return(value == options.ToBeDefinedKeyword); }
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); } }