/// <summary> /// Execute the task. /// </summary> /// <returns><c>true</c> if the task executed successfully; otherwise, <c>false</c>.</returns> public override bool Execute() { Serilog.Log.Logger = new LoggerConfiguration() .Enrich.WithProperty(MSBuildProperties.Subcategory, nameof(Codecov)) .WriteTo.MSBuild(this) .CreateLogger(); try { var reportFiles = ReportFiles.Select(e => new ReportFile(e.ItemSpec, File.ReadAllText(e.ItemSpec))); var coverage = new Coverage(reportFiles); var envVars = new EnviornmentVariables(this); var continuousIntegrationServer = ContinuousIntegrationServerFactory.Create(envVars); envVars.LoadEnviornmentVariables(continuousIntegrationServer); var versionControlSystem = VersionControlSystemFactory.Create(this, new Terminal.Terminal()); var sourceCode = new SourceCode(versionControlSystem); var yaml = new Yaml.Yaml(sourceCode); var repositories = RepositoryFactory.Create(versionControlSystem, continuousIntegrationServer); var url = new Url.Url(new Host(this, envVars), new Route(), new Query(this, repositories, continuousIntegrationServer, yaml, envVars)); var report = new Report(this, envVars, sourceCode, coverage); var upload = new Uploads(url, report, Features); var uploadFacade = new UploadFacade(continuousIntegrationServer, versionControlSystem, yaml, coverage, envVars, url, upload); uploadFacade.LogContinuousIntegrationAndVersionControlSystem(); ReportUrl = uploadFacade.UploadReports(); return(true); } catch (Exception exception) { Log.LogError("The Codecov MSBuild task failed."); Log.LogErrorFromException(exception, showStackTrace: true); return(false); } }
private static void Uploader() { var coverage = new Coverage.Tool.Coverage(_commandLineOptions); var envVars = new EnviornmentVariables(_commandLineOptions); var continuousIntegrationServer = ContinuousIntegrationServerFactory.Create(envVars); envVars.LoadEnviornmentVariables(continuousIntegrationServer); var terminals = TerminalFactory.Create(); var versionControlSystem = VersionControlSystemFactory.Create(_commandLineOptions, terminals[TerminalName.Generic]); var sourceCode = new SourceCode(versionControlSystem); var yaml = new Yaml.Yaml(sourceCode); var repositories = RepositoryFactory.Create(versionControlSystem, continuousIntegrationServer); var url = new Url.Url(new Host(_commandLineOptions, envVars), new Route(), new Query(_commandLineOptions, repositories, continuousIntegrationServer, yaml, envVars)); var report = new Report(_commandLineOptions, envVars, sourceCode, coverage); var upload = new Uploads(url, report, _commandLineOptions.Features); var uploadFacade = new UploadFacade(continuousIntegrationServer, versionControlSystem, yaml, coverage, envVars, url, upload); uploadFacade.LogContinuousIntegrationAndVersionControlSystem(); if (_commandLineOptions.Dump) { Log.Warning("Skipping upload and dumping contents."); Log.Information("url: {GetUrl}", url.GetUrl); Log.Information(report.Reporter); return; } uploadFacade.UploadReports(); }