コード例 #1
0
        private GithubPullRequestModel GetPullRequest(OurUmbraco.Community.Models.Repository repository, string pullRequestNumber)
        {
            GithubPullRequestModel prModel = null;

            var store         = repository.IssuesStorageDirectory() + "/pulls/";
            var issueFile     = store + pullRequestNumber + ".pull.combined.json";
            var issueFilePath = HostingEnvironment.MapPath(issueFile);

            if (File.Exists(issueFilePath))
            {
                var content = File.ReadAllText(issueFilePath);
                prModel = JsonConvert.DeserializeObject <GithubPullRequestModel>(content);
            }

            return(prModel);
        }
コード例 #2
0
ファイル: ReleasesService.cs プロジェクト: y1026/OurUmbraco
        private static void PopulateGitHubIssues(PerformContext context, List <Release> releases)
        {
            var repository      = new OurUmbraco.Community.Models.Repository("umbraco-cms", "umbraco", "Umbraco-CMS", "Umbraco CMS");
            var issuesDirectory = HostingEnvironment.MapPath($"{repository.IssuesStorageDirectory()}/");
            var files           = Directory.EnumerateFiles(issuesDirectory, "*.issue.combined.json").ToArray();

            context.WriteLine($"Found {files.Length} issues");

            foreach (var file in files)
            {
                var fileContent = File.ReadAllText(file);
                var issue       = JsonConvert.DeserializeObject <GitHubIssueModel>(fileContent);

                foreach (var label in issue.labels)
                {
                    if (label.name.StartsWith("release/") == false)
                    {
                        continue;
                    }

                    var version = label.name.Replace("release/", string.Empty);
                    var release = releases.FirstOrDefault(x => x.Version == version);
                    if (release == null)
                    {
                        context.WriteLine(
                            $"Issue {issue.number} is tagged with release version {version} but this release has no corresponding node in Our");
                        continue;
                    }

                    var breaking = issue.labels.Any(x => x.name == "compatibility/breaking");

                    var stateLabel = issue.labels.FirstOrDefault(x => x.name.StartsWith("state/"));

                    // default state
                    var state = "new";

                    if (stateLabel != null)
                    {
                        // if there's a label with a state then use that as the state
                        state = stateLabel.name.Replace("state/", string.Empty);
                    }
                    else if (issue.state == "closed" && issue.labels.Any(x => x.name.StartsWith("release")))
                    {
                        // there is no state label applied
                        // if the issue is closed and has a release label on it then we set it to fixed
                        state = "fixed";
                    }

                    var typeLabel = issue.labels.FirstOrDefault(x => x.name.StartsWith("type/"));
                    var type      = string.Empty;
                    if (typeLabel != null)
                    {
                        type = typeLabel.name.Replace("type/", string.Empty);
                    }

                    release.Issues.Add(new Release.Issue
                    {
                        Id       = issue.number.ToString(),
                        Breaking = breaking,
                        State    = state,
                        Title    = issue.title,
                        Type     = type,
                        Source   = "GitHub"
                    });
                }
            }
        }