public void WriteStdHeader(IGenie genie)
 {
     WriteCommentLine("{0} ({1})", this.Lamp.GetTitle(), this.Lamp.Version);
     WriteCommentLine("{0} ({1})", genie.Name, genie.Version);
     WriteCommentLine("Starter application ({0})", System.Reflection.Assembly.GetEntryAssembly().GetName().Version);
     WriteCommentLine("This file was automatically generated at {0:yyyy-MM-dd HH:mm:ss}", DateTime.Now);
     WriteCommentLine("Do not modify it manually.");
     WriteLine();
 }
Beispiel #2
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");
        }
 public void Init(IGenieAssistantConfig config, IGenie master)
 {
     this.Config  = config;
     this.Master  = master;
     this.OutFile = config.Params.ParamByName("outFile", true).Value;
 }