dev-cmd/update-maintainers: implement suggestions from code review
This commit is contained in:
parent
90632ce274
commit
15f936a22a
@ -36,8 +36,9 @@ Metrics/PerceivedComplexity:
|
||||
Max: 90
|
||||
Metrics/MethodLength:
|
||||
Max: 260
|
||||
# TODO: Reduce to 600 after refactoring utils/github
|
||||
Metrics/ModuleLength:
|
||||
Max: 650
|
||||
Max: 620
|
||||
Exclude:
|
||||
- "test/**/*"
|
||||
|
||||
|
@ -26,29 +26,32 @@ module Homebrew
|
||||
# We assume that only public members wish to be included in the README
|
||||
public_members = GitHub.public_member_usernames("Homebrew")
|
||||
|
||||
plc = GitHub.members_by_team("Homebrew", "plc")
|
||||
tsc = GitHub.members_by_team("Homebrew", "tsc")
|
||||
linux = GitHub.members_by_team("Homebrew", "linux")
|
||||
other = GitHub.members_by_team("Homebrew", "maintainers")
|
||||
other.except!(*[plc, tsc, linux].map(&:keys).flatten.uniq)
|
||||
members = {
|
||||
plc: GitHub.members_by_team("Homebrew", "plc"),
|
||||
tsc: GitHub.members_by_team("Homebrew", "tsc"),
|
||||
linux: GitHub.members_by_team("Homebrew", "linux"),
|
||||
}
|
||||
members[:other] = GitHub.members_by_team("Homebrew", "maintainers")
|
||||
.except(*members.values.map(&:keys).flatten.uniq)
|
||||
|
||||
sentences = [plc, tsc, linux, other].map do |h|
|
||||
h.slice!(*public_members)
|
||||
h.each { |k, v| h[k] = "[#{v}](https://github.com/#{k})" }
|
||||
h.values.sort.to_sentence
|
||||
sentences = {}
|
||||
members.each do |group, hash|
|
||||
hash.slice!(*public_members)
|
||||
hash.each { |login, name| hash[login] = "[#{name}](https://github.com/#{login})" }
|
||||
sentences[group] = hash.values.sort.to_sentence
|
||||
end
|
||||
|
||||
readme = HOMEBREW_REPOSITORY/"README.md"
|
||||
|
||||
content = readme.read
|
||||
content.gsub!(/(Homebrew's \[Project Leadership Committee.*) is .*\./,
|
||||
"\\1 is #{sentences[0]}.")
|
||||
"\\1 is #{sentences[:plc]}.")
|
||||
content.gsub!(/(Homebrew's \[Technical Steering Committee.*) is .*\./,
|
||||
"\\1 is #{sentences[1]}.")
|
||||
"\\1 is #{sentences[:tsc]}.")
|
||||
content.gsub!(/(Homebrew's Linux maintainers are).*\./,
|
||||
"\\1 #{sentences[2]}.")
|
||||
"\\1 #{sentences[:linux]}.")
|
||||
content.gsub!(/(Homebrew's other current maintainers are).*\./,
|
||||
"\\1 #{sentences[3]}.")
|
||||
"\\1 #{sentences[:other]}.")
|
||||
|
||||
File.open(readme, "w+") { |f| f.write(content) }
|
||||
|
||||
|
@ -577,7 +577,7 @@ module GitHub
|
||||
members = []
|
||||
|
||||
(1..API_MAX_PAGES).each do |page|
|
||||
result = open_api(url + "&page=#{page}").map { |m| m["login"] }
|
||||
result = open_api("#{url}&page=#{page}").map { |member| member["login"] }
|
||||
members.concat(result)
|
||||
|
||||
return members if result.length < per_page
|
||||
@ -587,6 +587,11 @@ module GitHub
|
||||
def members_by_team(org, team)
|
||||
query = <<~EOS
|
||||
{ organization(login: "#{org}") {
|
||||
teams(first: 100) {
|
||||
nodes {
|
||||
... on Team { name }
|
||||
}
|
||||
}
|
||||
team(slug: "#{team}") {
|
||||
members(first: 100) {
|
||||
nodes {
|
||||
@ -598,7 +603,14 @@ module GitHub
|
||||
}
|
||||
EOS
|
||||
result = open_graphql(query, scopes: ["read:org", "user"])
|
||||
result["organization"]["team"]["members"]["nodes"].map { |m| [m["login"], m["name"]] }.to_h
|
||||
|
||||
if result["organization"]["teams"]["nodes"].blank?
|
||||
raise Error,
|
||||
"Your token needs the 'read:org' scope to access this API"
|
||||
end
|
||||
raise Error, "The team #{org}/#{team} does not exist" if result["organization"]["team"].blank?
|
||||
|
||||
result["organization"]["team"]["members"]["nodes"].map { |member| [member["login"], member["name"]] }.to_h
|
||||
end
|
||||
|
||||
def sponsors_by_tier(user)
|
||||
|
Loading…
x
Reference in New Issue
Block a user