class Chandler::GitHub
A facade for performing GitHub
API operations on a given GitHub
repository (specified as a git URL or as `owner/repo` format). Requires either that “~/.netrc” is properly configured with GitHub
credentials or an auth token is available in the host environment at “CHANDLER_GITHUB_API_TOKEN”“
Constants
- Error
Attributes
config[R]
remote[R]
repository[R]
Public Class Methods
new(repository:, config:)
click to toggle source
# File lib/chandler/github.rb, line 14 def initialize(repository:, config:) @repository = repository @remote = Remote.parse(repository) @config = config end
Public Instance Methods
create_or_update_release(tag:, title:, description:)
click to toggle source
# File lib/chandler/github.rb, line 20 def create_or_update_release(tag:, title:, description:) return if config.dry_run? release = existing_release(tag) return update_release(release, title, description) if release create_release(tag, title, description) rescue Octokit::NotFound raise InvalidRepository, repository end
Private Instance Methods
client()
click to toggle source
# File lib/chandler/github.rb, line 57 def client @client ||= Client.new(:host => remote.host).tap(&:login!) end
create_release(tag, title, desc)
click to toggle source
# File lib/chandler/github.rb, line 51 def create_release(tag, title, desc) client.create_release( remote.repository, tag, :name => title, :body => desc ) end
existing_release(tag)
click to toggle source
# File lib/chandler/github.rb, line 35 def existing_release(tag) release = client.release_for_tag(remote.repository, tag) release.id.nil? ? nil : release rescue Octokit::NotFound nil end
release_unchanged?(release, title, desc)
click to toggle source
# File lib/chandler/github.rb, line 47 def release_unchanged?(release, title, desc) release.name == title && release.body.to_s.strip == desc.strip end
update_release(release, title, desc)
click to toggle source
# File lib/chandler/github.rb, line 42 def update_release(release, title, desc) return if release_unchanged?(release, title, desc) client.update_release(release.url, :name => title, :body => desc) end