Class: Bun::VersionFetcher

Inherits:
Object
  • Object
show all
Defined in:
lib/bun/version_fetcher.rb

Constant Summary collapse

RUBYGEMS_SEARCH_URL =
"https://rubygems.org/api/v1/search.json"

Instance Method Summary collapse

Constructor Details

#initialize(gem, arguments) ⇒ VersionFetcher

Returns a new instance of VersionFetcher.



9
10
11
12
# File 'lib/bun/version_fetcher.rb', line 9

def initialize(gem, arguments)
  @gem = gem
  @arguments = arguments
end

Instance Method Details

#fetch_latest_versionObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/bun/version_fetcher.rb', line 14

def fetch_latest_version
  version = nil

  with_optional_spinner do
    response = open("#{RUBYGEMS_SEARCH_URL}?query=#{gem}").read
    json_response = JSON.parse(response)
    latest_gem_attributes = json_response.
      find {|attributes| attributes["name"] == gem }

    unless latest_gem_attributes
      raise ::Bun::Errors::GemNotFoundError.new("Aborting. Gem not found: #{gem}")
    end

    version = latest_gem_attributes["version"]
  end

  version
end

#with_optional_spinnerObject



33
34
35
36
37
38
39
40
41
42
# File 'lib/bun/version_fetcher.rb', line 33

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