class GithubAnalyze::Organization
Attributes
client[R]
languages[R]
name[R]
repositories[R]
Public Class Methods
new(name:, client:)
click to toggle source
# File lib/github_analyze/organization.rb, line 5 def initialize(name:, client:) @name = name @client = client @languages = Hash.new(0) @repositories = [] process! end
Public Instance Methods
least_common_languages()
click to toggle source
# File lib/github_analyze/organization.rb, line 22 def least_common_languages ranked_languages.to_a.last(5).collect(&:first) end
most_common_languages()
click to toggle source
# File lib/github_analyze/organization.rb, line 18 def most_common_languages ranked_languages.to_a.first(5).collect(&:first) end
ranked_languages()
click to toggle source
# File lib/github_analyze/organization.rb, line 14 def ranked_languages Hash[languages.to_a.sort_by { |k, v| [-v, k] }] end
Private Instance Methods
github_graphql(start_cursor:)
click to toggle source
# File lib/github_analyze/organization.rb, line 50 def github_graphql(start_cursor:) client.query <<~GRAPHQL query { organization(login: "#{name}") { repositories(first: 100, after: #{start_cursor}) { pageInfo { hasNextPage endCursor } nodes { name createdAt primaryLanguage { name } } } } } GRAPHQL end
process!()
click to toggle source
# File lib/github_analyze/organization.rb, line 28 def process! start_cursor = nil loop do result = github_graphql(start_cursor: start_cursor) repos = result.data.organization.repositories.nodes repos.each do |repository| primary_language = repository.primary_language languages[primary_language.name] += 1 if primary_language repositories << repository end if result.data.organization.repositories.page_info.has_next_page start_cursor = result.data.organization.repositories.page_info.end_cursor else break end end end