class Dpl::Providers::Releases
Constants
- OCTOKIT_OPTS
- TIMEOUTS
- URL
Public Instance Methods
api()
click to toggle source
# File lib/dpl/providers/releases.rb, line 206 def api @api ||= Octokit::Client.new(**creds, auto_paginate: true, connection_options: { request: TIMEOUTS }) end
asset(name)
click to toggle source
# File lib/dpl/providers/releases.rb, line 186 def asset(name) api.release_assets(url).detect { |asset| asset.name == name } end
content_type(file)
click to toggle source
# File lib/dpl/providers/releases.rb, line 138 def content_type(file) type = MIME::Types.type_for(file).first type ||= 'application/octet-stream' type.to_s end
create_release()
click to toggle source
# File lib/dpl/providers/releases.rb, line 159 def create_release api.create_release(slug, local_tag, octokit_opts.merge(draft: true)) rescue Octokit::NotFound error :insufficient_perm end
creds()
click to toggle source
# File lib/dpl/providers/releases.rb, line 210 def creds username && password ? { login: username, password: } : { access_token: token } end
delete(asset, file)
click to toggle source
# File lib/dpl/providers/releases.rb, line 111 def delete(asset, file) info :overwrite_existing, file api.delete_release_asset(asset.url) end
deploy()
click to toggle source
# File lib/dpl/providers/releases.rb, line 92 def deploy upload_files api.update_release(url, octokit_opts) end
env_tag()
click to toggle source
# File lib/dpl/providers/releases.rb, line 169 def env_tag tag = ENV['TRAVIS_TAG'] tag unless tag.to_s.empty? end
exists?(file)
click to toggle source
# File lib/dpl/providers/releases.rb, line 220 def exists?(file) return true if File.exist?(file) error :missing_file, file false end
file?(file)
click to toggle source
# File lib/dpl/providers/releases.rb, line 227 def file?(file) return true if File.file?(file) warn :not_a_file, file false end
files()
click to toggle source
# File lib/dpl/providers/releases.rb, line 214 def files files = file_glob? ? Dir.glob("{#{file.join(',')}}").uniq : file files = files.select { |file| exists?(file) } files.select { |file| file?(file) } end
local_tag()
click to toggle source
# File lib/dpl/providers/releases.rb, line 165 def local_tag env_tag || git_tag end
login()
click to toggle source
# File lib/dpl/providers/releases.rb, line 86 def login user.login info :login, user.login error :insufficient_scopes unless sufficient_scopes? end
octokit_opts()
click to toggle source
# File lib/dpl/providers/releases.rb, line 116 def octokit_opts opts = with_tag(self.opts.dup) opts = with_target_commitish(opts) opts = opts.select { |key, _| OCTOKIT_OPTS.include?(key) } compact(opts.merge(body: release_notes, draft: draft?)) end
release()
click to toggle source
# File lib/dpl/providers/releases.rb, line 155 def release releases.detect { |release| release.tag_name == local_tag } end
release_notes()
click to toggle source
Calls superclass method
# File lib/dpl/providers/releases.rb, line 190 def release_notes super || release_notes_file || nil end
release_notes_file()
click to toggle source
Calls superclass method
# File lib/dpl/providers/releases.rb, line 194 def release_notes_file release_notes_file? && exists?(super) && read(super) end
releases()
click to toggle source
# File lib/dpl/providers/releases.rb, line 202 def releases @releases ||= api.releases(slug) end
same_repo?()
click to toggle source
# File lib/dpl/providers/releases.rb, line 182 def same_repo? slug == repo_slug end
slug()
click to toggle source
# File lib/dpl/providers/releases.rb, line 178 def slug repo || repo_slug end
sufficient_scopes?()
click to toggle source
# File lib/dpl/providers/releases.rb, line 174 def sufficient_scopes? api.scopes.include?('public_repo') || api.scopes.include?('repo') end
upload_file(path)
click to toggle source
# File lib/dpl/providers/releases.rb, line 101 def upload_file(path) file = normalize_filename(path) asset = asset(file) return info :skip_existing, file if asset && !overwrite? delete(asset, file) if asset info :upload_file, file api.upload_asset(url, path, name: file, content_type: content_type(path)) end
upload_files()
click to toggle source
# File lib/dpl/providers/releases.rb, line 97 def upload_files files.each { |file| upload_file(file) } end
url()
click to toggle source
# File lib/dpl/providers/releases.rb, line 144 def url if release_number? format(URL, slug, release_number) elsif release release.rels[:self].href else create_release.rels[:self].href end end
user()
click to toggle source
# File lib/dpl/providers/releases.rb, line 198 def user @user ||= api.user end
validate()
click to toggle source
# File lib/dpl/providers/releases.rb, line 80 def validate info :deploy shell :git_fetch_tags if env_tag.nil? info :local_tag end
with_tag(opts)
click to toggle source
# File lib/dpl/providers/releases.rb, line 124 def with_tag(opts) return opts if tag_name? || draft? info :set_tag_name, local_tag opts.merge(tag_name: local_tag) end
with_target_commitish(opts)
click to toggle source
# File lib/dpl/providers/releases.rb, line 131 def with_target_commitish(opts) return opts if target_commitish? || !same_repo? info :set_target_commitish, git_sha opts.merge(target_commitish: git_sha) end