Example #1
0
 public void RunStartupScripts(BuildOptions buildOptions, ScriptsOptions scriptsOptions)
 {
     foreach (ScriptKey scriptKey in this.startupScripts)
     {
         this.Run(scriptKey.File, buildOptions, scriptsOptions);
     }
 }
Example #2
0
 internal ScriptRunner(ScriptKey key, Script script, ScriptsOptions options, string id)
 {
     this.key       = key;
     this.script    = script;
     this.options   = options;
     this.id        = id;
     this.isRunning = false;
 }
Example #3
0
        public void Run(FileInfo file, BuildOptions buildOptions, ScriptsOptions scriptsOptions, OpenQuant.API.ScriptSettings scriptSettings)
        {
            ScriptKey key = new ScriptKey(file);

            if (this.runners.ContainsKey(key))
            {
                throw new InvalidOperationException("The script " + file.Name + " is already running");
            }
            Script script = this.Build(file, buildOptions);

            if (script == null)
            {
                return;
            }
            if (scriptSettings != null)
            {
                foreach (KeyValuePair <string, object> keyValuePair in scriptSettings)
                {
                    FieldInfo field = script.GetType().GetField(keyValuePair.Key, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.GetField);
                    if (field != (FieldInfo)null)
                    {
                        if (field.GetCustomAttributes(typeof(ParameterAttribute), true).Length > 0)
                        {
                            try
                            {
                                field.SetValue(script, keyValuePair.Value);
                            }
                            catch
                            {
                            }
                        }
                    }
                }
            }
            ScriptRunner scriptRunner = new ScriptRunner(key, script, scriptsOptions, this.scriptID.ToString());

            scriptRunner.Starting += new EventHandler(this.runner_Starting);
            scriptRunner.Started  += new EventHandler(this.runner_Started);
            scriptRunner.Stopping += new EventHandler(this.runner_Stopping);
            scriptRunner.Stopped  += new EventHandler(this.runner_Stopped);
            scriptRunner.Error    += new EventHandler <ScriptRunnerErrorEventArgs>(this.runner_Error);
            this.runners.Add(key, scriptRunner);
            scriptRunner.Start();
        }
Example #4
0
 public void Run(FileInfo file, BuildOptions buildOptions, ScriptsOptions scriptsOptions)
 {
     this.Run(file, buildOptions, scriptsOptions, null);
 }