class Released::Goals::GitHubReleaseExists

Public Class Methods

new(config) click to toggle source
# File lib/released/goals/github_release_exists.rb, line 8
def initialize(config)
  @repository_name = config.fetch('repository_name') # e.g. nanoc/nanoc
  @tag = config.fetch('tag')
  @release_notes = config.fetch('release_notes')
end

Public Instance Methods

achieved?() click to toggle source
# File lib/released/goals/github_release_exists.rb, line 26
def achieved?
  client = Octokit::Client.new(netrc: true)
  releases = client.releases(@repository_name)
  releases.any? { |r| r.tag_name == @tag }
end
failure_reason() click to toggle source
# File lib/released/goals/github_release_exists.rb, line 32
def failure_reason
  "no release exists in repository #{@repository_name} for tag #{@tag}"
end
to_s() click to toggle source
# File lib/released/goals/github_release_exists.rb, line 14
def to_s
  "GitHub release exists (#{@tag} in #{@repository_name})"
end
try_achieve() click to toggle source
# File lib/released/goals/github_release_exists.rb, line 18
def try_achieve
  client = Octokit::Client.new(netrc: true)
  client.create_release(
    @repository_name, @tag,
    body: @release_notes
  )
end