Esempio n. 1
0
        public bool TryCreateCompiler(RunRequest request, out CommonCompiler compiler)
        {
            var buildPaths = new BuildPaths(ClientDirectory, request.CurrentDirectory, SdkDirectory, request.TempDirectory);

            switch (request.Language)
            {
            case LanguageNames.CSharp:
                compiler = new CSharpCompilerServer(
                    AssemblyReferenceProvider,
                    args: request.Arguments,
                    buildPaths: buildPaths,
                    libDirectory: request.LibDirectory,
                    analyzerLoader: AnalyzerAssemblyLoader);
                return(true);

            case LanguageNames.VisualBasic:
                compiler = new VisualBasicCompilerServer(
                    AssemblyReferenceProvider,
                    args: request.Arguments,
                    buildPaths: buildPaths,
                    libDirectory: request.LibDirectory,
                    analyzerLoader: AnalyzerAssemblyLoader);
                return(true);

            default:
                compiler = null;
                return(false);
            }
        }
 public bool TryCreateCompiler(RunRequest request, out CommonCompiler compiler)
 {
     var buildPaths = new BuildPaths(ClientDirectory, request.CurrentDirectory, SdkDirectory, request.TempDirectory);
     switch (request.Language)
     {
         case LanguageNames.CSharp:
             compiler = new CSharpCompilerServer(
                 AssemblyReferenceProvider,
                 args: request.Arguments,
                 buildPaths: buildPaths,
                 libDirectory: request.LibDirectory,
                 analyzerLoader: AnalyzerAssemblyLoader);
             return true;
         case LanguageNames.VisualBasic:
             compiler = new VisualBasicCompilerServer(
                 AssemblyReferenceProvider,
                 args: request.Arguments,
                 buildPaths: buildPaths,
                 libDirectory: request.LibDirectory,
                 analyzerLoader: AnalyzerAssemblyLoader);
             return true;
         default:
             compiler = null;
             return false;
     }
 }
Esempio n. 3
0
        public bool TryCreateCompiler(RunRequest request, out CommonCompiler compiler)
        {
            switch (request.Language)
            {
            case LanguageNames.CSharp:
                compiler = new CSharpCompilerServer(
                    this,
                    args: request.Arguments,
                    clientDirectory: ClientDirectory,
                    baseDirectory: request.CurrentDirectory,
                    sdkDirectory: SdkDirectory,
                    libDirectory: request.LibDirectory,
                    analyzerLoader: AnalyzerAssemblyLoader);
                return(true);

            case LanguageNames.VisualBasic:
                compiler = new VisualBasicCompilerServer(
                    this,
                    args: request.Arguments,
                    clientDirectory: ClientDirectory,
                    baseDirectory: request.CurrentDirectory,
                    sdkDirectory: SdkDirectory,
                    libDirectory: request.LibDirectory,
                    analyzerLoader: AnalyzerAssemblyLoader);
                return(true);

            default:
                compiler = null;
                return(false);
            }
        }
Esempio n. 4
0
        public bool TryCreateCompiler(RunRequest request, BuildPaths buildPaths, [NotNullWhen(true)] out CommonCompiler?compiler)
        {
            switch (request.Language)
            {
            case LanguageNames.CSharp:
                compiler = new CSharpCompilerServer(
                    AssemblyReferenceProvider,
                    args: request.Arguments,
                    buildPaths: buildPaths,
                    libDirectory: request.LibDirectory,
                    analyzerLoader: AnalyzerAssemblyLoader);
                return(true);

            case LanguageNames.VisualBasic:
                compiler = new VisualBasicCompilerServer(
                    AssemblyReferenceProvider,
                    args: request.Arguments,
                    buildPaths: buildPaths,
                    libDirectory: request.LibDirectory,
                    analyzerLoader: AnalyzerAssemblyLoader);
                return(true);

            default:
                compiler = null;
                return(false);
            }
        }
 public bool TryCreateCompiler(RunRequest request, out CommonCompiler compiler)
 {
     switch (request.Language)
     {
         case LanguageNames.CSharp:
             compiler = new CSharpCompilerServer(
                 this,
                 args: request.Arguments,
                 clientDirectory: ClientDirectory,
                 baseDirectory: request.CurrentDirectory,
                 sdkDirectory: SdkDirectory,
                 libDirectory: request.LibDirectory,
                 analyzerLoader: AnalyzerAssemblyLoader);
             return true;
         case LanguageNames.VisualBasic:
             compiler = new VisualBasicCompilerServer(
                 this,
                 args: request.Arguments,
                 clientDirectory: ClientDirectory,
                 baseDirectory: request.CurrentDirectory,
                 sdkDirectory: SdkDirectory,
                 libDirectory: request.LibDirectory,
                 analyzerLoader: AnalyzerAssemblyLoader);
             return true;
         default:
             compiler = null;
             return false;
     }
 }
Esempio n. 6
0
        public BuildResponse RunCompilation(RunRequest request, CancellationToken cancellationToken)
        {
            Log($"CurrentDirectory = '{request.CurrentDirectory}'");
            Log($"LIB = '{request.LibDirectory}'");
            for (int i = 0; i < request.Arguments.Length; ++i)
            {
                Log($"Argument[{i}] = '{request.Arguments[i]}'");
            }

            CommonCompiler compiler;

            if (!TryCreateCompiler(request, out compiler))
            {
                // We can't do anything with a request we don't know about.
                Log($"Got request with id '{request.Language}'");
                return(new RejectedBuildResponse());
            }

            bool utf8output = compiler.Arguments.Utf8Output;

            if (!CheckAnalyzers(request.CurrentDirectory, compiler.Arguments.AnalyzerReferences))
            {
                return(new AnalyzerInconsistencyBuildResponse());
            }

            Log($"****Running {request.Language} compiler...");
            TextWriter output     = new StringWriter(CultureInfo.InvariantCulture);
            int        returnCode = compiler.Run(output, cancellationToken);

            Log($"****{request.Language} Compilation complete.\r\n****Return code: {returnCode}\r\n****Output:\r\n{output.ToString()}\r\n");
            return(new CompletedBuildResponse(returnCode, utf8output, output.ToString()));
        }
Esempio n. 7
0
        public BuildResponse RunCompilation(RunRequest request, CancellationToken cancellationToken)
        {
            Logger.Log($@"
Run Compilation
  CurrentDirectory = '{request.WorkingDirectory}
  LIB = '{request.LibDirectory}'");

            // Compiler server must be provided with a valid current directory in order to correctly
            // resolve files in the compilation
            if (string.IsNullOrEmpty(request.WorkingDirectory))
            {
                return(new RejectedBuildResponse("Missing temp directory"));
            }

            // Compiler server must be provided with a valid temporary directory in order to correctly
            // isolate signing between compilations.
            if (string.IsNullOrEmpty(request.TempDirectory))
            {
                return(new RejectedBuildResponse("Missing temp directory"));
            }

            var            buildPaths = new BuildPaths(ClientDirectory, request.WorkingDirectory, SdkDirectory, request.TempDirectory);
            CommonCompiler?compiler;

            if (!TryCreateCompiler(request, buildPaths, out compiler))
            {
                return(new RejectedBuildResponse($"Cannot create compiler for language id {request.Language}"));
            }

            bool utf8output = compiler.Arguments.Utf8Output;

            if (!CheckAnalyzers(request.WorkingDirectory, compiler.Arguments.AnalyzerReferences))
            {
                return(new AnalyzerInconsistencyBuildResponse());
            }

            Logger.Log($"Begin {request.Language} compiler run");
            TextWriter output       = new StringWriter(CultureInfo.InvariantCulture);
            int        returnCode   = compiler.Run(output, cancellationToken);
            var        outputString = output.ToString();

            Logger.Log(@$ "
End {request.Language} Compilation complete.
Return code: {returnCode}
Output:
{outputString}");
            return(new CompletedBuildResponse(returnCode, utf8output, outputString));
        }
Esempio n. 8
0
        public BuildResponse RunCompilation(RunRequest request, CancellationToken cancellationToken)
        {
            Log($"CurrentDirectory = '{request.CurrentDirectory}'");
            Log($"LIB = '{request.LibDirectory}'");
            for (int i = 0; i < request.Arguments.Length; ++i)
            {
                Log($"Argument[{i}] = '{request.Arguments[i]}'");
            }

            // Compiler server must be provided with a valid temporary directory in order to correctly
            // isolate signing between compilations.
            if (string.IsNullOrEmpty(request.TempDirectory))
            {
                Log($"Rejecting build due to missing temp directory");
                return(new RejectedBuildResponse());
            }

            CommonCompiler compiler;

            if (!TryCreateCompiler(request, out compiler))
            {
                // We can't do anything with a request we don't know about.
                Log($"Got request with id '{request.Language}'");
                return(new RejectedBuildResponse());
            }

            bool utf8output = compiler.Arguments.Utf8Output;

            if (!CheckAnalyzers(request.CurrentDirectory, compiler.Arguments.AnalyzerReferences))
            {
                return(new AnalyzerInconsistencyBuildResponse());
            }

            Log($"****Running {request.Language} compiler...");
            TextWriter output     = new StringWriter(CultureInfo.InvariantCulture);
            int        returnCode = compiler.Run(output, cancellationToken);

            Log($"****{request.Language} Compilation complete.\r\n****Return code: {returnCode}\r\n****Output:\r\n{output.ToString()}\r\n");
            return(new CompletedBuildResponse(returnCode, utf8output, output.ToString()));
        }
        /// <summary>
        /// A request to compile C# files. Unpack the arguments and current directory and invoke
        /// the compiler, then create a response with the result of compilation.
        /// </summary>
        private BuildResponse RunCompile(RunRequest request, Func<RunRequest, CommonCompiler> func,  CancellationToken cancellationToken)
        {
            _compilerServerHost.Log($"CurrentDirectory = '{request.CurrentDirectory}'");
            _compilerServerHost.Log($"LIB = '{request.LibDirectory}'");
            for (int i = 0; i < request.Arguments.Length; ++i)
            {
                _compilerServerHost.Log($"Argument[{i}] = '{request.Arguments[i]}'");
            }

            var compiler = func(request);
            bool utf8output = compiler.Arguments.Utf8Output;
            if (!_compilerServerHost.CheckAnalyzers(request.CurrentDirectory, compiler.Arguments.AnalyzerReferences))
            {
                return new AnalyzerInconsistencyBuildResponse();
            }

            _compilerServerHost.Log($"****Running {request.Language} compiler...");
            TextWriter output = new StringWriter(CultureInfo.InvariantCulture);
            int returnCode = compiler.Run(output, cancellationToken);
            _compilerServerHost.Log($"****{request.Language} Compilation complete.\r\n****Return code: {returnCode}\r\n****Output:\r\n{output.ToString()}\r\n");
            return new CompletedBuildResponse(returnCode, utf8output, output.ToString(), "");
        }
Esempio n. 10
0
        public BuildResponse RunCompilation(RunRequest request, CancellationToken cancellationToken)
        {
            Log($"CurrentDirectory = '{request.CurrentDirectory}'");
            Log($"LIB = '{request.LibDirectory}'");
            for (int i = 0; i < request.Arguments.Length; ++i)
            {
                Log($"Argument[{i}] = '{request.Arguments[i]}'");
            }

            // Compiler server must be provided with a valid temporary directory in order to correctly
            // isolate signing between compilations.
            if (string.IsNullOrEmpty(request.TempDirectory))
            {
                Log($"Rejecting build due to missing temp directory");
                return new RejectedBuildResponse();
            }

            CommonCompiler compiler;
            if (!TryCreateCompiler(request, out compiler))
            {
                // We can't do anything with a request we don't know about. 
                Log($"Got request with id '{request.Language}'");
                return new RejectedBuildResponse();
            }

            bool utf8output = compiler.Arguments.Utf8Output;
            if (!CheckAnalyzers(request.CurrentDirectory, compiler.Arguments.AnalyzerReferences))
            {
                return new AnalyzerInconsistencyBuildResponse();
            }

            Log($"****Running {request.Language} compiler...");
            TextWriter output = new StringWriter(CultureInfo.InvariantCulture);
            int returnCode = compiler.Run(output, cancellationToken);
            Log($"****{request.Language} Compilation complete.\r\n****Return code: {returnCode}\r\n****Output:\r\n{output.ToString()}\r\n");
            return new CompletedBuildResponse(returnCode, utf8output, output.ToString());
        }
Esempio n. 11
0
        public BuildResponse RunCompilation(RunRequest request, CancellationToken cancellationToken)
        {
            Log($"CurrentDirectory = '{request.CurrentDirectory}'");
            Log($"LIB = '{request.LibDirectory}'");
            for (int i = 0; i < request.Arguments.Length; ++i)
            {
                Log($"Argument[{i}] = '{request.Arguments[i]}'");
            }

            CommonCompiler compiler;
            if (!TryCreateCompiler(request, out compiler))
            {
                // We can't do anything with a request we don't know about. 
                Log($"Got request with id '{request.Language}'");
                return new RejectedBuildResponse();
            }

            bool utf8output = compiler.Arguments.Utf8Output;
            if (!CheckAnalyzers(request.CurrentDirectory, compiler.Arguments.AnalyzerReferences))
            {
                return new AnalyzerInconsistencyBuildResponse();
            }

            Log($"****Running {request.Language} compiler...");
            TextWriter output = new StringWriter(CultureInfo.InvariantCulture);
            int returnCode = compiler.Run(output, cancellationToken);
            Log($"****{request.Language} Compilation complete.\r\n****Return code: {returnCode}\r\n****Output:\r\n{output.ToString()}\r\n");
            return new CompletedBuildResponse(returnCode, utf8output, output.ToString(), "");
        }
 private CommonCompiler CreateBasicCompiler(RunRequest request)
 {
     return new VisualBasicCompilerServer(
         _compilerServerHost,
         request.Arguments,
         _clientDirectory,
         request.CurrentDirectory,
         _compilerServerHost.GetSdkDirectory(),
         request.LibDirectory,
         _compilerServerHost.AnalyzerAssemblyLoader);
 }
Esempio n. 13
0
 public BuildResponse RunCompilation(RunRequest request, CancellationToken cancellationToken)
 {
     return(null);
 }
Esempio n. 14
0
 public bool TryCreateCompiler(RunRequest request, out CommonCompiler compiler)
 {
     compiler = null;
     return(false);
 }