class Released::Goals::GemPushed

Constants

BASE_URL

Public Class Methods

new(config = {}) click to toggle source
# File lib/released/goals/gem_pushed.rb, line 10
def initialize(config = {})
  @name = config.fetch('name')
  @version = config.fetch('version')

  @rubygems_repo = Gems::Client.new(
    key: config.fetch('authorization'),
    host: config.fetch('rubygems_base_url', BASE_URL),
  )
end

Public Instance Methods

achieved?() click to toggle source
# File lib/released/goals/gem_pushed.rb, line 46
def achieved?
  gems = @rubygems_repo.gems
  if gems =~ /Access Denied/
    raise 'Authorization failed'
  end

  gems.any? { |g| g['name'] == @name && g['version'] == @version }
end
assess() click to toggle source
# File lib/released/goals/gem_pushed.rb, line 24
def assess
  gems = @rubygems_repo.gems
  if gems =~ /Access Denied/
    raise 'Authorization failed'
  end

  unless gems.any? { |g| g['name'] == @name }
    raise 'List of owned gems does not include request gem'
  end
end
failure_reason() click to toggle source
# File lib/released/goals/gem_pushed.rb, line 55
def failure_reason
  "list of gems does not contain “#{@name}”, version #{@version}"
end
to_s() click to toggle source
# File lib/released/goals/gem_pushed.rb, line 20
def to_s
  "gem pushed (#{@name})"
end
try_achieve() click to toggle source
# File lib/released/goals/gem_pushed.rb, line 35
def try_achieve
  filename = @name + '-' + @version + '.gem'
  unless File.file?(filename)
    raise "no such gem file: #{filename}"
  end

  File.open(filename, 'r') do |io|
    @rubygems_repo.push(io)
  end
end