Skip to content

Commit bff6463

Browse files
author
Gary Ewan Park
committed
(build) Correcting issues with CA, SC, DupFinder adn InspectCode
1 parent 2764065 commit bff6463

File tree

5 files changed

+107
-105
lines changed

5 files changed

+107
-105
lines changed

Source/GitHubReleaseManager.Cli/Options/CreateSubOptions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,6 @@ public class CreateSubOptions : BaseGitHubSubOptions
2828
public string InputFilePath { get; set; }
2929

3030
[Option('e', "pre", Required = false, HelpText = "Creates the release as a pre-release.")]
31-
public bool PreRelease { get; set; }
31+
public bool Prerelease { get; set; }
3232
}
3333
}

Source/GitHubReleaseManager.Cli/Program.cs

Lines changed: 48 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -132,11 +132,11 @@ private static async Task<int> CreateReleaseAsync(CreateSubOptions subOptions, I
132132

133133
if (string.IsNullOrEmpty(subOptions.Milestone))
134134
{
135-
await CreateReleaseFromMilestone(github, subOptions.RepositoryOwner, subOptions.RepositoryName, subOptions.Milestone, subOptions.TargetCommitish, subOptions.AssetPaths, subOptions.PreRelease, configuration);
135+
await CreateReleaseFromMilestone(github, subOptions.RepositoryOwner, subOptions.RepositoryName, subOptions.Milestone, subOptions.TargetCommitish, subOptions.AssetPaths, subOptions.Prerelease, configuration);
136136
}
137137
else
138138
{
139-
await CreateReleaseFromInputFile(github, subOptions.RepositoryOwner, subOptions.RepositoryName, subOptions.Name, subOptions.InputFilePath, subOptions.TargetCommitish, subOptions.AssetPaths, subOptions.PreRelease, configuration);
139+
await CreateReleaseFromInputFile(github, subOptions.RepositoryOwner, subOptions.RepositoryName, subOptions.Name, subOptions.InputFilePath, subOptions.TargetCommitish, subOptions.AssetPaths, subOptions.Prerelease);
140140
}
141141

142142
return 0;
@@ -227,46 +227,20 @@ private static async Task<int> ExportReleasesAsync(ExportSubOptions subOptions,
227227
}
228228
}
229229

230-
private static async Task CreateReleaseFromMilestone(GitHubClient github, string owner, string repository, string milestone, string targetCommitish, IList<string> assets, bool preRelease, Config configuration)
230+
private static async Task CreateReleaseFromMilestone(GitHubClient github, string owner, string repository, string milestone, string targetCommitish, IList<string> assets, bool prerelease, Config configuration)
231231
{
232232
var releaseNotesBuilder = new ReleaseNotesBuilder(new DefaultGitHubClient(github, owner, repository), owner, repository, milestone, configuration);
233233

234234
var result = await releaseNotesBuilder.BuildReleaseNotes();
235235

236-
var releaseUpdate = new ReleaseUpdate(milestone)
237-
{
238-
Draft = true,
239-
Body = result,
240-
Name = milestone,
241-
Prerelease = preRelease
242-
};
243-
244-
if (!string.IsNullOrEmpty(targetCommitish))
245-
{
246-
releaseUpdate.TargetCommitish = targetCommitish;
247-
}
236+
var releaseUpdate = CreateReleaseUpdate(milestone, result, prerelease, targetCommitish);
248237

249238
var release = await github.Release.Create(owner, repository, releaseUpdate);
250239

251-
foreach (var asset in assets)
252-
{
253-
if (!File.Exists(asset))
254-
{
255-
continue;
256-
}
257-
258-
var upload = new ReleaseAssetUpload
259-
{
260-
FileName = Path.GetFileName(asset),
261-
ContentType = "application/octet-stream",
262-
RawData = File.Open(asset, FileMode.Open)
263-
};
264-
265-
await github.Release.UploadAsset(release, upload);
266-
}
240+
await AddAssets(github, assets, release);
267241
}
268242

269-
private static async Task CreateReleaseFromInputFile(GitHubClient github, string owner, string repository, string name, string inputFilePath, string targetCommitish, IList<string> assets, bool preRelease, Config configuration)
243+
private static async Task CreateReleaseFromInputFile(GitHubClient github, string owner, string repository, string name, string inputFilePath, string targetCommitish, IList<string> assets, bool prerelease)
270244
{
271245
if (!File.Exists(inputFilePath))
272246
{
@@ -275,37 +249,11 @@ private static async Task CreateReleaseFromInputFile(GitHubClient github, string
275249

276250
var inputFileContents = File.ReadAllText(inputFilePath);
277251

278-
var releaseUpdate = new ReleaseUpdate(name)
279-
{
280-
Draft = true,
281-
Body = inputFileContents,
282-
Name = name,
283-
Prerelease = preRelease
284-
};
285-
286-
if (!string.IsNullOrEmpty(targetCommitish))
287-
{
288-
releaseUpdate.TargetCommitish = targetCommitish;
289-
}
252+
var releaseUpdate = CreateReleaseUpdate(name, inputFileContents, prerelease, targetCommitish);
290253

291254
var release = await github.Release.Create(owner, repository, releaseUpdate);
292255

293-
foreach (var asset in assets)
294-
{
295-
if (!File.Exists(asset))
296-
{
297-
continue;
298-
}
299-
300-
var upload = new ReleaseAssetUpload
301-
{
302-
FileName = Path.GetFileName(asset),
303-
ContentType = "application/octet-stream",
304-
RawData = File.Open(asset, FileMode.Open)
305-
};
306-
307-
await github.Release.UploadAsset(release, upload);
308-
}
256+
await AddAssets(github, assets, release);
309257
}
310258

311259
private static async Task AddAssets(GitHubClient github, string owner, string repository, string tagName, IList<string> assetPaths)
@@ -378,7 +326,46 @@ private static async Task PublishRelease(GitHubClient github, string owner, stri
378326
await github.Release.Edit(owner, repository, release.Id, releaseUpdate);
379327
}
380328

381-
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "This is required here")]
329+
private static async Task AddAssets(GitHubClient github, IList<string> assets, Release release)
330+
{
331+
foreach (var asset in assets)
332+
{
333+
if (!File.Exists(asset))
334+
{
335+
continue;
336+
}
337+
338+
var upload = new ReleaseAssetUpload
339+
{
340+
FileName = Path.GetFileName(asset),
341+
ContentType = "application/octet-stream",
342+
RawData = File.Open(asset, FileMode.Open)
343+
};
344+
345+
await github.Release.UploadAsset(release, upload);
346+
}
347+
}
348+
349+
private static ReleaseUpdate CreateReleaseUpdate(string name, string body, bool prerelease, string targetCommitish)
350+
{
351+
var releaseUpdate = new ReleaseUpdate(name)
352+
{
353+
Draft = true,
354+
Body = body,
355+
Name = name,
356+
Prerelease = prerelease
357+
};
358+
359+
if (!string.IsNullOrEmpty(targetCommitish))
360+
{
361+
releaseUpdate.TargetCommitish = targetCommitish;
362+
}
363+
364+
return releaseUpdate;
365+
}
366+
367+
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Justification = "Not required.")]
368+
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "This is required here.")]
382369
private static void ConfigureLogging(string logFilePath)
383370
{
384371
var writeActions = new List<Action<string>>
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
//-----------------------------------------------------------------------
2+
// <copyright file="AssemblyInfo.cs" company="gep13">
3+
// Copyright (c) 2015 - Present Gary Ewan Park
4+
// </copyright>
5+
//-----------------------------------------------------------------------
6+
7+
using System;
8+
using System.Reflection;
9+
using System.Resources;
10+
using System.Runtime.InteropServices;
11+
12+
[assembly: AssemblyTitle("GitHubReleaseManager.Tests")]
13+
[assembly: AssemblyProduct("GitHubReleaseManager.Tests")]
14+
[assembly: AssemblyDescription("Test Project for GitHubReleaseManager")]
15+
[assembly: AssemblyFileVersion("1.0.0.0")]
16+
[assembly: AssemblyVersion("1.0.0.0")]
17+
[assembly: AssemblyInformationalVersion("1.0.0.0")]
18+
[assembly: AssemblyConfiguration("")]
19+
[assembly: AssemblyCompany("gep13")]
20+
[assembly: AssemblyCopyright("Copyright 2015 - Gary Ewan Park")]
21+
[assembly: AssemblyTrademark("")]
22+
[assembly: AssemblyCulture("")]
23+
[assembly: NeutralResourcesLanguage("en-GB")]
24+
[assembly: CLSCompliant(false)]
25+
[assembly: ComVisible(false)]
26+
27+
[assembly: Guid("599FCFBB-3AB1-482A-AC66-B42BD29E6615")]

Source/GitHubReleaseManager.Tests/GitHubReleaseManager.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
</ItemGroup>
6060
<ItemGroup>
6161
<Compile Include="ApprovalTestConfig.cs" />
62+
<Compile Include="AssemblyInfo.cs" />
6263
<Compile Include="ClipBoardHelper.cs" />
6364
<Compile Include="FakeGitHubClient.cs" />
6465
<Compile Include="Helper.cs" />

Source/GitHubReleaseManager/ReleaseNotesExporter.cs

Lines changed: 30 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,15 @@
77
namespace GitHubReleaseManager
88
{
99
using System;
10+
using System.Globalization;
1011
using System.Text;
1112
using System.Text.RegularExpressions;
1213
using System.Threading.Tasks;
1314

1415
using GitHubReleaseManager.Configuration;
1516

17+
using Octokit;
18+
1619
public class ReleaseNotesExporter
1720
{
1821
private IGitHubClient gitHubClient;
@@ -37,28 +40,7 @@ public async Task<string> ExportReleaseNotes(string tagName)
3740
{
3841
foreach (var release in releases)
3942
{
40-
if (this.configuration.Export.IncludeCreatedDateInTitle)
41-
{
42-
stringBuilder.AppendLine(string.Format("## {0} ({1})", release.TagName, release.CreatedAt.ToString(this.configuration.Export.CreatedDateStringFormat)));
43-
}
44-
else
45-
{
46-
stringBuilder.AppendLine(string.Format("## {0}", release.TagName));
47-
}
48-
49-
stringBuilder.AppendLine(Environment.NewLine);
50-
51-
if (this.configuration.Export.PerformRegexRemoval)
52-
{
53-
var regexPattern = new Regex(this.configuration.Export.RegexText, this.configuration.Export.IsMultilineRegex ? RegexOptions.Multiline : RegexOptions.Singleline);
54-
var replacement = string.Empty;
55-
var replacedBody = regexPattern.Replace(release.Body, replacement);
56-
stringBuilder.AppendLine(replacedBody);
57-
}
58-
else
59-
{
60-
stringBuilder.AppendLine(release.Body);
61-
}
43+
this.AppendVersionReleaseNotes(stringBuilder, release);
6244
}
6345
}
6446
else
@@ -70,31 +52,36 @@ public async Task<string> ExportReleaseNotes(string tagName)
7052
{
7153
var release = await this.gitHubClient.GetSpecificRelease(tagName);
7254

73-
if (this.configuration.Export.IncludeCreatedDateInTitle)
74-
{
75-
stringBuilder.AppendLine(string.Format("## {0} ({1})", release.TagName, release.CreatedAt.ToString(this.configuration.Export.CreatedDateStringFormat)));
76-
}
77-
else
78-
{
79-
stringBuilder.AppendLine(string.Format("## {0}", release.TagName));
80-
}
55+
this.AppendVersionReleaseNotes(stringBuilder, release);
56+
}
8157

82-
stringBuilder.AppendLine(Environment.NewLine);
58+
return stringBuilder.ToString();
59+
}
8360

84-
if (this.configuration.Export.PerformRegexRemoval)
85-
{
86-
var regexPattern = new Regex(this.configuration.Export.RegexText, this.configuration.Export.IsMultilineRegex ? RegexOptions.Multiline : RegexOptions.Singleline);
87-
var replacement = string.Empty;
88-
var replacedBody = regexPattern.Replace(release.Body, replacement);
89-
stringBuilder.AppendLine(replacedBody);
90-
}
91-
else
92-
{
93-
stringBuilder.AppendLine(release.Body);
94-
}
61+
private void AppendVersionReleaseNotes(StringBuilder stringBuilder, Release release)
62+
{
63+
if (this.configuration.Export.IncludeCreatedDateInTitle)
64+
{
65+
stringBuilder.AppendLine(string.Format(CultureInfo.InvariantCulture, "## {0} ({1})", release.TagName, release.CreatedAt.ToString(this.configuration.Export.CreatedDateStringFormat, CultureInfo.InvariantCulture)));
66+
}
67+
else
68+
{
69+
stringBuilder.AppendLine(string.Format(CultureInfo.InvariantCulture, "## {0}", release.TagName));
9570
}
9671

97-
return stringBuilder.ToString();
72+
stringBuilder.AppendLine(Environment.NewLine);
73+
74+
if (this.configuration.Export.PerformRegexRemoval)
75+
{
76+
var regexPattern = new Regex(this.configuration.Export.RegexText, this.configuration.Export.IsMultilineRegex ? RegexOptions.Multiline : RegexOptions.Singleline);
77+
var replacement = string.Empty;
78+
var replacedBody = regexPattern.Replace(release.Body, replacement);
79+
stringBuilder.AppendLine(replacedBody);
80+
}
81+
else
82+
{
83+
stringBuilder.AppendLine(release.Body);
84+
}
9885
}
9986
}
10087
}

0 commit comments

Comments
 (0)