void UpdatePrState(SupportedGitHubRepos supportedRepo, long prNumber, ItemState prCurrentState, ItemState prNewState) { if (prCurrentState.Equals(prNewState)) { Logger.LogInfo("Pr#'{0}', requested state '{1}' and current state '{2}' are same. Exiting.....", prNumber.ToString(), prNewState.ToString(), prCurrentState.ToString()); } Repository r = GetRepository(supportedRepo); PullRequest pr = GetPullRequest(r.Name, prNumber); Logger.LogInfo("Pr#'{0}', requested state to be set:'{1}', current state is:'{2}'", prNumber.ToString(), prNewState.ToString(), pr.State.ToString()); if (pr.State == prCurrentState) { PullRequestUpdate pru = new PullRequestUpdate(); pru.State = prNewState; pr = OC.PullRequest.Update(r.Id, (int)prNumber, pru).GetAwaiter().GetResult(); Logger.LogInfo("Pr#'{0}', requested state to be set:'{1}', current state is:'{2}'", prNumber.ToString(), prNewState.ToString(), pr.State.ToString()); } if (!pr.State.Equals(prNewState)) { Logger.LogError("Unable to set PR state to:'{0}'", prNewState.ToString()); } }
/// <summary> /// Get top 10 pull request sorted in descending order /// </summary> /// <param name="supportedRepo"></param> /// <param name="topCount"></param> /// <returns></returns> public List <PullRequest> GetTopPullRequests(SupportedGitHubRepos supportedRepo, int topCount = 10) { if (topCount > 10) { Logger.LogException <ApplicationException>("Get more than 10 Pull Requsts is not supported"); } List <PullRequest> prInfoList = new List <PullRequest>(); Repository r = GetRepository(supportedRepo); ApiOptions apiOpt = new ApiOptions(); apiOpt.PageCount = 1; apiOpt.PageSize = topCount; PullRequestRequest prr = new PullRequestRequest(); prr.State = ItemStateFilter.Open; prr.SortDirection = SortDirection.Descending; IReadOnlyList <PullRequest> prList = OC.PullRequest.GetAllForRepository(r.Id, prr, apiOpt).GetAwaiter().GetResult(); if (prList.NotNullOrAny <PullRequest>()) { prInfoList = prList.ToList <PullRequest>(); } return(prInfoList); }
/// <summary> /// Get PullRequest info /// </summary> /// <param name="supportedRepo"></param> /// <param name="prNumber"></param> /// <returns></returns> public PullRequest GetPullRequest(SupportedGitHubRepos supportedRepo, long prNumber) { string repoName = supportedRepo.GetRepoName(); Repository r = GetRepository(repoName); PullRequest pr = OC.PullRequest.Get(r.Id, (int)prNumber).GetAwaiter().GetResult(); return(pr); }
/// <summary> /// Get list of top 10 pr numbers /// </summary> /// <param name="supportedRepo"></param> /// <param name="topCount"></param> /// <returns></returns> public List <long> GetTopPrNumberList(SupportedGitHubRepos supportedRepo, int topCount = 10) { List <long> prNumberList = new List <long>(); var prs = GetTopPullRequests(supportedRepo, topCount); if (prs.Any <PullRequest>()) { prNumberList = prs.Select <PullRequest, long>((item) => item.Number).ToList <long>(); } return(prNumberList); }
/// <summary> /// Get last commit in a particular PR /// </summary> /// <param name="supportedRepo"></param> /// <param name="prNumber"></param> /// <returns></returns> public string GetLastCommitForPr(SupportedGitHubRepos supportedRepo, long prNumber) { string repoName = supportedRepo.GetRepoName(); Repository r = GetRepository(repoName); SortedList <DateTime, string> sortedCommitHistory = GetPrWithCommitList(r.Id, prNumber); string lastcommit = string.Empty; if (sortedCommitHistory.Any <KeyValuePair <DateTime, string> >()) { lastcommit = sortedCommitHistory.Values[sortedCommitHistory.Count - 1]; } return(lastcommit); }
/// <summary> /// Applies to SupportedGitHubRepos /// Gets the repo name by parsing the repository url /// </summary> /// <param name="enumField"></param> /// <returns></returns> public static string GetRepoName(this SupportedGitHubRepos enumField) { string supportedGHRepoDesc = enumField.GetAttributeInfoForEnum <string, DescriptionAttribute>((attrib) => attrib.Description); string repoName = string.Empty; if (!string.IsNullOrWhiteSpace(supportedGHRepoDesc)) { //Split the url string[] tokens = supportedGHRepoDesc.Split(new char[] { Path.AltDirectorySeparatorChar }, StringSplitOptions.RemoveEmptyEntries); //Get the last token which represents the repository name if (tokens != null) { repoName = tokens[tokens.Length - 1]; } } return(repoName); }
Repository GetRepository(SupportedGitHubRepos supportedRepo) { string repoName = supportedRepo.GetRepoName(); return(GetRepository(repoName)); }
/// <summary> /// Get list of files in a particular PR number /// </summary> /// <param name="supportedRepo"></param> /// <param name="prNumber"></param> /// <returns></returns> public IEnumerable <string> GetPullRequestFileList(SupportedGitHubRepos supportedRepo, long prNumber) { string repoName = supportedRepo.GetRepoName(); return(GetPullRequestFileList(repoName, prNumber)); }