Exemplo n.º 1
0
 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);
 }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
 public static GenieLamp CreateGenieLamp(IGenieLampSpellConfig spellConfig, ILogger logger)
 {
     if (Instance == null)
     {
         Instance = new GenieLamp(spellConfig, logger);
     }
     return(Instance);
 }
Exemplo n.º 4
0
        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");
        }
Exemplo n.º 5
0
 public GenieLampUtils(GenieLamp lamp)
 {
     this.lamp = lamp;
 }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
 public GenieLampLoader(GenieLamp lamp)
 {
     this.lamp = lamp;
 }