private static void TallyCommits(dotnetthanks.Release core, string repoName, Root root) { // these the commits within the release foreach (var item in root.commits) { if (item.author != null) { var author = item.author; author.name = item.commit.author.name; if (String.IsNullOrEmpty(author.name)) { author.name = "Unknown"; } if (!exclusions.Contains(author.name.ToLower())) { // find if the author has been counted var person = core.Contributors.Find(p => p.Name == author.name); if (person == null) { person = new dotnetthanks.Contributor() { Name = author.name, Link = author.html_url, Count = 1 }; person.Repos.Add(new RepoItem() { Name = repoName, Count = 1 }); core.Contributors.Add(person); } else { // found the author, does the repo exist as well? person.Count += 1; var repoItem = person.Repos.Find(r => r.Name == repoName); if (repoItem == null) { person.Repos.Add(new RepoItem() { Name = repoName, Count = 1 }); } else { repoItem.Count += 1; } } } } } }
/// <summary> /// Find the previous release for the current release in the sorted collection of all releases. /// Take the immediate previous release it it has the same major.minor version (e.g. 5.0.0-RC1 for 5.0.0-RC2), /// or take the previous GA release (e.g. 3.0.0 for 5.0.0-preview2 not 3.1.10). /// </summary> /// <param name="index">The index of the <paramref name="currentRelease"/> in the <paramref name="sortedReleases"/> list.</param> /// <returns>The previous release, if found; otherwise <see cref="null"/>, if the current release if the first release.</returns> private static dotnetthanks.Release GetPreviousRelease(List <dotnetthanks.Release> sortedReleases, dotnetthanks.Release currentRelease, int index) { if (currentRelease.Version.Major == sortedReleases[index].Version.Major && currentRelease.Version.Minor == sortedReleases[index].Version.Minor) { return(sortedReleases[index]); } return(sortedReleases.Skip(index).FirstOrDefault(r => currentRelease.Version > r.Version && r.IsGA)); }