Class: FastlaneCore::UpdateChecker
- Inherits:
-
Object
- Object
- FastlaneCore::UpdateChecker
- Defined in:
- lib/fastlane_core/update_checker.rb
Overview
Verifies, the user runs the latest version of this gem
Constant Summary collapse
- UPDATE_URL =
This web service is fully open source: github.com/fastlane/refresher
"https://fastlane-refresher.herokuapp.com/"
Class Method Summary collapse
- .fetch_latest(gem_name) ⇒ Object
- .finished_running(gem_name) ⇒ Object
- .server_results ⇒ Object
- .show_update_message(gem_name, current_version) ⇒ Object
- .show_update_status(gem_name, current_version) ⇒ Object
- .start_looking_for_update(gem_name) ⇒ Object
- .update_available?(gem_name, current_version) ⇒ Boolean
Class Method Details
.fetch_latest(gem_name) ⇒ Object
57 58 59 60 61 |
# File 'lib/fastlane_core/update_checker.rb', line 57 def self.fetch_latest(gem_name) url = UPDATE_URL + gem_name url += "?ci=1" if Helper.is_ci? JSON.parse(Excon.post(url).body).fetch("version", nil) end |
.finished_running(gem_name) ⇒ Object
63 64 65 66 67 68 69 70 |
# File 'lib/fastlane_core/update_checker.rb', line 63 def self.finished_running(gem_name) time = (Time.now - @start_time).to_i url = UPDATE_URL + "time/#{gem_name}" url += "?time=#{time}" url += "&ci=1" if Helper.is_ci? Excon.post(url) end |
.server_results ⇒ Object
23 24 25 |
# File 'lib/fastlane_core/update_checker.rb', line 23 def self.server_results @@results ||= {} end |
.show_update_message(gem_name, current_version) ⇒ Object
46 47 48 49 50 51 52 53 54 55 |
# File 'lib/fastlane_core/update_checker.rb', line 46 def self.(gem_name, current_version) available = server_results[gem_name] puts "" puts '#######################################################################'.green puts "# #{gem_name} #{available} is available. You are on #{current_version}.".green puts "# It is recommended to use the latest version.".green puts "# Update using 'sudo gem update #{gem_name.downcase}'.".green puts "# To see what's new, open https://github.com/KrauseFx/#{gem_name}/releases.".green puts '#######################################################################'.green end |
.show_update_status(gem_name, current_version) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/fastlane_core/update_checker.rb', line 32 def self.show_update_status(gem_name, current_version) fork do begin finished_running(gem_name) rescue # we don't want to show a stack trace if something goes wrong end end if update_available?(gem_name, current_version) (gem_name, current_version) end end |
.start_looking_for_update(gem_name) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/fastlane_core/update_checker.rb', line 9 def self.start_looking_for_update(gem_name) return if Helper.is_test? return if ENV["FASTLANE_SKIP_UPDATE_CHECK"] @start_time = Time.now Thread.new do begin server_results[gem_name] = fetch_latest(gem_name) rescue end end end |
.update_available?(gem_name, current_version) ⇒ Boolean
27 28 29 30 |
# File 'lib/fastlane_core/update_checker.rb', line 27 def self.update_available?(gem_name, current_version) latest = server_results[gem_name] return (latest and Gem::Version.new(latest) > Gem::Version.new(current_version)) end |