Class: Bun::VersionFetcher
- Inherits:
-
Object
- Object
- Bun::VersionFetcher
- Defined in:
- lib/bun/version_fetcher.rb
Constant Summary collapse
- RUBYGEMS_SEARCH_URL =
"https://rubygems.org/api/v1/search.json"
Instance Method Summary collapse
- #fetch_latest_version ⇒ Object
-
#initialize(gem, arguments) ⇒ VersionFetcher
constructor
A new instance of VersionFetcher.
- #with_optional_spinner ⇒ Object
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_version ⇒ Object
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_spinner ⇒ Object
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 |