class Pully::Pully

Public Class Methods

new(user:, pass:, repo:, owner:) click to toggle source
# File lib/pully.rb, line 13
def initialize(user:, pass:, repo:, owner:)
  @user = user
  @pass = pass
  @repo = repo
  @owner = owner
  @repo_selector = @owner ? "#{@owner}/#{@repo}" : "#{@user}/#{@repo}"

  @gh_client = Octokit::Client.new(:login => @user, :password => @pass)

  begin
    @gh_client.user #throw exception if auth is bad
  rescue Octokit::Unauthorized
    raise Error::BadLogin
  end
  raise Error::NonExistantRepository unless @gh_client.repository?(@repo_selector)
end

Public Instance Methods

comments_for_pull_request(pull_number) click to toggle source
# File lib/pully.rb, line 34
def comments_for_pull_request pull_number
  @gh_client.issue_comments(@repo_selector, pull_number)
end
create_pull_request(from:, to:, subject:, message:) click to toggle source
# File lib/pully.rb, line 30
def create_pull_request(from:, to:, subject:, message:)
  @gh_client.create_pull_request(@repo_selector, to, from, subject, message)["number"]
end
merge_pull_request(pull_number, message='Merged Pull Request') click to toggle source
# File lib/pully.rb, line 66
def merge_pull_request(pull_number, message='Merged Pull Request')
  @gh_client.merge_pull_request(@repo_selector, pull_number, message)
end
open_or_pending_pull_requests() click to toggle source
# File lib/pully.rb, line 55
def open_or_pending_pull_requests
  requests = @gh_client.pull_requests(@repo_selector, :state => 'open').map{|e| e["number"]}
  requests.select!{|e| ["open", "pending"].include? pull_request_status(e) }
  requests
end
pull_request_branches(pull_number) click to toggle source
# File lib/pully.rb, line 70
def pull_request_branches(pull_number)
  from_name = @gh_client.pull_request(@repo_selector, pull_number).head.ref
  to_name = @gh_client.pull_request(@repo_selector, pull_number).base.ref

  return {:from => from_name, :to => to_name}
end
pull_request_is_open?(pull_number) click to toggle source
# File lib/pully.rb, line 77
def pull_request_is_open?(pull_number)
  @gh_client.pull_request(@repo_selector, pull_number)["state"] == 'open'
end
pull_request_status(pull_number) click to toggle source
# File lib/pully.rb, line 46
def pull_request_status(pull_number)
  sha = sha_for_pull_request pull_number
  @gh_client.combined_status(@repo_selector, sha)["state"]
end
pull_requests() click to toggle source
# File lib/pully.rb, line 51
def pull_requests
  return @gh_client.pull_requests(@repo_selector, :state => 'open').map{|e| e["number"]}
end
set_pull_request_status(pull_number, status) click to toggle source
# File lib/pully.rb, line 61
def set_pull_request_status(pull_number, status)
  sha = sha_for_pull_request pull_number
  @gh_client.create_status(@repo_selector, sha, status)
end
sha_for_pull_request(pull_number) click to toggle source
# File lib/pully.rb, line 42
def sha_for_pull_request pull_number
  @gh_client.pull_request(@repo_selector, pull_number).head.sha
end
write_comment_to_pull_request(pull_number, comment) click to toggle source
# File lib/pully.rb, line 38
def write_comment_to_pull_request pull_number, comment
  @gh_client.add_comment(@repo_selector, pull_number, comment)
end