/// <summary> /// When overridden in a derived class, executes the task. /// </summary> /// <returns> /// true if the task successfully executed; otherwise, false. /// </returns> public override bool Execute() { RenderConfigConfig config = new RenderConfigConfig(); config.BreakOnNoMatch = breakOnNoMatch; config.CleanOutput = cleanOutput; config.ConfigFile = configFile; config.Configuration = configuration; config.DeleteOutputDirectory = deleteOutputDirectory; config.OutputDirectory = outputDirectory; config.InputDirectory = inputDirectory; config.SubDirectoryEachConfiguration = SubDirectoryEachConfiguration; config.PreserveSourceStructure = PreserveSourceStructure; IRenderConfigLogger log = new MSBuildLogger(Log); Boolean returnVal = true; try { RenderConfigEngine.RunAllConfigurations(config, log); } catch (Exception i) { log.LogError("Failed to render configuration : " + i.Message); return(false); } return(returnVal); }
public void Setup() { RenderConfigConfig config = GetConfigObject(); IRenderConfigLogger log = new ConsoleLogger(); RenderConfigEngine engine = new RenderConfigEngine(config, log); engine.Render(); }
public void CheckXMLMultipleVariableSubstitution() { engine = new RenderConfigEngine(config, log); engine.Render(); XmlDocument doc = new XmlDocument(); doc.Load(Path.Combine(od.FullName, "variablesubmultiple.xml")); Assert.AreEqual(doc.SelectSingleNode("/configuration/Random").InnerText, string.Concat(Environment.GetEnvironmentVariable("RenderTestVar1"), string.Concat(Environment.GetEnvironmentVariable("RenderTestVar2")))); }
public void CheckINIMultipleVariableSubstitutionInterspersed() { engine = new RenderConfigEngine(config, log); engine.Render(); IConfigSource ini = new IniConfigSource(Path.Combine(od.FullName, "test.ini")); Assert.AreEqual(ini.Configs["Logging"].Get("Expansion2"), string.Concat(Environment.GetEnvironmentVariable("RenderTestVar1"), "blah", Environment.GetEnvironmentVariable("RenderTestVar2"))); }
public void CanReplaceInFile() { engine = new RenderConfigEngine(config, log); engine.Render(); string text = File.ReadAllText(String.Concat("testing", Path.DirectorySeparatorChar, "text", Path.DirectorySeparatorChar,"textreplace.txt")); Assert.IsTrue(text.Contains("Replacement!!!")); }
public void CanReplaceInFile() { engine = new RenderConfigEngine(config, log); engine.Render(); string text = File.ReadAllText(String.Concat("testing", Path.DirectorySeparatorChar, "text", Path.DirectorySeparatorChar, "textreplace.txt")); Assert.IsTrue(text.Contains("Replacement!!!")); }
public void CheckINISingleVariableSubstitution() { Environment.SetEnvironmentVariable("RenderTestVar1", "EnvVarBlah"); engine = new RenderConfigEngine(config, log); engine.Render(); IConfigSource ini = new IniConfigSource(Path.Combine(od.FullName, "test.ini")); Assert.AreEqual(ini.Configs["Logging"].Get("File Name"), Environment.GetEnvironmentVariable("RenderTestVar1")); }
public void AddAttributeWithoutNameSpace() { config.Configuration = "xmladd"; engine = new RenderConfigEngine(config, log); engine.Render(); XmlDocument doc = new XmlDocument(); doc.Load(Path.Combine(od.FullName,"xmladd.xml")); Assert.IsNotNull(doc.SelectSingleNode("/configuration/configSections/section[@value='xmladd']")); }
public void BadConfigDoesntLoad() { config.ConfigFile = String.Concat("examples", Path.DirectorySeparatorChar, "config.bad.xml"); config.Configuration = "preservestructure"; config.OutputDirectory = "blah"; config.BreakOnNoMatch = false; engine = new RenderConfigEngine(config, log); Assert.Throws <ApplicationException>(delegate { engine.Render(); }); }
public void AddCDATAWithoutNameSpace() { config.Configuration = "xmladd"; engine = new RenderConfigEngine(config, log); engine.Render(); XmlDocument doc = new XmlDocument(); doc.Load(Path.Combine(od.FullName,"xmladd.xml")); Assert.IsNotNull(doc.SelectSingleNode("/configuration/nhibernate/Node")); }
public void NonExistentDependencyCausesException() { config.ConfigFile = String.Concat("examples", Path.DirectorySeparatorChar, "config.bad.xml"); config.Configuration = "incorrectdependency"; config.OutputDirectory = String.Concat("testing",Path.DirectorySeparatorChar,"incorrectdependency"); config.InputDirectory = "TestFiles"; RenderConfigEngine engine = new RenderConfigEngine(config, log); Assert.Throws<ApplicationException>(delegate { engine.Render(); }); }
public void NonExistentDependencyCausesException() { config.ConfigFile = String.Concat("examples", Path.DirectorySeparatorChar, "config.bad.xml"); config.Configuration = "incorrectdependency"; config.OutputDirectory = String.Concat("testing", Path.DirectorySeparatorChar, "incorrectdependency"); config.InputDirectory = "TestFiles"; RenderConfigEngine engine = new RenderConfigEngine(config, log); Assert.Throws <ApplicationException>(delegate { engine.Render(); }); }
public void MultipleConfigurationsOutputToSubDirectories() { string outputDir = String.Concat(config.OutputDirectory, Path.DirectorySeparatorChar, "multiconfigsub"); config.Configuration = "copy,copy2"; config.OutputDirectory = outputDir; RenderConfigEngine.RunAllConfigurations(config, log); Assert.IsTrue(File.Exists(Path.Combine(od.FullName, String.Concat(outputDir, Path.DirectorySeparatorChar, "copy", Path.DirectorySeparatorChar, "test.ns.xml")))); Assert.IsTrue(File.Exists(Path.Combine(od.FullName, String.Concat(outputDir, Path.DirectorySeparatorChar, "copy2", Path.DirectorySeparatorChar, "test.ns.xml")))); }
public void MultipleDependencyCheck() { engine = new RenderConfigEngine(config, log); engine.Render(); Assert.IsTrue(File.Exists(Path.Combine(od.FullName, "MultipleDependencies.xml"))); XmlDocument doc = new XmlDocument(); doc.Load(Path.Combine(od.FullName, "multipledependencies.xml")); Assert.AreEqual(doc.SelectSingleNode("/configuration/Random").InnerText, "Child1"); }
public void AddAttributeWithNameSpace() { config.Configuration = "xmladdns"; engine = new RenderConfigEngine(config, log); engine.Render(); XmlDocument doc = new XmlDocument(); doc.Load(Path.Combine(od.FullName, "xmladd.ns.xml")); Assert.IsNotNull(doc.SelectSingleNode("/r:configuration/r:configSections/r:section[@value='xmladd']", GetManager(doc))); }
public void DeleteNodeWithNameSpace() { config.Configuration = "xmldeletens"; engine = new RenderConfigEngine(config, log); engine.Render(); XmlDocument doc = new XmlDocument(); doc.Load(Path.Combine(od.FullName, "xmldelete.ns.xml")); Assert.IsNull(doc.SelectSingleNode("/r:configuration/r:configSections/r:section", GetManager(doc))); }
public void AddCDATAWithoutNameSpace() { config.Configuration = "xmladd"; engine = new RenderConfigEngine(config, log); engine.Render(); XmlDocument doc = new XmlDocument(); doc.Load(Path.Combine(od.FullName, "xmladd.xml")); Assert.IsNotNull(doc.SelectSingleNode("/configuration/nhibernate/Node")); }
public void AddNodeValueWithNameSpace() { config.Configuration = "xmladdns"; engine = new RenderConfigEngine(config, log); engine.Render(); XmlDocument doc = new XmlDocument(); doc.Load(Path.Combine(od.FullName, "xmladd.ns.xml")); Assert.IsNotNull(doc.SelectSingleNode("/r:configuration/r:nhibernate", GetManager(doc)).InnerText); }
public void DeleteNodeByAttributeValueWithNameSpace() { config.Configuration = "xmldeletens"; engine = new RenderConfigEngine(config, log); engine.Render(); XmlDocument doc = new XmlDocument(); doc.Load(Path.Combine(od.FullName, "xmldelete.ns.xml")); Assert.IsNull(doc.SelectSingleNode("/r:configuration/r:nhibernate/r:add[@key='hibernate.dialect']", GetManager(doc))); }
public void UpdateAttributeWithNameSpace() { config.Configuration = "xmlupdatens"; engine = new RenderConfigEngine(config, log); engine.Render(); XmlDocument doc = new XmlDocument(); doc.Load(Path.Combine(od.FullName, "xmlupdate.ns.xml")); Assert.AreEqual(doc.SelectSingleNode("/r:configuration/r:nhibernate/r:add[@key='hibernate.dialect']", GetManager(doc)).Attributes["value"].Value, "xmlupdate"); }
public void UpdateNodeWithNameSpace() { config.Configuration = "xmlupdatens"; engine = new RenderConfigEngine(config, log); engine.Render(); XmlDocument doc = new XmlDocument(); doc.Load(Path.Combine(od.FullName, "xmlupdate.ns.xml")); Assert.AreEqual(doc.SelectSingleNode("/r:configuration/r:Random", GetManager(doc)).InnerText, "xmlupdate"); }
public void CanUseXpathWithForwardSlashData() { config.Configuration = "xpathtest"; engine = new RenderConfigEngine(config, log); engine.Render(); XmlDocument doc = new XmlDocument(); doc.Load(Path.Combine(od.FullName, "xpathtest.ns.xml")); Assert.IsNull(doc.SelectSingleNode("/r:configuration/r:nhibernate/r:add[@key='test/value']", GetManager(doc))); }
public void ExceptionOnUpdateMissingKey() { RenderConfigConfig config = GetConfigObject(); config.BreakOnNoMatch = true; config.Configuration = "inimissingkey"; IRenderConfigLogger log = new ConsoleLogger(); RenderConfigEngine engine = new RenderConfigEngine(config, log); Assert.Throws <System.Exception>(delegate { engine.Render(); }); }
public void CanReferenceInputDirectory() { config.Configuration = "inputdirectory"; config.OutputDirectory = String.Concat("testing", Path.DirectorySeparatorChar, "InputDirectory"); config.InputDirectory = "Examples"; config.BreakOnNoMatch = false; engine = new RenderConfigEngine(config, log); engine.Render(); Assert.True(File.Exists(String.Concat("testing", Path.DirectorySeparatorChar, "InputDirectory", Path.DirectorySeparatorChar, "test.xml"))); }
public void DeleteAttributeWithoutNameSpace() { config.Configuration = "xmldelete"; engine = new RenderConfigEngine(config, log); engine.Render(); XmlDocument doc = new XmlDocument(); doc.Load(Path.Combine(od.FullName, "xmldelete.xml")); Assert.IsNotNull(doc.SelectSingleNode("/configuration/nhibernate/add[@key='hibernate.connection.driver_class']")); Assert.IsNull(doc.SelectSingleNode("/configuration/nhibernate/add[@key='hibernate.connection.driver_class']").Attributes["Value"]); }
public void IncludedFullFilesAvailable() { string dir = String.Concat("testing", Path.DirectorySeparatorChar, "FullIncluded"); config.ConfigFile = String.Concat("examples", Path.DirectorySeparatorChar, "config.include.full.xml"); config.Configuration = "included"; config.OutputDirectory = dir; config.BreakOnNoMatch = false; engine = new RenderConfigEngine(config, log); engine.Render(); Assert.True(File.Exists(String.Concat(dir, Path.DirectorySeparatorChar, "included.xml"))); }
public void CanPreserveSourceStructure() { CreateTestFilesDirectory(); config.Configuration = "preservestructure"; config.OutputDirectory = String.Concat("testing", Path.DirectorySeparatorChar, "PreserveStructure"); config.PreserveSourceStructure = true; config.BreakOnNoMatch = false; engine = new RenderConfigEngine(config, log); engine.Render(); Assert.True(File.Exists(String.Concat("testing", Path.DirectorySeparatorChar, "preservestructure", Path.DirectorySeparatorChar, "TestFiles", Path.DirectorySeparatorChar, "test.xml"))); Directory.Delete(String.Concat("examples", Path.DirectorySeparatorChar, "testfiles"), true); }
public void ReplacementResultingInInvalidXmlThrowsException() { RenderConfigConfig config = new RenderConfigConfig(); config.ConfigFile = String.Concat("examples", Path.DirectorySeparatorChar, "config.xml.xml"); config.Configuration = "xmlreplacebad"; config.OutputDirectory = String.Concat("testing", Path.DirectorySeparatorChar, "xmlreplace"); config.InputDirectory = "examples"; config.BreakOnNoMatch = false; IRenderConfigLogger log = new ConsoleLogger(); RenderConfigEngine engine = new RenderConfigEngine(config, log); Assert.Throws <XmlException>(delegate { engine.Render(); }); }
public void DoesntPreserveSourceStructureWhenNotAsked() { CreateTestFilesDirectory(); string dir = String.Concat("testing", Path.DirectorySeparatorChar, "DoesntPreserveStructure"); config.Configuration = "preservestructure"; config.OutputDirectory = dir; config.BreakOnNoMatch = false; engine = new RenderConfigEngine(config, log); engine.Render(); Assert.True(!File.Exists(String.Concat(dir, Path.DirectorySeparatorChar, "TestFiles", Path.DirectorySeparatorChar, "test.xml"))); Assert.True(File.Exists(String.Concat(dir, Path.DirectorySeparatorChar, "test.xml"))); }
public void ReplaceRepeatingSubString() { RenderConfigConfig config = GetConfigObject(); config.BreakOnNoMatch = true; config.Configuration = "inireplace"; IRenderConfigLogger log = new ConsoleLogger(); RenderConfigEngine engine = new RenderConfigEngine(config, log); engine.Render(); IConfigSource ini = new IniConfigSource(Path.Combine(od.FullName, "test.ini")); Assert.IsTrue(ini.Configs["Logging"].Contains("Replacement1")); Assert.IsTrue(ini.Configs["Logging"].Contains("Replacement2")); Assert.IsTrue(ini.Configs["Logging"].Contains("Replacement3")); }
public void SettingVariables() { RenderConfigConfig config = new RenderConfigConfig(); config.ConfigFile = String.Concat("examples", Path.DirectorySeparatorChar, "config.xml.xml"); config.Configuration = "variabletest1"; config.OutputDirectory = String.Concat("testing", Path.DirectorySeparatorChar, "variabletest1"); config.InputDirectory = "examples"; config.BreakOnNoMatch = false; IRenderConfigLogger log = new ConsoleLogger(); RenderConfigEngine engine = new RenderConfigEngine(config, log); engine.Render(); XmlDocument doc = new XmlDocument(); doc.Load(String.Concat("testing", Path.DirectorySeparatorChar, "variabletest1", Path.DirectorySeparatorChar, "test.xml")); Assert.AreEqual(doc.SelectSingleNode("/configuration/Random").InnerText, "variabletest1"); }
public void ReplaceMultipleSubString() { RenderConfigConfig config = new RenderConfigConfig(); config.ConfigFile = String.Concat("examples", Path.DirectorySeparatorChar, "config.xml.xml"); config.Configuration = "xmlreplace"; config.OutputDirectory = String.Concat("testing", Path.DirectorySeparatorChar, "xmlreplace"); config.InputDirectory = "examples"; config.BreakOnNoMatch = false; IRenderConfigLogger log = new ConsoleLogger(); RenderConfigEngine engine = new RenderConfigEngine(config, log); engine.Render(); XmlDocument doc = new XmlDocument(); doc.Load(String.Concat("testing", Path.DirectorySeparatorChar, "xmlreplace", Path.DirectorySeparatorChar, "xmlreplace.xml")); Assert.IsNotNull(doc.SelectSingleNode("/configuration/ReplacementRandom")); doc.Load(String.Concat("testing", Path.DirectorySeparatorChar, "xmlreplace", Path.DirectorySeparatorChar, "xmlreplace.ns.xml")); Assert.IsNotNull(doc.SelectSingleNode("/r:configuration/r:ReplacementRandom", GetManager(doc))); }
public void CanReferenceInputDirectory() { config.Configuration = "inputdirectory"; config.OutputDirectory = String.Concat("testing",Path.DirectorySeparatorChar,"InputDirectory"); config.InputDirectory = "Examples"; config.BreakOnNoMatch = false; engine = new RenderConfigEngine(config, log); engine.Render(); Assert.True(File.Exists(String.Concat("testing",Path.DirectorySeparatorChar,"InputDirectory",Path.DirectorySeparatorChar,"test.xml"))); }
public void AddNodeValueWithNameSpace() { config.Configuration = "xmladdns"; engine = new RenderConfigEngine(config, log); engine.Render(); XmlDocument doc = new XmlDocument(); doc.Load(Path.Combine(od.FullName,"xmladd.ns.xml")); Assert.IsNotNull(doc.SelectSingleNode("/r:configuration/r:nhibernate", GetManager(doc)).InnerText); }
public void DeleteNodeByAttributeValueWithoutNameSpace() { config.Configuration = "xmldelete"; engine = new RenderConfigEngine(config, log); engine.Render(); XmlDocument doc = new XmlDocument(); doc.Load(Path.Combine(od.FullName,"xmldelete.xml")); Assert.IsNull(doc.SelectSingleNode("/configuration/nhibernate/add[@key='hibernate.dialect']")); }
public void DeleteNodeWithNameSpace() { config.Configuration = "xmldeletens"; engine = new RenderConfigEngine(config, log); engine.Render(); XmlDocument doc = new XmlDocument(); doc.Load(Path.Combine(od.FullName,"xmldelete.ns.xml")); Assert.IsNull(doc.SelectSingleNode("/r:configuration/r:configSections/r:section", GetManager(doc))); }
public void CanUseXpathWithForwardSlashData() { config.Configuration = "xpathtest"; engine = new RenderConfigEngine(config, log); engine.Render(); XmlDocument doc = new XmlDocument(); doc.Load(Path.Combine(od.FullName,"xpathtest.ns.xml")); Assert.IsNull(doc.SelectSingleNode("/r:configuration/r:nhibernate/r:add[@key='test/value']", GetManager(doc))); }
public void ExceptionOnUpdateMissingSection() { RenderConfigConfig config = GetConfigObject(); config.BreakOnNoMatch = true; config.Configuration = "inimissingsection"; IRenderConfigLogger log = new ConsoleLogger(); RenderConfigEngine engine = new RenderConfigEngine(config, log); Assert.Throws<System.Exception>(delegate { engine.Render(); }); }
public void ReplaceMultipleSubString() { RenderConfigConfig config = new RenderConfigConfig(); config.ConfigFile = String.Concat("examples",Path.DirectorySeparatorChar, "config.xml.xml"); config.Configuration = "xmlreplace"; config.OutputDirectory = String.Concat("testing",Path.DirectorySeparatorChar,"xmlreplace"); config.InputDirectory = "examples"; config.BreakOnNoMatch = false; IRenderConfigLogger log = new ConsoleLogger(); RenderConfigEngine engine = new RenderConfigEngine(config, log); engine.Render(); XmlDocument doc = new XmlDocument(); doc.Load(String.Concat("testing",Path.DirectorySeparatorChar,"xmlreplace",Path.DirectorySeparatorChar,"xmlreplace.xml")); Assert.IsNotNull(doc.SelectSingleNode("/configuration/ReplacementRandom")); doc.Load(String.Concat("testing", Path.DirectorySeparatorChar, "xmlreplace", Path.DirectorySeparatorChar, "xmlreplace.ns.xml")); Assert.IsNotNull(doc.SelectSingleNode("/r:configuration/r:ReplacementRandom", GetManager(doc))); }
public void ReplacementResultingInInvalidXmlThrowsException() { RenderConfigConfig config = new RenderConfigConfig(); config.ConfigFile = String.Concat("examples",Path.DirectorySeparatorChar, "config.xml.xml"); config.Configuration = "xmlreplacebad"; config.OutputDirectory = String.Concat("testing",Path.DirectorySeparatorChar, "xmlreplace"); config.InputDirectory = "examples"; config.BreakOnNoMatch = false; IRenderConfigLogger log = new ConsoleLogger(); RenderConfigEngine engine = new RenderConfigEngine(config, log); Assert.Throws<XmlException>(delegate {engine.Render();}); }
public void CanPreserveSourceStructure() { CreateTestFilesDirectory(); config.Configuration = "preservestructure"; config.OutputDirectory = String.Concat("testing", Path.DirectorySeparatorChar, "PreserveStructure"); config.PreserveSourceStructure = true; config.BreakOnNoMatch = false; engine = new RenderConfigEngine(config, log); engine.Render(); Assert.True(File.Exists(String.Concat("testing",Path.DirectorySeparatorChar,"preservestructure",Path.DirectorySeparatorChar,"TestFiles",Path.DirectorySeparatorChar,"test.xml"))); Directory.Delete(String.Concat("examples",Path.DirectorySeparatorChar,"testfiles"), true); }
public void DoesntPreserveSourceStructureWhenNotAsked() { CreateTestFilesDirectory(); string dir = String.Concat("testing", Path.DirectorySeparatorChar, "DoesntPreserveStructure"); config.Configuration = "preservestructure"; config.OutputDirectory = dir; config.BreakOnNoMatch = false; engine = new RenderConfigEngine(config, log); engine.Render(); Assert.True(!File.Exists(String.Concat(dir,Path.DirectorySeparatorChar,"TestFiles",Path.DirectorySeparatorChar,"test.xml"))); Assert.True(File.Exists(String.Concat(dir,Path.DirectorySeparatorChar,"test.xml"))); }
public void DeleteAttributeWithNameSpace() { config.Configuration = "xmldeletens"; engine = new RenderConfigEngine(config, log); engine.Render(); XmlDocument doc = new XmlDocument(); doc.Load(Path.Combine(od.FullName,"xmldelete.ns.xml")); Assert.IsNotNull(doc.SelectSingleNode("/r:configuration/r:nhibernate/r:add[@key='hibernate.connection.driver_class']", GetManager(doc))); Assert.IsNull(doc.SelectSingleNode("/r:configuration/r:nhibernate/r:add[@key='hibernate.connection.driver_class']", GetManager(doc)).Attributes["Value"]); }
public void AddAttributeViaAttributeXpathWithNameSpace() { config.Configuration = "xmladdns"; engine = new RenderConfigEngine(config, log); engine.Render(); XmlDocument doc = new XmlDocument(); doc.Load(Path.Combine(od.FullName,"xmladd.ns.xml")); Assert.IsNotNull(doc.SelectSingleNode("/r:configuration/r:nhibernate/r:add[@random='xmladd']", GetManager(doc))); }
public void SettingVariables() { RenderConfigConfig config = new RenderConfigConfig(); config.ConfigFile = String.Concat("examples",Path.DirectorySeparatorChar, "config.xml.xml"); config.Configuration = "variabletest1"; config.OutputDirectory = String.Concat("testing",Path.DirectorySeparatorChar, "variabletest1"); config.InputDirectory = "examples"; config.BreakOnNoMatch = false; IRenderConfigLogger log = new ConsoleLogger(); RenderConfigEngine engine = new RenderConfigEngine(config, log); engine.Render(); XmlDocument doc = new XmlDocument(); doc.Load(String.Concat("testing", Path.DirectorySeparatorChar, "variabletest1", Path.DirectorySeparatorChar, "test.xml")); Assert.AreEqual(doc.SelectSingleNode("/configuration/Random").InnerText,"variabletest1"); }
public void UpdateAttributeWithNameSpace() { config.Configuration = "xmlupdatens"; engine = new RenderConfigEngine(config, log); engine.Render(); XmlDocument doc = new XmlDocument(); doc.Load(Path.Combine(od.FullName,"xmlupdate.ns.xml")); Assert.AreEqual(doc.SelectSingleNode("/r:configuration/r:nhibernate/r:add[@key='hibernate.dialect']",GetManager(doc)).Attributes["value"].Value, "xmlupdate"); }
public void BadConfigDoesntLoad() { config.ConfigFile = String.Concat("examples",Path.DirectorySeparatorChar,"config.bad.xml"); config.Configuration = "preservestructure"; config.OutputDirectory = "blah"; config.BreakOnNoMatch = false; engine = new RenderConfigEngine(config, log); Assert.Throws<ApplicationException>(delegate { engine.Render(); }); }
/// <summary> /// Main application entry point. /// </summary> /// <param name="args">The args.</param> static void Main(string[] args) { Boolean showHelp = false; Boolean showVersion = false; //Boolean verbose = false; RenderConfigConfig config = new RenderConfigConfig(); config.DeleteOutputDirectory = false; config.CleanOutput = false; config.BreakOnNoMatch = false; config.PreserveSourceStructure = false; config.SubDirectoryEachConfiguration = false; OptionSet options = null; try { options = new OptionSet() //.Add("v|verbose", "Not yet implemented", delegate(string v) { if (v != null) verbose = true; }) .Add("?|h|help", "Show this message and exit", delegate(string v) { if (v != null) { showHelp = true; } }) .Add("f=|file=", "File containing configuration", delegate(string v) { if (v != null) { config.ConfigFile = v; } else { throw new OptionException("Missing Configuration File", "f|file"); } }) .Add("c=|configuration=", "Target configuration", delegate(string v) { if (v != null) { config.Configuration = v; } else { throw new OptionException("Missing Configuration", "c|configuration"); } }) .Add("o=|output=", "Target output directory", delegate(string v) { if (v != null) { config.OutputDirectory = v; } else { throw new OptionException("Missing Output Directory", "o|output"); } }) .Add("i=|input=", "The input directory to use as the base for all relative source file paths", delegate(string v) { if (v != null) { config.InputDirectory = v; } }) .Add("d|deleteoutput", "Delete target output directory", delegate(string v) { if (v != null) { config.DeleteOutputDirectory = true; } }) .Add("l|clean", "Clean XML output files", delegate(string v) { if (v != null) { config.CleanOutput = true; } }) .Add("b|break", "Break on no match", delegate(string v) { if (v != null) { config.BreakOnNoMatch = true; } }) .Add("p|preserve", "Preserve source directory structure when outputting", delegate(string v) { if (v != null) { config.PreserveSourceStructure = true; } }) .Add("v|version", "Output the version", delegate(string v) { if (v != null) { showVersion = true; } }) .Add("s|subdirperconfig", "Output each configuration to a sub-directory under the output directory.", delegate(string v) { if (v != null) { config.SubDirectoryEachConfiguration = true; } }); options.Parse(args); } catch (OptionException e) { System.Console.WriteLine(); System.Console.WriteLine(e.Message); System.Console.WriteLine(); options.WriteOptionDescriptions(System.Console.Out); System.Console.ResetColor(); System.Environment.Exit(1); } if (showVersion) { ReportExeAndVersion(); System.Console.ResetColor(); System.Environment.Exit(1); } if (showHelp || args.Length == 0) { ReportExeAndVersion(); System.Console.WriteLine("Renders stuff"); options.WriteOptionDescriptions(System.Console.Out); System.Console.ResetColor(); System.Environment.Exit(1); } //HACK This is not right, shouldnt NDesk.Options be hanlding this shit???? if (config.OutputDirectory == null && !config.SubDirectoryEachConfiguration) { OutputArgumentError(options, "Please provide either an output directory or specify -s for a subdirectory per configuration"); } if (config.Configuration == null) { OutputArgumentError(options, "Please provide a target configuration"); } if (config.ConfigFile == null) { OutputArgumentError(options, "Please provide a config file to parse"); } try { IRenderConfigLogger log = new ConsoleLogger(); RenderConfigEngine.RunAllConfigurations(config, log); } catch (Exception i) { System.Console.WriteLine(); System.Console.WriteLine("Encountered error: " + i.Message); System.Console.WriteLine(); } System.Console.ResetColor(); }