private void EnqueueCompilation(Compilation compilation) { if (compilation.plugins.Count < 1) { //Interface.Oxide.LogDebug("EnqueueCompilation called for an empty compilation"); return; } if (!CheckCompiler()) { OnCompilerFailed($"compiler v{CompilerVersion} couldn't be started"); return; } compilation.Started(); //Interface.Oxide.LogDebug("Compiling with references: {0}", compilation.references.Keys.ToSentence()); var sourceFiles = compilation.plugins.SelectMany(plugin => plugin.IncludePaths).Distinct().Select(path => new CompilerFile(path)).ToList(); sourceFiles.AddRange(compilation.plugins.Select(plugin => new CompilerFile($"{plugin.ScriptName}.cs", plugin.ScriptSource))); //Interface.Oxide.LogDebug("Compiling files: {0}", sourceFiles.Select(f => f.Name).ToSentence()); var data = new CompilerData { OutputFile = compilation.name, SourceFiles = sourceFiles.ToArray(), ReferenceFiles = compilation.references.Values.ToArray() }; var message = new CompilerMessage { Id = compilation.id, Data = data, Type = CompilerMessageType.Compile }; if (ready) { client.PushMessage(message); } else { messageQueue.Enqueue(message); } }
private void EnqueueCompilation(Compilation compilation) { if (compilation.plugins.Count < 1) { return; } if (!this.CheckCompiler()) { this.OnCompilerFailed(string.Concat("compiler version ", PluginCompiler.CompilerVersion, " couldn't be started")); return; } compilation.Started(); List <CompilerFile> list = ( from path in compilation.plugins.SelectMany <CompilablePlugin, string>((CompilablePlugin plugin) => plugin.IncludePaths).Distinct <string>() select new CompilerFile(path)).ToList <CompilerFile>(); list.AddRange( from plugin in compilation.plugins select new CompilerFile(string.Concat(plugin.ScriptName, ".cs"), plugin.ScriptSource)); CompilerData compilerDatum = new CompilerData() { OutputFile = compilation.name, SourceFiles = list.ToArray(), ReferenceFiles = compilation.references.Values.ToArray <CompilerFile>() }; CompilerMessage compilerMessage = new CompilerMessage() { Id = compilation.id, Data = compilerDatum, Type = CompilerMessageType.Compile }; if (this.ready) { this.client.PushMessage(compilerMessage); return; } this.messageQueue.Enqueue(compilerMessage); }
private void EnqueueCompilation(Compilation compilation) { if (compilation.plugins.Count < 1) { Interface.Oxide.LogDebug("EnqueueCompilation called for an empty compilation"); return; } if (!CheckCompiler()) { OnCompilerFailed("Compiler couldn't be started."); return; } compilation.Started(); //Interface.Oxide.LogDebug("Compiling with references: " + compilation.references.Keys.ToSentence()); var source_files = compilation.plugins.SelectMany(plugin => plugin.IncludePaths).Distinct().Select(path => new CompilerFile(path)).ToList(); source_files.AddRange(compilation.plugins.Select(plugin => new CompilerFile(plugin.ScriptName + ".cs", plugin.ScriptSource))); //Interface.Oxide.LogDebug("Compiling files: " + source_files.Select(f => f.Name).ToSentence()); var data = new CompilerData { OutputFile = compilation.name, SourceFiles = source_files.ToArray(), ReferenceFiles = compilation.references.Values.ToArray() }; var message = new CompilerMessage { Id = compilation.id, Data = data, Type = CompilerMessageType.Compile }; if (ready) client.PushMessage(message); else messageQueue.Enqueue(message); }