public bool Initialize(string taskName, IDictionary <string, TaskPropertyInfo> parameterGroup, string taskBody, IBuildEngine taskFactoryLoggingHost) { var projectFileDirectory = Path.GetDirectoryName(taskFactoryLoggingHost.ProjectFileOfTaskNode); var thisAssemblyDirectory = Path.GetDirectoryName(this.GetType().Assembly.Location); _assemblyResolver.BeginResolving(thisAssemblyDirectory, projectFileDirectory); try { var engine = Ruby.CreateEngine(); _taskScriptScope = engine.CreateScope(); _taskScriptScope.ExecuteEmbeddedScript(RubyTaskScript); var rubyTaskBody = TaskBodyParser.Parse(taskBody); var scriptFile = projectFileDirectory.CombinePath(rubyTaskBody.Script).ToFullPath(); var scriptContents = _fileSystem.GetFileContent(scriptFile); _taskScriptScope.Execute(scriptContents); _taskClass = engine.Runtime.Globals.GetVariable(taskName); } catch (Exception) { _assemblyResolver.Dispose(); throw; } return(true); }
public bool Initialize(string taskName, IDictionary<string, TaskPropertyInfo> parameterGroup, string taskBody, IBuildEngine taskFactoryLoggingHost) { var projectFileDirectory = Path.GetDirectoryName(taskFactoryLoggingHost.ProjectFileOfTaskNode); var thisAssemblyDirectory = Path.GetDirectoryName(this.GetType().Assembly.Location); _assemblyResolver.BeginResolving(thisAssemblyDirectory, projectFileDirectory); try { var engine = Ruby.CreateEngine(); _taskScriptScope = engine.CreateScope(); _taskScriptScope.ExecuteEmbeddedScript(RubyTaskScript); var rubyTaskBody = TaskBodyParser.Parse(taskBody); var scriptFile = projectFileDirectory.CombinePath(rubyTaskBody.Script).ToFullPath(); var scriptContents = _fileSystem.GetFileContent(scriptFile); _taskScriptScope.Execute(scriptContents); _taskClass = engine.Runtime.Globals.GetVariable(taskName); } catch(Exception) { _assemblyResolver.Dispose(); throw; } return true; }