public Builder Load(string s)
{
Builder oBuilder = new Builder();
XmlDocument oDoc = new XmlDocument();
oDoc.LoadXml(s);
XmlNode oBuildNode = oDoc.ChildNodes[0];
for (int i = 0; i < oBuildNode.ChildNodes.Count; i++)
{
XmlNode oAction = oBuildNode.ChildNodes[i];
if (oAction.NodeType == XmlNodeType.Comment)
continue;
string sType = oAction.Attributes["type"].Value;
if (sType == "writefile")
AddActionWritefile(oBuilder, oAction);
else if (sType == "writeini")
AddActionWriteIni(oBuilder, oAction);
else if (sType == "runapplication")
AddActionRunApplication(oBuilder, oAction);
else if (sType == "compilevs")
AddActionCompileVS(oBuilder, oAction);
else if (sType == "msbuild")
AddActionMSBuild(oBuilder, oAction);
else if (sType == "copyfile")
AddActionCopyFile(oBuilder, oAction);
else if (sType == "compileinnosetup")
AddActionCompileInnoSetup(oBuilder, oAction);
else if (sType == "subversion")
AddActionSubversion(oBuilder, oAction);
else if (sType == "cleardirectory")
AddActionClearDirectory(oBuilder, oAction);
else
{
throw new Exception("Unknown build type " + sType);
}
}
return oBuilder;
}
static void Main(string[] args) { if (args.Length != 3) { System.Console.WriteLine("Wrong number of parameters passed to Builder.Console"); Environment.ExitCode = -1; return; } Settings settings = new Settings(); settings.LoadSettings(); BuildLoader loader = new BuildLoader(); Builder.Common.Builder builder = loader.Load(settings.BuildInstructions); // Run all steps. builder.StepStart = -1; builder.StepEnd = -1; builder.LoadMacros(args[0], args[1], args[2]); string result; if (!settings.ValidateSettings(builder, out result)) { System.Console.WriteLine(result); Environment.ExitCode = -1; return; } builder.LoadSettings(settings); ManualResetEvent eventStopThread= new ManualResetEvent(false); ManualResetEvent eventThreadStopped= new ManualResetEvent(false); BuildRunner runner = new BuildRunner(eventStopThread, eventThreadStopped, builder); runner.StepError+= runner_StepError; builder.MessageLog += builder_MessageLog; runner.Run(); return; }