class GithubReleaseParty

Constants

VERSION

Public Class Methods

check_env!() click to toggle source
# File lib/github-release-party.rb, line 60
def self.check_env!
  if !ENV["GITHUB_RELEASE_TOKEN"]
    abort "Configure GITHUB_RELEASE_TOKEN to create GitHub releases. See https://github.com/stefansundin/github-release-party#setup"
  end
  if !repo
    abort "Can't find the GitHub repository. Please use the remote 'origin'."
  end
end
create(tag_name, message) click to toggle source
# File lib/github-release-party.rb, line 36
def self.create(tag_name, message)
  body = {
    tag_name: tag_name,
    name: tag_name,
    body: message,
  }

  r = GitHub.post("/repos/#{repo}/releases", body.to_json)
  if r.success?
    puts "GitHub release #{tag_name} created!"
  else
    puts error(r)
    puts
    puts "Body sent: #{body.to_json}"
    puts
    puts "Failed to create a GitHub release!"
    puts "Create it manually here: https://github.com/#{repo}/releases/new?tag=#{tag_name}"
    puts "Tag version: #{tag_name}"
    puts "Release title: #{tag_name}"
    puts "Message:"
    puts message
  end
end
releases() click to toggle source
# File lib/github-release-party.rb, line 6
def self.releases
  releases = []
  page = 1
  while true
    r = GitHub.get("/repos/#{repo}/releases?page=#{page}")
    if !r.success?
      puts "Error occurred when fetching releases:"
      puts error(r)
      abort
    end
    break if r.json.length == 0
    releases = releases + r.json
    page += 1
  end
  return releases
end
repo() click to toggle source
# File lib/github-release-party.rb, line 69
def self.repo
  @repo ||= `git remote -v`.scan(/^origin\t.*github\.com[:\/](.+)\.git /).uniq.flatten.first
end
update(release_id, name, message) click to toggle source
# File lib/github-release-party.rb, line 23
def self.update(release_id, name, message)
  r = GitHub.patch("/repos/#{repo}/releases/#{release_id}", {
    name: name,
    body: message,
  }.to_json)
  if r.success?
    puts "GitHub release #{name} updated!"
  else
    puts "Failed to update GitHub release #{name}!"
    puts error(r)
  end
end

Private Class Methods

error(r) click to toggle source
# File lib/github-release-party.rb, line 75
def self.error(r)
  "#{r.request_uri}: #{r.code}: #{r.body}\nHeaders: #{r.headers.to_json}"
end