class Gitsheet

Constants

VERSION

Public Class Methods

new(username, password, organization) click to toggle source
# File lib/gitsheet.rb, line 6
def initialize(username, password, organization)
  @auth = "#{username}:#{password}"
  @org = organization
end

Public Instance Methods

add_commits(repos) click to toggle source
# File lib/gitsheet.rb, line 28
def add_commits(repos)
  repos.each do |r|
    $stderr.print "#{r['name']}"

    sleep(1)
    $stderr.print '...'

    r['latest_commit'] = self.latest_commit(r['name'])

    $stderr.puts '✔︎'
  end
end
count_repos() click to toggle source
# File lib/gitsheet.rb, line 20
def count_repos
  self.fetch_repos.size
end
count_users() click to toggle source
# File lib/gitsheet.rb, line 24
def count_users
  self.fetch_users({per_page: 100}).size
end
fetch(url, params = {}) click to toggle source
# File lib/gitsheet.rb, line 79
def fetch(url, params = {})
  RestClient.get url, {:params => params}
end
fetch_commits(repo, options = {}) click to toggle source
# File lib/gitsheet.rb, line 73
def fetch_commits(repo, options = {})
  url = "https://#{@auth}@api.github.com/repos/#{@org}/#{repo}/commits"
  options.merge!(per_page: 1)
  JSON.parse self.fetch(url, options)
end
fetch_repos(options = {}) click to toggle source
# File lib/gitsheet.rb, line 46
def fetch_repos(options = {})
  url = "https://#{@auth}@api.github.com/orgs/#{@org}/repos"
  repos = []

  # Initial request
  response = self.fetch(url, {per_page: 100})
  page_header = response.headers[:link]
  repos.concat JSON.parse(response)

  # Parse page headers
  pages = PageLinks.new page_header
  return repos if pages.none?

  # Fetch additional pages
  2.upto(pages.last) do |page|
    sleep(1)
    repos.concat JSON.parse(self.fetch(url, {per_page: 100, page: page}))
  end

  repos
end
fetch_users(options = {}) click to toggle source
# File lib/gitsheet.rb, line 68
def fetch_users(options = {})
  url = "https://#{@auth}@api.github.com/orgs/#{@org}/members"
  JSON.parse self.fetch(url, options)
end
latest_commit(repo) click to toggle source
# File lib/gitsheet.rb, line 41
def latest_commit(repo)
  commits = self.fetch_commits(repo)
  commits.first['commit']['author']['date']
end
repos() click to toggle source
# File lib/gitsheet.rb, line 11
def repos
  repos = self.fetch_repos
  self.add_commits repos
end
users() click to toggle source
# File lib/gitsheet.rb, line 16
def users
  users = self.fetch_users({per_page: 100})
end