Sha256: c0b454e19bb255bf0ab7d15d3bac340c2764e964b8502dc0c06ea271f0e58342
Contents?: true
Size: 1.42 KB
Versions: 4
Compression:
Stored size: 1.42 KB
Contents
require 'json' require_relative '../helper/http' require_relative '../version' module Gem module Release class Context class Github include Helper::Http URL = 'https://api.github.com/repos/%s/releases' MSGS = { error: 'GitHub returned %s (body: %p)' }.freeze attr_reader :repo, :data def initialize(repo, data) @repo = repo @data = data end def release # Create a release # https://developer.github.com/v3/repos/releases/#create-a-release resp = post(url, body, headers) status, body = resp # success status code is 201 (created) not 200 (ok) raise Abort, MSGS.fetch(:error) % [status, body] unless status == 201 end private def url URL % repo end def body JSON.dump( tag_name: data[:tag_name], name: data[:name], body: data[:descr], prerelease: pre?(data[:version]) ) end def headers { 'User-Agent' => "gem-release/v#{::Gem::Release::VERSION}", 'Content-Type' => 'text/json', 'Authorization' => "token #{data[:token]}", } end def pre?(version) Version::Number.new(version).pre? end end end end end
Version data entries
4 entries across 4 versions & 1 rubygems