Beispiel #1
0
        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);
        }
Beispiel #3
0
 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);
 }