Example #1
0
        static int Main(string[] _args)
        {
            CommandLineArgs args = CommandLineArgumentParser.Parse(_args);

            var host = new CakeHost();

            host.UseContext <BuildContext>();
            host.ConfigureServices((config) =>
            {
                config.AddSingleton(args);
            }
                                   );
            // Needed when using Visual Studio built-in code coverage tools
            host.InstallTool(new Uri("nuget:?package=Microsoft.CodeCoverage&version=17.0.0"));

            // Needed when using .ReportGenerator(...) call
            host.InstallTool(new Uri("nuget:?package=ReportGenerator&version=5.0.0"));

            // Needed for uploading coverage test result to coveralls.io
            host.InstallTool(new Uri("nuget:?package=coveralls.io&version=1.4.2"));
            //host.InstallTool(new Uri("nuget:?package=coveralls.io&version=1.1.86"));

            // Can be also installed globally
            // dotnet tool install --global coverlet.console --version 3.1.0
            host.InstallTool(new Uri("dotnet:?package=coverlet.console&version=3.1.0"));
            host.InstallTool(new Uri("nuget:?package=NUnit.ConsoleRunner&version=3.13.0"));
            //host.InstallTool(new Uri("nuget:?package=coveralls.io&version=1.1.86"));
            //host.InstallTool(new Uri("nuget:?package=ReportGenerator&version=5.0.0"));
            return(host.Run(args.GetCakeArgs()));
        }
Example #2
0
        public CakeHostFixture()
        {
            Host        = new CakeHost();
            Environment = FakeEnvironment.CreateUnixEnvironment();
            Console     = new FakeConsole();
            Log         = Substitute.For <ICakeLog>();
            Installer   = Substitute.For <IToolInstaller>();

            FileSystem = new FakeFileSystem(Environment);
            FileSystem.CreateDirectory("/Working");
        }
Example #3
0
        public static int TryRunCake(string[] args)
        {
            DirectoryPath testDir  = new DirectoryPath(TestContext.CurrentContext.TestDirectory);
            DirectoryPath testRoot = testDir.Combine(
                new DirectoryPath(
                    "../" + // app
                    "../" + // Debug
                    ".."    // bin
                    )
                );

            int exitCode = new CakeHost()
                           .UseWorkingDirectory(testRoot)
                           .AddAssembly(typeof(CakeFrostingRunner).Assembly)
                           .Run(args);

            return(exitCode);
        }
Example #4
0
        static int Main(string[] _args)
        {
            var host = new CakeHost();

            host.UseContext <BuildContext>();
            //host.InstallTool(new Uri("dotnet:?package=coverlet.console&version=3.1.0"));
            // Needed when using Visual Studio built-in code coverage tools
            host.InstallTool(new Uri("nuget:?package=Microsoft.CodeCoverage&version=17.0.0"));
            // Needed when using .ReportGenerator(...) call
            host.InstallTool(new Uri("nuget:?package=ReportGenerator&version=5.0.0"));
            List <String> args = _args.ToList();

            if (args.Contains("--show"))
            {
                args.Remove("--show");
                args.Add("--Settings_ShowProcessCommandLine");
                args.Add("true");
            }

            return(host.Run(args.ToArray()));
        }
Example #5
0
        public static string RunTask(string globString, CakeLicenseHeaderUpdaterSettings settings)
        {
            List <string> arguments = new List <string>
            {
                $@"--target=""{TaskRunner.TaskName}""",
                $@"--files=""{globString}""",
                // Need the "my_" in front because otherwise Cake things its the dry run for *it*
                // not for us.
                $@"--my_{nameof( CakeLicenseHeaderUpdaterSettings.DryRun )}=""{settings.DryRun}"""
            };

            if (string.IsNullOrEmpty(settings.LicenseString) == false)
            {
                arguments.Add(
                    $@"--{nameof( CakeLicenseHeaderUpdaterSettings.LicenseString )}=""{settings.LicenseString}"""
                    );
            }

            if (settings.OldHeaderRegexPatterns.Count > TaskRunner.MaximumRegexes)
            {
                throw new ArgumentException(
                          $"{nameof( CakeLicenseHeaderUpdaterSettings.OldHeaderRegexPatterns )} can not contain more than {TaskRunner.MaximumRegexes} elements"
                          );
            }

            for (int i = 1; i <= settings.OldHeaderRegexPatterns.Count; ++i)
            {
                string argName = $"{nameof( CakeLicenseHeaderUpdaterSettings.OldHeaderRegexPatterns )}_{i}";
                arguments.Add($@"--{argName}=""{settings.OldHeaderRegexPatterns[i - 1]}""");
            }

            StringBuilder builder = new StringBuilder();

            arguments.ForEach(a => builder.Append(a + ", "));
            Console.WriteLine("Sending arguments: " + builder);
            Console.WriteLine();

            int    exitCode;
            string stdOut;

            using (StringWriter writer = new StringWriter())
            {
                var oldCout = Console.Out;
                try
                {
                    // Each time we write to stdout, capture it for processing later.
                    // We'll put it back in the finally block.

                    Console.SetOut(writer);

                    var host = new CakeHost();
                    host.AddAssembly(typeof(TaskMain).Assembly);
                    exitCode = host.Run(arguments.ToArray());
                    stdOut   = writer.ToString();
                }
                finally
                {
                    Console.SetOut(oldCout);
                }
            }

            Console.WriteLine("---- Start STDOUT From Cake.Frosting ----");
            Console.WriteLine(stdOut);
            Console.WriteLine("---- End STDOUT From Cake.Frosting ----");

            Assert.AreEqual(0, exitCode);

            return(stdOut);
        }