public async Task <Release> CreateReleaseFromMilestone(string owner, string repository, string milestone, string releaseName, string targetCommitish, IList <string> assets, bool prerelease) { var release = await GetReleaseFromTagNameAsync(owner, repository, milestone).ConfigureAwait(false); var releaseNotesBuilder = new ReleaseNotesBuilder(this, owner, repository, milestone, _configuration); var result = await releaseNotesBuilder.BuildReleaseNotes().ConfigureAwait(false); if (release == null) { var releaseUpdate = CreateNewRelease(releaseName, milestone, result, prerelease, targetCommitish); _logger.Verbose("Creating new release on '{Owner}/{Repository}'", owner, repository); _logger.Debug("{@ReleaseUpdate}", releaseUpdate); release = await _gitHubClient.Repository.Release.Create(owner, repository, releaseUpdate).ConfigureAwait(false); } else { _logger.Warning("A release for milestone {Milestone} already exists, and will be updated", milestone); if (!release.Draft) { throw new InvalidOperationException("Release is not in draft state, so not updating."); } var releaseUpdate = release.ToUpdate(); releaseUpdate.Body = result; _logger.Verbose("Updating release {Milestone} on '{Owner}/{Repository}'", milestone, owner, repository); _logger.Debug("{@ReleaseUpdate}", releaseUpdate); await _gitHubClient.Repository.Release.Edit(owner, repository, release.Id, releaseUpdate).ConfigureAwait(false); } await AddAssets(owner, repository, milestone, assets).ConfigureAwait(false); return(_mapper.Map <Octokit.Release, Release>(release)); }
public async void SingleMilestone3() { var gitHubClient = ClientBuilder.Build(); var fileSystem = new FileSystem(); var currentDirectory = Environment.CurrentDirectory; var configuration = ConfigurationProvider.Provide(currentDirectory, fileSystem); var releaseNotesBuilder = new ReleaseNotesBuilder(new DefaultGitHubClient(gitHubClient, "Chocolatey", "ChocolateyGUI"), "Chocolatey", "ChocolateyGUI", "0.13.0", configuration); var result = await releaseNotesBuilder.BuildReleaseNotes(); Debug.WriteLine(result); ClipBoardHelper.SetClipboard(result); }
private static async Task CreateReleaseFromMilestone(GitHubClient github, string owner, string repository, string milestone, string targetCommitish, IList<string> assets, bool prerelease, Config configuration) { var releaseNotesBuilder = new ReleaseNotesBuilder(new DefaultGitHubClient(github, owner, repository), owner, repository, milestone, configuration); var result = await releaseNotesBuilder.BuildReleaseNotes(); var releaseUpdate = CreateNewRelease(milestone, result, prerelease, targetCommitish); var release = await github.Release.Create(owner, repository, releaseUpdate); await AddAssets(github, assets, release); }
private static void AcceptTest(int commits, params Issue[] issues) { var fakeClient = new FakeGitHubClient(); var fileSystem = new FileSystem(); var currentDirectory = Environment.CurrentDirectory; var configuration = ConfigurationProvider.Provide(currentDirectory, fileSystem); fakeClient.Milestones.Add(CreateMilestone("1.2.3")); fakeClient.NumberOfCommits = commits; foreach (var issue in issues) { fakeClient.Issues.Add(issue); } var builder = new ReleaseNotesBuilder(fakeClient, "TestUser", "FakeRepository", "1.2.3", configuration); var notes = builder.BuildReleaseNotes().Result; Approvals.Verify(notes); }