class Bun::VersionFetcher

Constants

RUBYGEMS_GEM_URL

Attributes

arguments[R]
gem[R]

Public Class Methods

new(gem, arguments) click to toggle source
# File lib/bun/version_fetcher.rb, line 9
def initialize(gem, arguments)
  @gem = gem
  @arguments = arguments
end

Public Instance Methods

fetch_latest_version() click to toggle source
# File lib/bun/version_fetcher.rb, line 14
def fetch_latest_version
  version = nil

  with_optional_spinner do
    json_response = JSON.parse(fetch)
    version = json_response["version"]
  end

  version
end
with_optional_spinner() { || ... } click to toggle source
# File lib/bun/version_fetcher.rb, line 25
def with_optional_spinner
  if arguments.print?
    yield
  else
    spinner = TTY::Spinner.new("[:spinner] Finding latest gem version for \"#{gem}\"...")
    spinner.auto_spin
    yield
    spinner.stop("Done!")
  end
end

Private Instance Methods

fetch() click to toggle source
# File lib/bun/version_fetcher.rb, line 38
def fetch
  open("#{RUBYGEMS_GEM_URL}/#{gem}.json").read
rescue OpenURI::HTTPError
  raise ::Bun::Errors::GemNotFoundError.new("Aborting. Gem not found: #{gem}")
end