Beispiel #1
0
        static Tuple <bool, Messages, string> RunExplicitWithResult(string scriptFilePath, string[] scriptArguments, string[] fsiArguments, bool useCache)
        {
            var stdOut = Console.Out;
            var stdErr = Console.Error;

            var sbOut     = new System.Text.StringBuilder();
            var outStream = new StringWriter(sbOut);

            Console.SetOut(outStream);
            Console.SetError(outStream);
            Tuple <bool, Messages> result;

            try
            {
                result = FSIHelper.executeBuildScriptWithArgsAndFsiArgsAndReturnMessages(
                    scriptFilePath, scriptArguments, fsiArguments, useCache);
            }
            finally
            {
                Console.SetOut(stdOut); // Now all output start going back to console window
                Console.SetError(stdErr);
                Console.Write(sbOut.ToString());
            }


            foreach (var x in result.Item2)
            {
                Console.WriteLine(x.Message);
            }

            return(Tuple.Create(result.Item1, result.Item2,
                                sbOut.ToString()
                                .Replace("Running Buildscript: " + scriptFilePath, "")
                                .Replace("\n", "").Replace("\r", "")));
        }
Beispiel #2
0
        static string RunExplicit(string scriptFilePath, string arguments, bool useCache)
        {
            var stdOut = Console.Out;

            var sbOut     = new System.Text.StringBuilder();
            var outStream = new StringWriter(sbOut);

            Console.SetOut(outStream);
            Tuple <bool, Microsoft.FSharp.Collections.FSharpList <ProcessHelper.ConsoleMessage> > result;

            try
            {
                result = FSIHelper.executeBuildScriptWithArgsAndReturnMessages(scriptFilePath, new string[] { }, useCache, false);
            }
            finally
            {
                Console.SetOut(stdOut); // Now all output start going back to console window
                Console.Write(sbOut.ToString());
            }


            if (!result.Item1)
            {
                var errors = result.Item2.Where(x => x.IsError).Select(x => x.Message);
                throw new Exception("Executing script failed. Errors: \n" + String.Join("\n", errors));
            }
            foreach (var x in result.Item2)
            {
                Console.WriteLine(x.Message);
            }
            var messages = result.Item2.Where(x => !x.IsError).Select(x => x.Message);

            return
                (sbOut.ToString()
                 .Replace("Running Buildscript: " + scriptFilePath, "")
                 .Replace("\n", "").Replace("\r", ""));
        }