dev-cmd/contributions: Don't fall over if a user's profile is private

- It's possible to hide your contribution graph and not be searchable on
  GitHub. Let's make sure `brew contributions` doesn't fall over if the
  user's profile is private (determined by the `/events` user endpoint
  returning []).
This commit is contained in:
Issy Long 2023-03-14 21:17:34 +00:00
parent 0d5e291fe1
commit 03bd62ca0d
No known key found for this signature in database
GPG Key ID: 8247C390DADC67D4

View File

@ -175,14 +175,7 @@ module Homebrew
author: GitHub.count_repo_commits(repo_full_name, person, "author", args), author: GitHub.count_repo_commits(repo_full_name, person, "author", args),
committer: GitHub.count_repo_commits(repo_full_name, person, "committer", args), committer: GitHub.count_repo_commits(repo_full_name, person, "committer", args),
coauthorships: git_log_trailers_cmd(T.must(repo_path), person, "Co-authored-by", args), coauthorships: git_log_trailers_cmd(T.must(repo_path), person, "Co-authored-by", args),
reviews: GitHub.count_issues( reviews: count_reviews(repo_full_name, person, args),
"",
is: "pr",
repo: repo_full_name,
reviewed_by: person,
review: "approved",
args: args,
),
} }
end end
@ -211,4 +204,12 @@ module Homebrew
Utils.safe_popen_read(*cmd).lines.count { |l| l.include?(person) } Utils.safe_popen_read(*cmd).lines.count { |l| l.include?(person) }
end end
sig { params(repo_full_name: String, person: String, args: Homebrew::CLI::Args).returns(Integer) }
def count_reviews(repo_full_name, person, args)
# Users who have made their contributions private are not searchable to determine counts.
return 0 if GitHub::API.open_rest("https://api.github.com/users/#{user}/events").empty?
GitHub.count_issues("", is: "pr", repo: repo_full_name, reviewed_by: person, review: "approved", args: args)
end
end end