public GenieLampConfig(GenieLamp lamp, XmlNode node) { this.lamp = lamp; macro = new MacroExpander(lamp.Macro); layers = new LayersConfig(this, node); patterns = new Patterns.Patterns(this, node); }
public GenieConfig(GenieLamp lamp, XmlNode node) { this.lamp = lamp; macro = new MacroExpander(lamp.Macro); name = Utils.Xml.GetAttrValue(node, "name"); assemblyName = Utils.Xml.GetAttrValue(node, "assembly"); typeName = Utils.Xml.GetAttrValue(node, "type"); active = Utils.Xml.GetAttrValue(node, "active", true); targetVersion = Environment.ExpandEnvironmentVariables(Utils.Xml.GetAttrValue(node, "targetVersion", TargetVersionWildcard)); macro.SetMacro("%TARGET_VERSION%", targetVersion); outDir = macro.Subst(Lamp.ExpandFileName(Utils.Xml.GetAttrValue(node, "outDir"))); outFileName = macro.Subst(Lamp.Macro.Subst(Utils.Xml.GetAttrValue(node, "outFileName"))); this.OutFileEncoding = Encoding.GetEncoding(Utils.Xml.GetAttrValue(node, "outFileEncoding", Encoding.UTF8.BodyName)); this.UpdateDatabase = Utils.Xml.GetAttrValue(node, "updateDatabase", false); configParams = new GenieConfigParams(this, lamp.QueryNode(node, "./{0}:Param")); this.AssistantConfigs = new GenieAssistantConfigs(this, node); this.Assistants = new List <IGenieAssistant>(); if (!Directory.Exists(outDir)) { Directory.CreateDirectory(outDir); } }
public static GenieLamp CreateGenieLamp(IGenieLampSpellConfig spellConfig, ILogger logger) { if (Instance == null) { Instance = new GenieLamp(spellConfig, logger); } return(Instance); }
public Genies(GenieLamp lamp, XmlNodeList nodes) { this.lamp = lamp; if (nodes == null || nodes.Count == 0) { throw new GlException("No genies to spell..."); } lamp.Logger.TraceLine("Initializing genies"); foreach (XmlNode genieNode in nodes) { GenieConfig genieConfig = new GenieConfig(lamp, genieNode); System.Type t = LoadPlugin(genieConfig.AssemblyName, genieConfig.TypeName); lamp.Logger.Trace(String.Format("{0}...", t.Name)); try { IGenie genie = Activator.CreateInstance(t) as IGenie; if (genie == null) { throw new GlException("Genie '{0}' doesn't implement {1}. Assembly: {2}. Type: {3}", genieConfig.Name, typeof(IGenie).Name, genieConfig.AssemblyName, genieConfig.TypeName); } genie.Init(genieConfig); lamp.Logger.TraceLine(String.Format("OK ({0})", genie.Name)); genies.Add(genie); // Load assistants genieConfig.Assistants.Clear(); foreach (GenieAssistantConfig assistantConfig in genieConfig.AssistantConfigs) { System.Type t2 = LoadPlugin(assistantConfig.AssemblyName, assistantConfig.TypeName); lamp.Logger.Trace(String.Format(" Assistant: {0}...", t2.Name)); IGenieAssistant genieAssistant = Activator.CreateInstance(t2) as IGenieAssistant; if (genieAssistant == null) { throw new GlException("Genie assistant '{0}' doesn't implement {1}. Assembly: {2}. Type: {3}", assistantConfig.Name, typeof(IGenieAssistant).Name, assistantConfig.AssemblyName, assistantConfig.TypeName); } genieAssistant.Init(assistantConfig, genie); genieConfig.Assistants.Add(genieAssistant); lamp.Logger.TraceLine(String.Format("OK ({0})", assistantConfig.Name)); } } catch (Exception) { lamp.Logger.TraceLine("FAILED"); throw; } } lamp.Logger.TraceLine("All genies initialized OK"); }
public GenieLampUtils(GenieLamp lamp) { this.lamp = lamp; }
public static int Main(string[] args) { Console.WriteLine("{0}\n", CmdLineParams.GetTitle()); Logger.Instance.FileName = Path.GetFileNameWithoutExtension(Environment.GetCommandLineArgs()[0]) + ".log"; CmdLineParams cmdLineParams = new CmdLineParams(); Logger.Instance.MinWarningLevel = cmdLineParams.MinWarningLevel; int errLevel = 1; try { if (cmdLineParams.Accepted) { Logger.Instance.TraceLine("Application started"); GenieLamp.Core.GenieLamp lamp = GenieLamp.Core.GenieLamp.CreateGenieLamp(cmdLineParams, Logger.Instance); try { lamp.Init(); lamp.Spell(); Logger.Instance.TraceLine("Spell finished"); if (Logger.Instance.WarningCount > 0) { Logger.Instance.ConsoleWarningColors(); Logger.Instance.TraceLine("There was(were) {0} warning(s) during the project validation", Logger.Instance.WarningCount); Logger.Instance.ConsoleResetColors(); } else { Logger.Instance.TraceLine("No warnings"); } errLevel = 0; } catch (Exception e) { lamp.DumpModel(); throw new Exception(e.Message, e); } } else { cmdLineParams.ShowUsage(); } } catch (Exception e) { Logger.Instance.Error(e.Message); #if DEBUG Logger.Instance.Echo = true; #else Logger.Instance.Echo = false; #endif Logger.Instance.TraceLine(e.ToString()); Logger.Instance.Echo = false; #if DEBUG Exception innerEx = e; while (innerEx != null) { Logger.Instance.TraceLine(innerEx.StackTrace); innerEx = innerEx.InnerException; } #endif Logger.Instance.Echo = true; Logger.Instance.ConsoleErrorColors(); Logger.Instance.Error("Spell FAILED"); Logger.Instance.ConsoleResetColors(); } Logger.Instance.Flush(); return(errLevel); }
public GenieLampLoader(GenieLamp lamp) { this.lamp = lamp; }