Skip to content

Commit cbeaff9

Browse files
committed
(GH-2) Added StyleCop and corrected issues
- Added StyleCop - via NuGet Package - Forced StyleCop Warnings as Errors - via NuGetPackage - Corrected all identified StyleCop Errors - Added Settings.StyleCop file for overriding a select few rules
1 parent de33263 commit cbeaff9

19 files changed

+358
-190
lines changed

src/App/AssemblyInfo.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1-
using System.Reflection;
1+
//-----------------------------------------------------------------------
2+
// <copyright file="AssemblyInfo.cs" company="gep13">
3+
// Copyright (c) gep13. All rights reserved.
4+
// </copyright>
5+
//-----------------------------------------------------------------------
6+
7+
using System.Reflection;
28

39
[assembly: AssemblyCompany("Particular")]

src/App/CommonSubOptions.cs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
//-----------------------------------------------------------------------
2+
// <copyright file="CommonSubOptions.cs" company="gep13">
3+
// Copyright (c) gep13. All rights reserved.
4+
// </copyright>
5+
//-----------------------------------------------------------------------
6+
7+
namespace ReleaseNotesCompiler.CLI
8+
{
9+
using CommandLine;
10+
using Octokit;
11+
12+
public abstract class CommonSubOptions
13+
{
14+
[Option('u', "username", HelpText = "The username to access GitHub with.", Required = true)]
15+
public string Username { get; set; }
16+
[Option('p', "password", HelpText = "The password to access GitHub with.", Required = true)]
17+
public string Password { get; set; }
18+
[Option('o', "owner", HelpText = "The owner of the repository.", Required = true)]
19+
public string RepositoryOwner { get; set; }
20+
[Option('r', "repository", HelpText = "The name of the repository.", Required = true)]
21+
public string RepositoryName { get; set; }
22+
[Option('m', "milestone", HelpText = "The milestone to use.", Required = true)]
23+
public string Milestone { get; set; }
24+
25+
public GitHubClient CreateGitHubClient()
26+
{
27+
var creds = new Credentials(this.Username, this.Password);
28+
var github = new GitHubClient(new ProductHeaderValue("ReleaseNotesCompiler")) { Credentials = creds };
29+
return github;
30+
}
31+
}
32+
}

src/App/CreateSubOptions.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
//-----------------------------------------------------------------------
2+
// <copyright file="CreateSubOptions.cs" company="gep13">
3+
// Copyright (c) gep13. All rights reserved.
4+
// </copyright>
5+
//-----------------------------------------------------------------------
6+
7+
namespace ReleaseNotesCompiler.CLI
8+
{
9+
using CommandLine;
10+
11+
public class CreateSubOptions : CommonSubOptions
12+
{
13+
[Option('a', "asset", HelpText = "Path to the file to include in the release.", Required = false)]
14+
public string AssetPath { get; set; }
15+
16+
[Option('t', "targetcommitish", HelpText = "The commit to tag. Can be a branch or SHA. Defaults to repo's default branch.", Required = false)]
17+
public string TargetCommitish { get; set; }
18+
}
19+
}

src/App/Options.cs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
//-----------------------------------------------------------------------
2+
// <copyright file="Options.cs" company="gep13">
3+
// Copyright (c) gep13. All rights reserved.
4+
// </copyright>
5+
//-----------------------------------------------------------------------
6+
7+
namespace ReleaseNotesCompiler.CLI
8+
{
9+
using CommandLine;
10+
using CommandLine.Text;
11+
12+
public class Options
13+
{
14+
[VerbOption("create", HelpText = "Creates a draft release notes from a milestone.")]
15+
public CreateSubOptions CreateVerb { get; set; }
16+
17+
[VerbOption("publish", HelpText = "Publishes the release notes and closes the milestone.")]
18+
public PublishSubOptions PublishVerb { get; set; }
19+
20+
[HelpVerbOption]
21+
public string DoHelpForVerb(string verbName)
22+
{
23+
return HelpText.AutoBuild(this, verbName);
24+
}
25+
}
26+
}

src/App/Program.cs

Lines changed: 33 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
1-
namespace ReleaseNotesCompiler.CLI
1+
//-----------------------------------------------------------------------
2+
// <copyright file="Program.cs" company="gep13">
3+
// Copyright (c) gep13. All rights reserved.
4+
// </copyright>
5+
//-----------------------------------------------------------------------
6+
7+
namespace ReleaseNotesCompiler.CLI
28
{
39
using System;
410
using System.IO;
@@ -9,88 +15,37 @@
915
using Octokit;
1016
using FileMode = System.IO.FileMode;
1117

12-
abstract class CommonSubOptions
13-
{
14-
[Option('u', "username", HelpText = "The username to access GitHub with.", Required = true)]
15-
public string Username { get; set; }
16-
17-
[Option('p', "password", HelpText = "The password to access GitHub with.", Required = true)]
18-
public string Password { get; set; }
19-
20-
[Option('o', "owner", HelpText = "The owner of the repository.", Required = true)]
21-
public string RepositoryOwner { get; set; }
22-
23-
[Option('r', "repository", HelpText = "The name of the repository.", Required = true)]
24-
public string RepositoryName { get; set; }
25-
26-
[Option('m', "milestone", HelpText = "The milestone to use.", Required = true)]
27-
public string Milestone { get; set; }
28-
29-
public GitHubClient CreateGitHubClient()
30-
{
31-
var creds = new Credentials(Username, Password);
32-
var github = new GitHubClient(new ProductHeaderValue("ReleaseNotesCompiler")) { Credentials = creds };
33-
34-
return github;
35-
}
36-
}
37-
38-
class CreateSubOptions : CommonSubOptions
39-
{
40-
[Option('a', "asset", HelpText = "Path to the file to include in the release.", Required = false)]
41-
public string AssetPath { get; set; }
42-
43-
[Option('t', "targetcommitish", HelpText = "The commit to tag. Can be a branch or SHA. Defaults to repo's default branch.", Required = false)]
44-
public string TargetCommitish { get; set; }
45-
}
46-
47-
class PublishSubOptions : CommonSubOptions
48-
{
49-
}
50-
51-
class Options
18+
public class Program
5219
{
53-
[VerbOption("create", HelpText = "Creates a draft release notes from a milestone.")]
54-
public CreateSubOptions CreateVerb { get; set; }
55-
56-
[VerbOption("publish", HelpText = "Publishes the release notes and closes the milestone.")]
57-
public PublishSubOptions PublishVerb { get; set; }
58-
59-
[HelpVerbOption]
60-
public string DoHelpForVerb(string verbName)
61-
{
62-
return HelpText.AutoBuild(this, verbName);
63-
}
64-
}
65-
66-
class Program
67-
{
68-
static int Main(string[] args)
20+
private static int Main(string[] args)
6921
{
7022
var options = new Options();
7123

7224
var result = 1;
7325

74-
if (!Parser.Default.ParseArgumentsStrict(args, options, (verb, subOptions) =>
75-
{
76-
if (verb == "create")
77-
{
78-
result = CreateReleaseAsync((CreateSubOptions)subOptions).Result;
79-
}
80-
81-
if (verb == "publish")
26+
if (!Parser.Default.ParseArgumentsStrict(
27+
args,
28+
options,
29+
(verb, subOptions) =>
8230
{
83-
result = PublishReleaseAsync((PublishSubOptions)subOptions).Result;
84-
}
85-
}))
31+
if (verb == "create")
32+
{
33+
result = CreateReleaseAsync((CreateSubOptions)subOptions).Result;
34+
}
35+
36+
if (verb == "publish")
37+
{
38+
result = PublishReleaseAsync((PublishSubOptions)subOptions).Result;
39+
}
40+
}))
8641
{
8742
return 1;
8843
}
8944

9045
return result;
9146
}
9247

93-
static async Task<int> CreateReleaseAsync(CreateSubOptions options)
48+
private static async Task<int> CreateReleaseAsync(CreateSubOptions options)
9449
{
9550
try
9651
{
@@ -108,7 +63,7 @@ static async Task<int> CreateReleaseAsync(CreateSubOptions options)
10863
}
10964
}
11065

111-
static async Task<int> PublishReleaseAsync(PublishSubOptions options)
66+
private static async Task<int> PublishReleaseAsync(PublishSubOptions options)
11267
{
11368
try
11469
{
@@ -141,7 +96,9 @@ private static async Task CreateRelease(GitHubClient github, string owner, strin
14196
Name = milestone
14297
};
14398
if (!string.IsNullOrEmpty(targetCommitish))
99+
{
144100
releaseUpdate.TargetCommitish = targetCommitish;
101+
}
145102

146103
var release = await github.Release.Create(owner, repository, releaseUpdate);
147104

@@ -158,8 +115,11 @@ private static async Task CloseMilestone(GitHubClient github, string owner, stri
158115
var milestoneClient = github.Issue.Milestone;
159116
var openMilestones = await milestoneClient.GetForRepository(owner, repository, new MilestoneRequest { State = ItemState.Open });
160117
var milestone = openMilestones.FirstOrDefault(m => m.Title == milestoneTitle);
118+
161119
if (milestone == null)
120+
{
162121
return;
122+
}
163123

164124
await milestoneClient.Update(owner, repository, milestone.Number, new MilestoneUpdate { State = ItemState.Closed });
165125
}
@@ -168,8 +128,11 @@ private static async Task PublishRelease(GitHubClient github, string owner, stri
168128
{
169129
var releases = await github.Release.GetAll(owner, repository);
170130
var release = releases.FirstOrDefault(r => r.Name == milestone);
131+
171132
if (release == null)
133+
{
172134
return;
135+
}
173136

174137
var releaseUpdate = new ReleaseUpdate(milestone)
175138
{

src/App/PublishSubOptions.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
//-----------------------------------------------------------------------
2+
// <copyright file="PublishSubOptions.cs" company="gep13">
3+
// Copyright (c) gep13. All rights reserved.
4+
// </copyright>
5+
//-----------------------------------------------------------------------
6+
7+
namespace ReleaseNotesCompiler.CLI
8+
{
9+
public class PublishSubOptions : CommonSubOptions
10+
{
11+
}
12+
}

src/App/ReleaseNotesCompiler.CLI.csproj

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<AssemblyName>ReleaseNotesCompiler.CLI</AssemblyName>
1212
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
1313
<FileAlignment>512</FileAlignment>
14-
<NuGetPackageImportStamp>b30cc866</NuGetPackageImportStamp>
14+
<NuGetPackageImportStamp>eb66298a</NuGetPackageImportStamp>
1515
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
1616
<RestorePackages>true</RestorePackages>
1717
</PropertyGroup>
@@ -52,7 +52,11 @@
5252
</ItemGroup>
5353
<ItemGroup>
5454
<Compile Include="AssemblyInfo.cs" />
55+
<Compile Include="CommonSubOptions.cs" />
56+
<Compile Include="CreateSubOptions.cs" />
57+
<Compile Include="Options.cs" />
5558
<Compile Include="Program.cs" />
59+
<Compile Include="PublishSubOptions.cs" />
5660
</ItemGroup>
5761
<ItemGroup>
5862
<None Include="packages.config">
@@ -76,6 +80,8 @@
7680
<Error Condition="!Exists('..\packages\GitVersionTask.1.2.0\Build\GitVersionTask.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\GitVersionTask.1.2.0\Build\GitVersionTask.targets'))" />
7781
<Error Condition="!Exists('..\packages\NuGetPackager.0.1.3\build\NuGetPackager.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NuGetPackager.0.1.3\build\NuGetPackager.targets'))" />
7882
<Error Condition="!Exists('..\packages\Fody.1.26.1\build\Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Fody.1.26.1\build\Fody.targets'))" />
83+
<Error Condition="!Exists('..\packages\StyleCop.MSBuild.4.7.49.1\build\StyleCop.MSBuild.Targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\StyleCop.MSBuild.4.7.49.1\build\StyleCop.MSBuild.Targets'))" />
84+
<Error Condition="!Exists('..\packages\StyleCop.Error.MSBuild.1.0.0\build\StyleCop.Error.MSBuild.Targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\StyleCop.Error.MSBuild.1.0.0\build\StyleCop.Error.MSBuild.Targets'))" />
7985
</Target>
8086
<UsingTask TaskName="CosturaCleanup" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll" TaskFactory="CodeTaskFactory">
8187
<ParameterGroup>
@@ -116,4 +122,6 @@ foreach (var item in filesToCleanup)
116122
<Import Project="..\packages\GitVersionTask.1.2.0\Build\GitVersionTask.targets" Condition="Exists('..\packages\GitVersionTask.1.2.0\Build\GitVersionTask.targets')" />
117123
<Import Project="..\packages\NuGetPackager.0.1.3\build\NuGetPackager.targets" Condition="Exists('..\packages\NuGetPackager.0.1.3\build\NuGetPackager.targets')" />
118124
<Import Project="..\packages\Fody.1.26.1\build\Fody.targets" Condition="Exists('..\packages\Fody.1.26.1\build\Fody.targets')" />
125+
<Import Project="..\packages\StyleCop.MSBuild.4.7.49.1\build\StyleCop.MSBuild.Targets" Condition="Exists('..\packages\StyleCop.MSBuild.4.7.49.1\build\StyleCop.MSBuild.Targets')" />
126+
<Import Project="..\packages\StyleCop.Error.MSBuild.1.0.0\build\StyleCop.Error.MSBuild.Targets" Condition="Exists('..\packages\StyleCop.Error.MSBuild.1.0.0\build\StyleCop.Error.MSBuild.Targets')" />
119127
</Project>

src/App/packages.config

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,6 @@
66
<package id="GitVersionTask" version="1.2.0" targetFramework="net45" developmentDependency="true" />
77
<package id="NuGetPackager" version="0.1.3" targetFramework="net45" />
88
<package id="Octokit" version="0.4.1" targetFramework="net45" />
9+
<package id="StyleCop.Error.MSBuild" version="1.0.0" targetFramework="net45" />
10+
<package id="StyleCop.MSBuild" version="4.7.49.1" targetFramework="net45" developmentDependency="true" />
911
</packages>

src/Compiler/AssemblyInfo.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
1-
using System.Reflection;
1+
//-----------------------------------------------------------------------
2+
// <copyright file="AssemblyInfo.cs" company="gep13">
3+
// Copyright (c) gep13. All rights reserved.
4+
// </copyright>
5+
//-----------------------------------------------------------------------
6+
7+
using System.Reflection;
28

39
[assembly: AssemblyTitle("ReleaseNotesCompiler")]
410
[assembly: AssemblyProduct("ReleaseNotesCompiler")]

0 commit comments

Comments
 (0)