Skip to content

Commit fc01fcc

Browse files
committed
(#99) Add SkipPrereleases option
This will allow the exclusion of pre-releases from the generated markdown file. By default, all releases will be included.
1 parent 7ee1049 commit fc01fcc

File tree

5 files changed

+17
-6
lines changed

5 files changed

+17
-6
lines changed

src/GitReleaseManager.Core/IVcsService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public interface IVcsService
1414

1515
Task AddAssetsAsync(string owner, string repository, string tagName, IList<string> assets);
1616

17-
Task<string> ExportReleasesAsync(string owner, string repository, string tagName);
17+
Task<string> ExportReleasesAsync(string owner, string repository, string tagName, bool skipPrereleases);
1818

1919
Task CloseMilestoneAsync(string owner, string repository, string milestoneTitle);
2020

src/GitReleaseManager.Core/Options/ExportSubOptions.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,8 @@ public class ExportSubOptions : BaseVcsOptions
1010

1111
[Option('t', "tagName", HelpText = "The name of the release (Typically this is the generated SemVer Version Number).", Required = false)]
1212
public string TagName { get; set; }
13+
14+
[Option("skipPrereleases", HelpText = "Should pre-release releases be ignored when generating release notes? Defaults to false.", Required = false)]
15+
public bool SkipPrereleases { get; set; }
1316
}
1417
}

src/GitReleaseManager.Core/Provider/GitHubProvider.cs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ public Task<Release> GetReleaseAsync(string owner, string repository, string tag
260260
});
261261
}
262262

263-
public Task<IEnumerable<Release>> GetReleasesAsync(string owner, string repository)
263+
public Task<IEnumerable<Release>> GetReleasesAsync(string owner, string repository, bool skipPrereleases)
264264
{
265265
return ExecuteAsync(async () =>
266266
{
@@ -273,7 +273,15 @@ public Task<IEnumerable<Release>> GetReleasesAsync(string owner, string reposito
273273
var options = GetApiOptions(startPage);
274274
results = await _gitHubClient.Repository.Release.GetAll(owner, repository, options).ConfigureAwait(false);
275275

276-
releases.AddRange(results);
276+
if (skipPrereleases)
277+
{
278+
releases.AddRange(results.Where(r => !r.Prerelease));
279+
}
280+
else
281+
{
282+
releases.AddRange(results);
283+
}
284+
277285
startPage++;
278286
}
279287
while (results.Count == PAGE_SIZE);

src/GitReleaseManager.Core/Provider/IVcsProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public interface IVcsProvider
3838

3939
Task<Release> GetReleaseAsync(string owner, string repository, string tagName);
4040

41-
Task<IEnumerable<Release>> GetReleasesAsync(string owner, string repository);
41+
Task<IEnumerable<Release>> GetReleasesAsync(string owner, string repository, bool skipPrereleases);
4242

4343
Task PublishReleaseAsync(string owner, string repository, string tagName, int releaseId);
4444

src/GitReleaseManager.Core/VcsService.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,14 +204,14 @@ public async Task AddAssetsAsync(string owner, string repository, string tagName
204204
}
205205
}
206206

207-
public async Task<string> ExportReleasesAsync(string owner, string repository, string tagName)
207+
public async Task<string> ExportReleasesAsync(string owner, string repository, string tagName, bool skipPrereleases)
208208
{
209209
var releases = Enumerable.Empty<Release>();
210210

211211
if (string.IsNullOrWhiteSpace(tagName))
212212
{
213213
_logger.Verbose("Finding all releases on '{Owner}/{Repository}'", owner, repository);
214-
releases = await _vcsProvider.GetReleasesAsync(owner, repository).ConfigureAwait(false);
214+
releases = await _vcsProvider.GetReleasesAsync(owner, repository, skipPrereleases).ConfigureAwait(false);
215215
}
216216
else
217217
{

0 commit comments

Comments
 (0)