Skip to content

Commit e625449

Browse files
committed
(GH-17) Add support for loading generic reporter dynamically
1 parent ffc831a commit e625449

File tree

6 files changed

+77
-21
lines changed

6 files changed

+77
-21
lines changed

Cake.Issues.Recipe/Content/addins.cake

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@
88
#addin nuget:?package=Cake.Issues.InspectCode&version=0.8.0
99
#addin nuget:?package=Cake.Issues.Markdownlint&version=0.8.2
1010
#addin nuget:?package=Cake.Issues.Reporting&version=0.8.0
11-
#addin nuget:?package=Cake.Issues.Reporting.Generic&version=0.8.2
1211
#addin nuget:?package=Cake.Issues.PullRequests&version=0.8.1
1312
#addin nuget:?package=Cake.Issues.PullRequests.AppVeyor&version=0.8.0
1413
#addin nuget:?package=Cake.Issues.PullRequests.AzureDevOps&version=0.8.0
15-
#addin nuget:?package=Cake.AzureDevOps&version=0.4.4
14+
#addin nuget:?package=Cake.AzureDevOps&version=0.4.4
15+
16+
public const string CakeIssuesReportingGenericVersion = "0.8.2";

Cake.Issues.Recipe/Content/build.cake

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
#load IssuesBuildTasksDefinitions.cake
33
#load version.cake
44
#load data/data.cake
5+
#load loader/loader.cake
56
#load parameters/parameters.cake
7+
#load reporters/reporters.cake
68

79
///////////////////////////////////////////////////////////////////////////////
810
// GLOBAL VARIABLES
@@ -113,16 +115,23 @@ IssuesBuildTasks.CreateFullIssuesReportTask = Task("Create-FullIssuesReport")
113115
IssuesParameters.OutputDirectory.CombineWithFilePath(reportFileName);
114116
EnsureDirectoryExists(IssuesParameters.OutputDirectory);
115117

116-
// Create HTML report using DevExpress template.
117-
var settings =
118-
GenericIssueReportFormatSettings
119-
.FromEmbeddedTemplate(GenericIssueReportTemplate.HtmlDxDataGrid)
120-
.WithOption(HtmlDxDataGridOption.Theme, DevExtremeTheme.MaterialBlueLight);
121-
CreateIssueReport(
122-
data.Issues,
123-
GenericIssueReportFormat(settings),
124-
data.RepositoryRootDirectory,
125-
data.FullIssuesReport);
118+
var issueFormats = new List<IIssueReportFormat>();
119+
120+
if (!Context.Environment.Runtime.IsCoreClr)
121+
{
122+
Information("Creating report format using Generic Reporter");
123+
issueFormats.Add(GenericReporterData.CreateIssueFormatFromEmbeddedTemplate(Context, IssuesParameters.Reporting));
124+
}
125+
126+
foreach (var issueFormat in issueFormats)
127+
{
128+
CreateIssueReport(
129+
data.Issues,
130+
issueFormat,
131+
data.RepositoryRootDirectory,
132+
data.FullIssuesReport
133+
);
134+
}
126135
});
127136

128137
IssuesBuildTasks.PublishIssuesArtifactsTask = Task("Publish-IssuesArtifacts")

Cake.Issues.Recipe/Content/loader/AddinData.cake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ public class AddinData
126126

127127
if (method is null)
128128
{
129-
throw new NullReferenceException("No method with the specified name was found!");
129+
throw new NullReferenceException($"No method with the name '{methodName}' was found!");
130130
}
131131

132132
return method.Invoke(null, parameters);
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
public class GenericReporterData : AddinData
2+
{
3+
private static GenericReporterData _reporter = null;
4+
5+
private GenericReporterData(ICakeContext context)
6+
: base(context, "Cake.Issues.Reporting.Generic", CakeIssuesReportingGenericVersion)
7+
{
8+
_reporter = this;
9+
}
10+
11+
public static GenericReporterData GetReporter(ICakeContext context)
12+
{
13+
return _reporter ?? new GenericReporterData(context);
14+
}
15+
16+
public static IIssueReportFormat CreateIssueFormatFromEmbeddedTemplate(ICakeContext context, IssuesParametersReporting parameters)
17+
{
18+
var reporter = GetReporter(context);
19+
20+
var settings = reporter.CallStaticMethod("FromEmbeddedTemplate", "HtmlDxDataGrid");
21+
22+
var theme = "DevExtremeTheme.MaterialBlueLight"; // Should be changed to be set on IssuesParametersReporting settings class.
23+
reporter.CallStaticMethod("WithOption", settings, "HtmlDxDataGridOption.Theme", theme);
24+
25+
var issueFormat = (IIssueReportFormat)reporter.CallStaticMethod("GenericIssueReportFormat", context, settings);
26+
27+
return issueFormat;
28+
}
29+
30+
public static IIssueReportFormat CreateIssueFormatFromFilePath(ICakeContext context, IssuesParametersReporting parameters, FilePath reportPath)
31+
{
32+
var reporter = GetReporter(context);
33+
34+
var issueFormat = (IIssueReportFormat)reporter.CallStaticMethod("GenericIssueReportFormatFromFilePath", context, reportPath);
35+
36+
return issueFormat;
37+
}
38+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#load ./GenericReporterData.cake

Cake.Issues.Recipe/Content/tasks/buildservers/AzureDevOpsBuildServer.cake

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -97,15 +97,22 @@ public class AzureDevOpsBuildServer : BaseBuildServer
9797
summaryFileName += ".md";
9898
var summaryFilePath = IssuesParameters.OutputDirectory.CombineWithFilePath(summaryFileName);
9999

100-
// Create summary for Azure Pipelines using custom template.
101-
context.CreateIssueReport(
102-
data.Issues,
103-
context.GenericIssueReportFormatFromFilePath(
104-
new FilePath(sourceFilePath).GetDirectory().Combine("tasks").Combine("buildservers").CombineWithFilePath("AzurePipelineSummary.cshtml")),
105-
data.RepositoryRootDirectory,
106-
summaryFilePath);
100+
var issueFormats = new List<IIssueReportFormat>();
101+
if (!context.Environment.Runtime.IsCoreClr)
102+
{
103+
var reportPath = new FilePath(sourceFilePath).GetDirectory().Combine("tasks").Combine("buildservers").CombineWithFilePath("AzurePipelinesSummary.cshtml");
104+
issueFormats.Add(GenericReporterData.CreateIssueFormatFromFilePath(context, IssuesParameters.Reporting, reportPath));
105+
}
107106

108-
context.TFBuild().Commands.UploadTaskSummary(summaryFilePath);
107+
foreach (var issueFormat in issueFormats)
108+
{
109+
context.CreateIssueReport(
110+
data.Issues,
111+
issueFormat,
112+
data.RepositoryRootDirectory,
113+
summaryFilePath
114+
);
115+
}
109116
}
110117

111118
/// <inheritdoc />

0 commit comments

Comments
 (0)