Module: Octokit::Client::Releases

Included in:
Octokit::Client
Defined in:
lib/octokit/client/releases.rb

Overview

Methods for the Releases API

Constant Summary collapse

PREVIEW_MEDIA_TYPE =
"application/vnd.github.manifold-preview".freeze

Instance Method Summary collapse

Instance Method Details

#create_release(repo, tag_name, options = {}) ⇒ Sawyer::Resource

Create a release

Parameters:

  • repo (String, Repository, Hash)

    A GitHub repository

  • tag_name (String)

    Git tag from which to create release

  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • :target_commitish (String)

    Specifies the commitish value that determines where the Git tag is created from.

  • :name (String)

    Name for the release

  • :body (String)

    Content for release notes

  • :draft (String)

    Mark this release as a draft

  • :prerelease (String)

    Mark this release as a pre-release

Returns:

  • (Sawyer::Resource)

    The release

See Also:



33
34
35
36
37
# File 'lib/octokit/client/releases.rb', line 33

def create_release(repo, tag_name, options = {})
  options[:accept] ||= PREVIEW_MEDIA_TYPE
  opts = options.merge(:tag_name => tag_name)
  post "repos/#{Repository.new(repo)}/releases", opts
end

#delete_release(url, options = {}) ⇒ Boolean

Delete a release

Parameters:

  • url (String)

    URL for the release as returned from .releases

Returns:

  • (Boolean)

    Success or failure

See Also:



71
72
73
74
# File 'lib/octokit/client/releases.rb', line 71

def delete_release(url, options = {})
  options[:accept] ||= PREVIEW_MEDIA_TYPE
  boolean_from_response(:delete, url, options)
end

#delete_release_asset(asset_url, options = {}) ⇒ Boolean

Delete a release asset

Parameters:

  • asset_url (String)

    URL for the asset as returned from .release_assets

Returns:

  • (Boolean)

    Success or failure

See Also:



139
140
141
142
# File 'lib/octokit/client/releases.rb', line 139

def delete_release_asset(asset_url, options = {})
  options[:accept] ||= PREVIEW_MEDIA_TYPE
  boolean_from_response(:delete, asset_url, options)
end

#release(url, options = {}) ⇒ Sawyer::Resource

Get a release

Parameters:

  • url (String)

    URL for the release as returned from .releases

Returns:

  • (Sawyer::Resource)

    The release

See Also:



44
45
46
47
# File 'lib/octokit/client/releases.rb', line 44

def release(url, options = {})
  options[:accept] ||= PREVIEW_MEDIA_TYPE
  get url, options
end

#release_asset(asset_url, options = {}) ⇒ Sawyer::Resource

Get a single release asset

Parameters:

  • asset_url (String)

    URL for the asset as returned from .release_assets

Returns:

  • (Sawyer::Resource)

    The release asset

See Also:



116
117
118
119
# File 'lib/octokit/client/releases.rb', line 116

def release_asset(asset_url, options = {})
  options[:accept] ||= PREVIEW_MEDIA_TYPE
  get(asset_url, options)
end

#release_assets(release_url, options = {}) ⇒ Array<Sawyer::Resource>

List release assets

Parameters:

  • release_url (String)

    URL for the release as returned from .releases

Returns:

  • (Array<Sawyer::Resource>)

    A list of release assets

See Also:



81
82
83
84
# File 'lib/octokit/client/releases.rb', line 81

def release_assets(release_url, options = {})
  options[:accept] ||= PREVIEW_MEDIA_TYPE
  paginate release(release_url).rels[:assets].href, options
end

#releases(repo, options = {}) ⇒ Array<Sawyer::Resource> Also known as: list_releases

List releases for a repository

Parameters:

  • repo (String, Repository, Hash)

    A GitHub repository

Returns:

  • (Array<Sawyer::Resource>)

    A list of releases

See Also:



16
17
18
19
# File 'lib/octokit/client/releases.rb', line 16

def releases(repo, options = {})
  options[:accept] ||= PREVIEW_MEDIA_TYPE
  paginate "repos/#{Repository.new(repo)}/releases", options
end

#update_release(url, options = {}) ⇒ Sawyer::Resource Also known as: edit_release

Update a release

Parameters:

  • url (String)

    URL for the release as returned from .releases

  • tag_name (String)

    Git tag from which to create release

  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • :target_commitish (String)

    Specifies the commitish value that determines where the Git tag is created from.

  • :name (String)

    Name for the release

  • :body (String)

    Content for release notes

  • :draft (String)

    Mark this release as a draft

  • :prerelease (String)

    Mark this release as a pre-release

Returns:

  • (Sawyer::Resource)

    The release

See Also:



60
61
62
63
# File 'lib/octokit/client/releases.rb', line 60

def update_release(url, options = {})
  options[:accept] ||= PREVIEW_MEDIA_TYPE
  patch url, options
end

#update_release_asset(asset_url, options = {}) ⇒ Sawyer::Resource Also known as: edit_release_asset

Update a release asset

Parameters:

  • asset_url (String)

    URL for the asset as returned from .release_assets

  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • :name (String)

    The name for the file

  • :label (String)

    The download text for the file

Returns:

  • (Sawyer::Resource)

    The release asset

See Also:



128
129
130
131
# File 'lib/octokit/client/releases.rb', line 128

def update_release_asset(asset_url, options = {})
  options[:accept] ||= PREVIEW_MEDIA_TYPE
  patch(asset_url, options)
end

#upload_asset(release_url, path_or_file, options = {}) ⇒ Sawyer::Resource

Upload a release asset

Parameters:

  • release_url (String)

    URL for the release as returned from .releases

  • file (String)

    Path to file to upload

  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • :content_type (String)

    The MIME type for the file to upload

  • :name (String)

    The name for the file

Returns:

  • (Sawyer::Resource)

    The release asset

See Also:



94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/octokit/client/releases.rb', line 94

def upload_asset(release_url, path_or_file, options = {})
  options[:accept] ||= PREVIEW_MEDIA_TYPE
  file = File.new(path_or_file, "r+b") unless file.respond_to?(:read)
  options[:content_type] ||= content_type_from_file(file)
  raise Octokit::MissingContentType.new if options[:content_type].nil?
  unless name = options[:name]
    require 'pathname'
    name = Pathname.new(file).basename.to_s
  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
end