@@ -28,9 +28,8 @@ namespace GitReleaseManager.Core
28
28
29
29
public class GitHubProvider : IVcsProvider
30
30
{
31
- private readonly ILogger _logger = Log . ForContext < GitHubProvider > ( ) ;
32
-
33
31
private readonly Config _configuration ;
32
+ private readonly ILogger _logger = Log . ForContext < GitHubProvider > ( ) ;
34
33
private readonly IMapper _mapper ;
35
34
private GitHubClient _gitHubClient ;
36
35
@@ -41,34 +40,14 @@ public GitHubProvider(IMapper mapper, Config configuration, string userName, str
41
40
CreateClient ( userName , password , token ) ;
42
41
}
43
42
44
- public async Task < int > GetNumberOfCommitsBetween ( Milestone previousMilestone , Milestone currentMilestone , string user , string repository )
43
+ public Task < int > GetNumberOfCommitsBetween ( Milestone previousMilestone , Milestone currentMilestone , string user , string repository )
45
44
{
46
45
if ( currentMilestone is null )
47
46
{
48
47
throw new ArgumentNullException ( nameof ( currentMilestone ) ) ;
49
48
}
50
49
51
- try
52
- {
53
- if ( previousMilestone == null )
54
- {
55
- _logger . Verbose ( "Getting commit count between base '{Base}' and head '{Head}'" , "master" , currentMilestone . Title ) ;
56
- var gitHubClientRepositoryCommitsCompare = await _gitHubClient . Repository . Commit . Compare ( user , repository , "master" , currentMilestone . Title ) . ConfigureAwait ( false ) ;
57
- return gitHubClientRepositoryCommitsCompare . AheadBy ;
58
- }
59
-
60
- _logger . Verbose ( "Getting commit count between base '{Base}' and head '{Head}'" , previousMilestone . Title , "master" ) ;
61
- var compareResult = await _gitHubClient . Repository . Commit . Compare ( user , repository , previousMilestone . Title , "master" ) . ConfigureAwait ( false ) ;
62
- return compareResult . AheadBy ;
63
- }
64
- catch ( NotFoundException )
65
- {
66
- _logger . Warning ( "Unable to find tag for milestone, so commit count will be returned as zero" ) ;
67
-
68
- // If there is no tag yet the Compare will return a NotFoundException
69
- // we can safely ignore
70
- return 0 ;
71
- }
50
+ return GetNumberOfCommitsBetweenInternal ( previousMilestone , currentMilestone , user , repository ) ;
72
51
}
73
52
74
53
public async Task < List < Issue > > GetIssuesAsync ( Milestone targetMilestone )
@@ -174,27 +153,14 @@ public async Task<Release> CreateReleaseFromMilestone(string owner, string repos
174
153
return _mapper . Map < Octokit . Release , Release > ( release ) ;
175
154
}
176
155
177
- public async Task < Release > CreateReleaseFromInputFile ( string owner , string repository , string name , string inputFilePath , string targetCommitish , IList < string > assets , bool prerelease )
156
+ public Task < Release > CreateReleaseFromInputFile ( string owner , string repository , string name , string inputFilePath , string targetCommitish , IList < string > assets , bool prerelease )
178
157
{
179
158
if ( ! File . Exists ( inputFilePath ) )
180
159
{
181
160
throw new ArgumentException ( "Unable to locate input file." ) ;
182
161
}
183
162
184
- _logger . Verbose ( "Reading release notes from: '{FilePath}'" , inputFilePath ) ;
185
-
186
- var inputFileContents = File . ReadAllText ( inputFilePath ) ;
187
-
188
- var releaseUpdate = CreateNewRelease ( name , name , inputFileContents , prerelease , targetCommitish ) ;
189
-
190
- _logger . Verbose ( "Creating new release on '{Owner}/{Repository}'" , owner , repository ) ;
191
- _logger . Debug ( "{@ReleaseUpdate}" , releaseUpdate ) ;
192
-
193
- var release = await _gitHubClient . Repository . Release . Create ( owner , repository , releaseUpdate ) . ConfigureAwait ( false ) ;
194
-
195
- await AddAssets ( owner , repository , name , assets ) . ConfigureAwait ( false ) ;
196
-
197
- return _mapper . Map < Octokit . Release , Release > ( release ) ;
163
+ return CreateReleaseFromInputFileInternal ( owner , repository , name , inputFilePath , targetCommitish , assets , prerelease ) ;
198
164
}
199
165
200
166
public async Task DiscardRelease ( string owner , string repository , string name )
@@ -472,6 +438,24 @@ private async Task<bool> CommentsIncludeString(string owner, string repository,
472
438
return issueComments . Any ( c => c . Body . Contains ( comment ) ) ;
473
439
}
474
440
441
+ private async Task < Release > CreateReleaseFromInputFileInternal ( string owner , string repository , string name , string inputFilePath , string targetCommitish , IList < string > assets , bool prerelease )
442
+ {
443
+ _logger . Verbose ( "Reading release notes from: '{FilePath}'" , inputFilePath ) ;
444
+
445
+ var inputFileContents = File . ReadAllText ( inputFilePath ) ;
446
+
447
+ var releaseUpdate = CreateNewRelease ( name , name , inputFileContents , prerelease , targetCommitish ) ;
448
+
449
+ _logger . Verbose ( "Creating new release on '{Owner}/{Repository}'" , owner , repository ) ;
450
+ _logger . Debug ( "{@ReleaseUpdate}" , releaseUpdate ) ;
451
+
452
+ var release = await _gitHubClient . Repository . Release . Create ( owner , repository , releaseUpdate ) . ConfigureAwait ( false ) ;
453
+
454
+ await AddAssets ( owner , repository , name , assets ) . ConfigureAwait ( false ) ;
455
+
456
+ return _mapper . Map < Octokit . Release , Release > ( release ) ;
457
+ }
458
+
475
459
private Task < IReadOnlyList < Octokit . Issue > > GetIssuesFromMilestoneAsync ( string owner , string repository , string milestone , ItemStateFilter state = ItemStateFilter . Closed )
476
460
{
477
461
_logger . Verbose ( "Finding issues with milestone: '{Milestone}" , milestone ) ;
@@ -482,6 +466,31 @@ private async Task<bool> CommentsIncludeString(string owner, string repository,
482
466
} ) ;
483
467
}
484
468
469
+ private async Task < int > GetNumberOfCommitsBetweenInternal ( Milestone previousMilestone , Milestone currentMilestone , string user , string repository )
470
+ {
471
+ try
472
+ {
473
+ if ( previousMilestone == null )
474
+ {
475
+ _logger . Verbose ( "Getting commit count between base '{Base}' and head '{Head}'" , "master" , currentMilestone . Title ) ;
476
+ var gitHubClientRepositoryCommitsCompare = await _gitHubClient . Repository . Commit . Compare ( user , repository , "master" , currentMilestone . Title ) . ConfigureAwait ( false ) ;
477
+ return gitHubClientRepositoryCommitsCompare . AheadBy ;
478
+ }
479
+
480
+ _logger . Verbose ( "Getting commit count between base '{Base}' and head '{Head}'" , previousMilestone . Title , "master" ) ;
481
+ var compareResult = await _gitHubClient . Repository . Commit . Compare ( user , repository , previousMilestone . Title , "master" ) . ConfigureAwait ( false ) ;
482
+ return compareResult . AheadBy ;
483
+ }
484
+ catch ( NotFoundException )
485
+ {
486
+ _logger . Warning ( "Unable to find tag for milestone, so commit count will be returned as zero" ) ;
487
+
488
+ // If there is no tag yet the Compare will return a NotFoundException
489
+ // we can safely ignore
490
+ return 0 ;
491
+ }
492
+ }
493
+
485
494
private async Task < Octokit . Release > GetReleaseFromTagNameAsync ( string owner , string repository , string tagName )
486
495
{
487
496
_logger . Verbose ( "Finding release with tag name: '{TagName}'" , tagName ) ;
0 commit comments