Exemplo n.º 1
0
        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());
            }
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
        /// <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);
        }
Exemplo n.º 4
0
        /// <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);
        }
Exemplo n.º 5
0
        /// <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);
        }
Exemplo n.º 6
0
        /// <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);
        }
Exemplo n.º 7
0
        Repository GetRepository(SupportedGitHubRepos supportedRepo)
        {
            string repoName = supportedRepo.GetRepoName();

            return(GetRepository(repoName));
        }
Exemplo n.º 8
0
        /// <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));
        }