Skip to content
This repository was archived by the owner on May 16, 2023. It is now read-only.

Commit 32519d0

Browse files
author
Lauri Piispanen
committed
use commits instead of contributions when possible
1 parent 5711953 commit 32519d0

File tree

2 files changed

+55
-10
lines changed

2 files changed

+55
-10
lines changed

github/github.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,9 @@ Pages:
108108
contributionsCollection {
109109
contributionCalendar {
110110
totalContributions
111-
}
111+
},
112+
totalCommitContributions,
113+
totalPullRequestContributions,
112114
restrictedContributionsCount
113115
}
114116
}
@@ -200,6 +202,8 @@ Pages:
200202
contributionsCollection := userNode["contributionsCollection"].(map[string]interface{})
201203
contributionCount := int(contributionsCollection["contributionCalendar"].(map[string]interface{})["totalContributions"].(float64))
202204
privateContributionCount := int(contributionsCollection["restrictedContributionsCount"].(float64))
205+
commitsCount := int(contributionsCollection["totalCommitContributions"].(float64))
206+
pullRequestsCount := int(contributionsCollection["totalPullRequestContributions"].(float64))
203207

204208
user := User{
205209
Login: login,
@@ -210,7 +214,9 @@ Pages:
210214
FollowerCount: followerCount,
211215
ContributionCount: contributionCount,
212216
PublicContributionCount: (contributionCount - privateContributionCount),
213-
PrivateContributionCount: privateContributionCount}
217+
PrivateContributionCount: privateContributionCount,
218+
CommitsCount: commitsCount,
219+
PullRequestsCount: pullRequestsCount}
214220

215221
if !userLogins[login] {
216222
userLogins[login] = true
@@ -279,6 +285,8 @@ type User struct {
279285
ContributionCount int
280286
PublicContributionCount int
281287
PrivateContributionCount int
288+
CommitsCount int
289+
PullRequestsCount int
282290
}
283291

284292
type UserSearchQuery struct {

output/output.go

Lines changed: 45 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -51,14 +51,25 @@ func CsvOutput(results github.GithubSearchResults, writer io.Writer, options top
5151
return nil
5252
}
5353

54+
type ContributionsSelector func(github.User) int
55+
56+
func selectCommits(user github.User) int {
57+
return user.CommitsCount
58+
}
59+
60+
func selectContributions(user github.User) int {
61+
return user.ContributionCount
62+
}
63+
64+
func selectPublicContributions(user github.User) int {
65+
return user.PublicContributionCount
66+
}
67+
5468
func YamlOutput(results github.GithubSearchResults, writer io.Writer, options top.Options) error {
5569
users := GithubUserList(results.Users)
56-
outputUsers := func(user []github.User, public_only bool) {
70+
outputUsers := func(user []github.User, cs ContributionsSelector) {
5771
for i, u := range user {
58-
contributionCount := u.ContributionCount
59-
if public_only {
60-
contributionCount = u.PublicContributionCount
61-
}
72+
contributionCount := cs(u)
6273
fmt.Fprintf(
6374
writer,
6475
`
@@ -80,13 +91,17 @@ func YamlOutput(results github.GithubSearchResults, writer io.Writer, options to
8091
}
8192
}
8293

83-
topPublic := users.TopPublic(options.Amount)
94+
topPublic := users.TopCommits(options.Amount)
8495
fmt.Fprintln(writer, "users:")
85-
outputUsers(topPublic, true)
96+
outputUsers(topPublic, selectCommits)
97+
98+
topContributions := users.TopPublic(options.Amount)
99+
fmt.Fprintln(writer, "users_public_contributions:")
100+
outputUsers(topContributions, selectPublicContributions)
86101

87102
topPrivate := users.TopPrivate(options.Amount)
88103
fmt.Fprintln(writer, "\nprivate_users:")
89-
outputUsers(topPrivate, false)
104+
outputUsers(topPrivate, selectContributions)
90105

91106
outputOrganizations := func(orgs Organizations) {
92107
for i, org := range orgs {
@@ -105,6 +120,8 @@ func YamlOutput(results github.GithubSearchResults, writer io.Writer, options to
105120

106121
fmt.Fprintln(writer, "\norganizations:")
107122
outputOrganizations(topPublic.TopOrgs(10))
123+
fmt.Fprintln(writer, "\npublic_contributions_organizations:")
124+
outputOrganizations(topContributions.TopOrgs(10))
108125
fmt.Fprintln(writer, "\nprivate_organizations:")
109126
outputOrganizations(topPrivate.TopOrgs(10))
110127

@@ -135,6 +152,12 @@ func clone(users GithubUserList) GithubUserList {
135152

136153
type GithubUserList []github.User
137154

155+
func (users GithubUserList) TopCommits(amount int) GithubUserList {
156+
u := TopCommitsUsers(clone(users))
157+
sort.Sort(u)
158+
return trim(GithubUserList(u), amount)
159+
}
160+
138161
func (users GithubUserList) TopPublic(amount int) GithubUserList {
139162
u := TopPublicUsers(clone(users))
140163
sort.Sort(u)
@@ -160,6 +183,20 @@ func (slice GithubUserList) MinFollowers() int {
160183
return followers
161184
}
162185

186+
type TopCommitsUsers GithubUserList
187+
188+
func (slice TopCommitsUsers) Len() int {
189+
return len(slice)
190+
}
191+
192+
func (slice TopCommitsUsers) Less(i, j int) bool {
193+
return slice[i].CommitsCount > slice[j].CommitsCount
194+
}
195+
196+
func (slice TopCommitsUsers) Swap(i, j int) {
197+
slice[i], slice[j] = slice[j], slice[i]
198+
}
199+
163200
type TopPublicUsers GithubUserList
164201

165202
func (slice TopPublicUsers) Len() int {

0 commit comments

Comments
 (0)