public static IPullRequestSystem TfsPullRequests( this ICakeContext context, TfsPullRequestSettings settings) { context.NotNull(nameof(context)); settings.NotNull(nameof(settings)); return(new TfsPullRequestSystem(context.Log, settings)); }
public static void TfsVotePullRequest( this ICakeContext context, TfsPullRequestSettings settings, TfsPullRequestVote vote) { context.NotNull(nameof(context)); settings.NotNull(nameof(settings)); var pullRequest = new TfsPullRequestSystem(context.Log, settings); pullRequest.Vote(vote); }
/// <summary> /// Initializes a new instance of the <see cref="TfsPullRequestSystem"/> class. /// Connects to the TFS server using NTLM authentication. /// </summary> /// <param name="log">The Cake log context.</param> /// <param name="settings">Settings for accessing TFS.</param> public TfsPullRequestSystem(ICakeLog log, TfsPullRequestSettings settings) : base(log) { settings.NotNull(nameof(settings)); this.settings = settings; this.repositoryDescription = new RepositoryDescription(settings.RepositoryUrl); this.Log.Verbose( "Repository information:\n CollectionName: {0}\n CollectionUrl: {1}\n ProjectName: {2}\n RepositoryName: {3}", this.repositoryDescription.CollectionName, this.repositoryDescription.CollectionUrl, this.repositoryDescription.ProjectName, this.repositoryDescription.RepositoryName); Identity authorizedIdenity; using (var gitClient = this.CreateGitClient(out authorizedIdenity)) { this.Log.Verbose( "Authorized Identity:\n Id: {0}\n DisplayName: {1}", authorizedIdenity.Id, authorizedIdenity.DisplayName); if (settings.PullRequestId.HasValue) { this.Log.Verbose("Read pull request with ID {0}", settings.PullRequestId.Value); this.pullRequest = gitClient.GetPullRequestAsync( this.repositoryDescription.ProjectName, this.repositoryDescription.RepositoryName, settings.PullRequestId.Value).Result; } else if (!string.IsNullOrWhiteSpace(settings.SourceBranch)) { this.Log.Verbose("Read pull request for branch {0}", settings.SourceBranch); var pullRequestSearchCriteria = new GitPullRequestSearchCriteria() { Status = PullRequestStatus.Active, SourceRefName = settings.SourceBranch }; this.pullRequest = gitClient.GetPullRequestsAsync( this.repositoryDescription.ProjectName, this.repositoryDescription.RepositoryName, pullRequestSearchCriteria, top: 1).Result.SingleOrDefault(); } else { throw new ArgumentOutOfRangeException( nameof(settings), "Either PullRequestId or SourceBranch needs to be set"); } } if (this.pullRequest == null) { if (this.settings.ThrowExceptionIfPullRequestDoesNotExist) { throw new PrcaException("Could not find pull request"); } this.Log.Warning("Could not find pull request"); return; } this.Log.Verbose( "Pull request information:\n PullRequestId: {0}\n RepositoryId: {1}\n RepositoryName: {2}\n SourceRefName: {3}", this.pullRequest.PullRequestId, this.pullRequest.Repository.Id, this.pullRequest.Repository.Name, this.pullRequest.SourceRefName); }