module Octokit::Client::Releases

Methods for the Releases API

@see developer.github.com/v3/repos/releases/

Public Instance Methods

create_release(repo, tag_name, options = {}) click to toggle source

Create a release

@param repo [Integer, String, Repository, Hash] A GitHub repository @param tag_name [String] Git tag from which to create release @option options [String] :target_commitish Specifies the commitish value that determines where the Git tag is created from. @option options [String] :name Name for the release @option options [String] :body Content for release notes @option options [Boolean] :draft Mark this release as a draft @option options [Boolean] :prerelease Mark this release as a pre-release @return [Sawyer::Resource] The release @see developer.github.com/v3/repos/releases/#create-a-release

# File lib/octokit/client/releases.rb, line 30
def create_release(repo, tag_name, options = {})
  opts = options.merge(:tag_name => tag_name)
  post "#{Repository.path repo}/releases", opts
end
delete_release(url, options = {}) click to toggle source

Delete a release

@param url [String] URL for the release as returned from .releases @return [Boolean] Success or failure @see developer.github.com/v3/repos/releases/#delete-a-release

# File lib/octokit/client/releases.rb, line 65
def delete_release(url, options = {})
  boolean_from_response(:delete, url, options)
end
delete_release_asset(asset_url, options = {}) click to toggle source

Delete a release asset

@param asset_url [String] URL for the asset as returned from .release_assets @return [Boolean] Success or failure @see developer.github.com/v3/repos/releases/#delete-a-release-asset

# File lib/octokit/client/releases.rb, line 127
def delete_release_asset(asset_url, options = {})
  boolean_from_response(:delete, asset_url, options)
end
edit_release(url, options = {})
Alias for: update_release
edit_release_asset(asset_url, options = {})
latest_release(repo, options = {}) click to toggle source

Get the latest release

@param repo [Integer, String, Repository, Hash] A GitHub repository @return [Sawyer::Resource] The release @see developer.github.com/v3/repos/releases/#get-the-latest-release

# File lib/octokit/client/releases.rb, line 146
def latest_release(repo, options = {})
  get "#{Repository.path repo}/releases/latest", options
end
list_releases(repo, options = {})
Alias for: releases
release(url, options = {}) click to toggle source

Get a release

@param url [String] URL for the release as returned from .releases @return [Sawyer::Resource] The release @see developer.github.com/v3/repos/releases/#get-a-single-release

# File lib/octokit/client/releases.rb, line 40
def release(url, options = {})
  get url, options
end
release_asset(asset_url, options = {}) click to toggle source

Get a single release asset

@param asset_url [String] URL for the asset as returned from .release_assets @return [Sawyer::Resource] The release asset @see developer.github.com/v3/repos/releases/#get-a-single-release-asset

# File lib/octokit/client/releases.rb, line 106
def release_asset(asset_url, options = {})
  get(asset_url, options)
end
release_assets(release_url, options = {}) click to toggle source

List release assets

@param release_url [String] URL for the release as returned from .releases @return [Array<Sawyer::Resource>] A list of release assets @see developer.github.com/v3/repos/releases/#list-assets-for-a-release

# File lib/octokit/client/releases.rb, line 74
def release_assets(release_url, options = {})
  paginate release(release_url).rels[:assets].href, options
end
release_for_tag(repo, tag_name, options = {}) click to toggle source

Get the release for a given tag

@param repo [Integer, String, Repository, Hash] A GitHub repository @param tag_name [String] the name for a tag @return [Sawyer::Resource] The release @see developer.github.com/v3/repos/releases/#get-a-release-by-tag-name

# File lib/octokit/client/releases.rb, line 137
def release_for_tag(repo, tag_name, options = {})
  get "#{Repository.path repo}/releases/tags/#{tag_name}", options
end
releases(repo, options = {}) click to toggle source

List releases for a repository

@param repo [Integer, String, Repository, Hash] A GitHub repository @return [Array<Sawyer::Resource>] A list of releases @see developer.github.com/v3/repos/releases/#list-releases-for-a-repository

# File lib/octokit/client/releases.rb, line 14
def releases(repo, options = {})
  paginate "#{Repository.path repo}/releases", options
end
Also aliased as: list_releases
update_release(url, options = {}) click to toggle source

Update a release

@param url [String] URL for the release as returned from .releases @option options [String] :tag_name Git tag from which to create release @option options [String] :target_commitish Specifies the commitish value that determines where the Git tag is created from. @option options [String] :name Name for the release @option options [String] :body Content for release notes @option options [Boolean] :draft Mark this release as a draft @option options [Boolean] :prerelease Mark this release as a pre-release @return [Sawyer::Resource] The release @see developer.github.com/v3/repos/releases/#edit-a-release

# File lib/octokit/client/releases.rb, line 55
def update_release(url, options = {})
  patch url, options
end
Also aliased as: edit_release
update_release_asset(asset_url, options = {}) click to toggle source

Update a release asset

@param asset_url [String] URL for the asset as returned from .release_assets @option options [String] :name The name for the file @option options [String] :label The download text for the file @return [Sawyer::Resource] The release asset @see developer.github.com/v3/repos/releases/#edit-a-release-asset

# File lib/octokit/client/releases.rb, line 117
def update_release_asset(asset_url, options = {})
  patch(asset_url, options)
end
Also aliased as: edit_release_asset
upload_asset(release_url, path_or_file, options = {}) click to toggle source

Upload a release asset

@param release_url [String] URL for the release as returned from .releases @param path_or_file [String] Path to file to upload @option options [String] :content_type The MIME type for the file to upload @option options [String] :name The name for the file @return [Sawyer::Resource] The release asset @see developer.github.com/v3/repos/releases/#upload-a-release-asset

# File lib/octokit/client/releases.rb, line 86
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

Private Instance Methods

content_type_from_file(file) click to toggle source
# File lib/octokit/client/releases.rb, line 152
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