module Octokit::Client::Releases

def content_type_from_file(file)

def content_type_from_file(file)
  require 'mime/types'
  if mime_type = MIME::Types.type_for(file.path).first
    mime_type.content_type
  end
rescue LoadError
  msg = "Please pass content_type or install mime-types gem to guess content type from file"
  raise Octokit::MissingContentType.new(msg)
end

def create_release(repo, tag_name, options = {})

Other tags:
    See: https://developer.github.com/v3/repos/releases/#create-a-release -

Returns:
  • (Sawyer::Resource) - The release

Options Hash: (**options)
  • :prerelease (Boolean) -- Mark this release as a pre-release
  • :draft (Boolean) -- Mark this release as a draft
  • :body (String) -- Content for release notes
  • :name (String) -- Name for the release
  • :target_commitish (String) -- Specifies the commitish value that determines where the Git tag is created from.

Parameters:
  • tag_name (String) -- Git tag from which to create release
  • repo (Integer, String, Repository, Hash) -- A GitHub repository
def create_release(repo, tag_name, options = {})
  opts = options.merge(:tag_name => tag_name)
  post "#{Repository.path repo}/releases", opts
end

def delete_release(url, options = {})

Other tags:
    See: https://developer.github.com/v3/repos/releases/#delete-a-release -

Returns:
  • (Boolean) - Success or failure

Parameters:
  • url (String) -- URL for the release as returned from .releases
def delete_release(url, options = {})
  boolean_from_response(:delete, url, options)
end

def delete_release_asset(asset_url, options = {})

Other tags:
    See: https://developer.github.com/v3/repos/releases/#delete-a-release-asset -

Returns:
  • (Boolean) - Success or failure

Parameters:
  • asset_url (String) -- URL for the asset as returned from .release_assets
def delete_release_asset(asset_url, options = {})
  boolean_from_response(:delete, asset_url, options)
end

def latest_release(repo, options = {})

Other tags:
    See: https://developer.github.com/v3/repos/releases/#get-the-latest-release -

Returns:
  • (Sawyer::Resource) - The release

Parameters:
  • repo (Integer, String, Repository, Hash) -- A GitHub repository
def latest_release(repo, options = {})
  get "#{Repository.path repo}/releases/latest", options
end

def release(url, options = {})

Other tags:
    See: https://developer.github.com/v3/repos/releases/#get-a-single-release -

Returns:
  • (Sawyer::Resource) - The release

Parameters:
  • url (String) -- URL for the release as returned from .releases
def release(url, options = {})
  get url, options
end

def release_asset(asset_url, options = {})

Other tags:
    See: https://developer.github.com/v3/repos/releases/#get-a-single-release-asset -

Returns:
  • (Sawyer::Resource) - The release asset

Parameters:
  • asset_url (String) -- URL for the asset as returned from .release_assets
def release_asset(asset_url, options = {})
  get(asset_url, options)
end

def release_assets(release_url, options = {})

Other tags:
    See: https://developer.github.com/v3/repos/releases/#list-assets-for-a-release -

Returns:
  • (Array) - A list of release assets

Parameters:
  • release_url (String) -- URL for the release as returned from .releases
def release_assets(release_url, options = {})
  paginate release(release_url).rels[:assets].href, options
end

def release_for_tag(repo, tag_name, options = {})

Other tags:
    See: https://developer.github.com/v3/repos/releases/#get-a-release-by-tag-name -

Returns:
  • (Sawyer::Resource) - The release

Parameters:
  • tag_name (String) -- the name for a tag
  • repo (Integer, String, Repository, Hash) -- A GitHub repository
def release_for_tag(repo, tag_name, options = {})
  get "#{Repository.path repo}/releases/tags/#{tag_name}", options
end

def releases(repo, options = {})

Other tags:
    See: https://developer.github.com/v3/repos/releases/#list-releases-for-a-repository -

Returns:
  • (Array) - A list of releases

Parameters:
  • repo (Integer, String, Repository, Hash) -- A GitHub repository
def releases(repo, options = {})
  paginate "#{Repository.path repo}/releases", options
end

def update_release(url, options = {})

Other tags:
    See: https://developer.github.com/v3/repos/releases/#edit-a-release -

Returns:
  • (Sawyer::Resource) - The release

Options Hash: (**options)
  • :prerelease (Boolean) -- Mark this release as a pre-release
  • :draft (Boolean) -- Mark this release as a draft
  • :body (String) -- Content for release notes
  • :name (String) -- Name for the release
  • :target_commitish (String) -- Specifies the commitish value that determines where the Git tag is created from.

Parameters:
  • url (String) -- URL for the release as returned from .releases
def update_release(url, options = {})
  patch url, options
end

def update_release_asset(asset_url, options = {})

Other tags:
    See: https://developer.github.com/v3/repos/releases/#edit-a-release-asset -

Returns:
  • (Sawyer::Resource) - The release asset

Options Hash: (**options)
  • :label (String) -- The download text for the file
  • :name (String) -- The name for the file

Parameters:
  • asset_url (String) -- URL for the asset as returned from .release_assets
def update_release_asset(asset_url, options = {})
  patch(asset_url, options)
end

def upload_asset(release_url, path_or_file, options = {})

Other tags:
    See: https://developer.github.com/v3/repos/releases/#upload-a-release-asset -

Returns:
  • (Sawyer::Resource) - The release asset

Options Hash: (**options)
  • :name (String) -- The name for the file
  • :content_type (String) -- The MIME type for the file to upload

Parameters:
  • path_or_file (String) -- Path to file to upload
  • release_url (String) -- URL for the release as returned from .releases
def upload_asset(release_url, path_or_file, options = {})
  file = path_or_file.respond_to?(:read) ? path_or_file : File.new(path_or_file, "rb")
  options[:content_type] ||= content_type_from_file(file)
  raise Octokit::MissingContentType.new if options[:content_type].nil?
  unless name = options[:name]
    name = File.basename(file.path)
  end
  upload_url = release(release_url).rels[:upload].href_template.expand(:name => name)
  request :post, upload_url, file.read, parse_query_and_convenience_headers(options)
ensure
  file.close if file
end