CommitIssues(this GitHubClient appClient, string organization, string repository1, string repository2, DateTimeOffset?since, string branch = null, ItemStateFilter state = ItemStateFilter.All, DateTimeOffset?until = null) { var allRepos = appClient.Repository.GetAllForOrg(organization).ToObservable().Replay().RefCount(); return(allRepos.Select(list => list.First(repository => repository.Name == repository1)) .Zip(allRepos.Select(list => list.First(repository => repository.Name == repository2)), (repo1, repo2) => (repo1, repo2)) .Select(repoTuple => { var allIssues = appClient.Issue .GetAllForRepository(repoTuple.repo1.Id, new RepositoryIssueRequest { Since = since, State = state }).ToObservable() .SelectMany(list => list).Distinct(issue => issue.Number).ToEnumerable().OrderBy(issue => issue.Number).ToArray(); var commits = appClient.Repository.Commit.GetAll(repoTuple.repo2.Id, new CommitRequest { Since = since, Sha = branch, Until = until }) .ToObservable().SelectMany(list => list).ToEnumerable().ToArray(); var commitIssues = commits.Select(commit => { var issues = allIssues.Where(issue => new Regex($@"\#{issue.Number}\b").IsMatch(commit.Commit.Message)).ToArray(); return (commit, issues); }) .Where(_ => _.issues.Any()) .ToArray(); return (commitIssues, repoTuple); })); }
public void UpdateSettingsEnum() { State = ParseEnum <ItemStateFilter>(SelectedState); FilterBy = ParseEnum <IssueFilter>(SelectedFilterBy); ResourceType = ParseEnum <ResourceType>(SelectedResourceType); PullRequestSortBy = ParseEnum <PullRequestSort>(SelectedPullRequestSortBy); }
public async Task ForRepo_PassesState(ItemStateFilter state) { ListIssuesCommand command = new ListIssuesCommand(_gitHubClient.Object, _discoveryService.Object, _reporter.Object); command.State = state; // Act await command.OnExecuteAsync(NullConsole.Singleton); // Assert _issuesClient.Verify(client => client.GetAllForRepository(ValidOwner, ValidRepo, It.Is <RepositoryIssueRequest>(request => request.State == state)), Times.Once()); }
protected override async Task BeginProcessingAsync() { await base.BeginProcessingAsync(); if (!Since.HasValue) { ItemStateFilter = ItemStateFilter.All; var release = await GitHubClient.Repository.GetForOrg(Organization, Repository1) .SelectMany(repository => GitHubClient.Repository.Release.GetAll(repository.Id)) .Select(list => list.First(_ => !_.Draft)); Since = release.PublishedAt; WriteVerbose($"Last {Repository1} release {release.Name} was at {release.PublishedAt}"); } }
public async Task NoRepo_PassesState(ItemStateFilter state) { // Arrange _discoveryService.Setup(service => service.DiscoverInCurrentDirectory()) .Returns(() => null); ListIssuesCommand command = new ListIssuesCommand(_gitHubClient.Object, _discoveryService.Object, _reporter.Object); command.State = state; // Act await command.OnExecuteAsync(NullConsole.Singleton); // Assert _issuesClient.Verify(client => client.GetAllForCurrent(It.Is <IssueRequest>(request => request.State == state)), Times.Once()); }
public static ItemState FromItemStateFilter(this ItemStateFilter filter) { switch (filter) { case ItemStateFilter.Open: return(ItemState.Open); case ItemStateFilter.Closed: return(ItemState.Closed); case ItemStateFilter.All: return(ItemState.All); default: throw new ArgumentOutOfRangeException(nameof(filter), filter, null); } }
private static ItemStateFilter ConvertToGitHubStateFilter(PullRequestState status) { ItemStateFilter filter = ItemStateFilter.All; switch (status) { case PullRequestState.All: filter = ItemStateFilter.All; break; case PullRequestState.Closed: filter = ItemStateFilter.Closed; break; case PullRequestState.Open: filter = ItemStateFilter.Open; break; } return(filter); }
private async Task <IEnumerable <GithubPullRequest> > InternalGetPullRequestsWithFiltering(ApplicationImage applicationImage, ItemStateFilter itemStateFilter) { if (!applicationImage.SourceCode.Enabled) { throw new InvalidOperationException($"Source code settings not available or not enabled."); } var pullRequests = await _gitHubClient.PullRequest.GetAllForRepository( applicationImage.SourceCode.Github.Owner, applicationImage.SourceCode.Github.Repository, new PullRequestRequest() { State = itemStateFilter }); var pullRequestMap = pullRequests .Select(x => new GithubPullRequest( x.Id, applicationImage.SourceCode.Github.Owner, applicationImage.SourceCode.Github.Repository, x.Head.Label, x.Number, x.State.Value == ItemState.Open, x.Title, x.User.Email ?? x.User.Name ) ) .ToList(); return(pullRequestMap); }
public ProjectRequest(ItemStateFilter state) { State = state; }
IWithPullRequestOptions IWithPullRequestOptions.WithState(ItemStateFilter state) { pullRequestRequest.State = state; return(this); }
public IWithIssueOptions WithState(ItemStateFilter state) { repositoryIssueRequest.State = state; return(this); }
private Task <IReadOnlyList <Octokit.Issue> > GetIssuesFromMilestoneAsync(string owner, string repository, int milestoneNumber, ItemStateFilter state = ItemStateFilter.Closed) { _logger.Verbose("Finding issues with milestone: '{Milestone}", milestoneNumber); return(_gitHubClient.Issue.GetAllForRepository(owner, repository, new RepositoryIssueRequest { Milestone = milestoneNumber.ToString(), State = state, })); }
public static IObservable <((GitHubCommit commit, Issue[] issues)[] commitIssues, (Repository repo1, Repository repo2) repoTuple)> CommitIssues( this GitHubClient appClient, string organization, string repository1, string repository2, DateTimeOffset?since, string branch = null, ItemStateFilter state = ItemStateFilter.All, DateTimeOffset?until = null) { var allRepos = appClient.Repository.GetAllForOrg(organization).ToObservable().Replay().RefCount(); return(allRepos.Select(list => list.First(repository => repository.Name == repository1)) .Zip(allRepos.Select(list => list.First(repository => repository.Name == repository2)), (repo1, repo2) => (repo1, repo2)) .Select(repoTuple => { var allIssues = appClient.Issue.GetAllForRepository(repoTuple.repo1.Id, new RepositoryIssueRequest { Since = since, State = state }).ToObservable().SelectMany(list => list).ToEnumerable().ToArray(); var commits = appClient.Repository.Commit.GetAll(repoTuple.repo2.Id, new CommitRequest() { Since = since, Sha = branch, Until = until }).ToObservable().SelectMany(list => list).ToEnumerable().ToArray(); var commitIssues = commits.Select(commit => { var issues = allIssues.Where(issue => commit.Commit.Message.Contains($"#{issue.Number}")).ToArray(); return (commit, issues); }).ToArray(); return (commitIssues, repoTuple); })); }