Sha256: acc4d7c2e2a9e5af11d15b4f07441e38b14854144ad38fb2ee84112d629cc266

Contents?: true

Size: 1.9 KB

Versions: 31

Compression:

Stored size: 1.9 KB

Contents

module Fastlane
  # Alert the user when updates for plugins are available
  class PluginUpdateManager
    def self.start_looking_for_updates
      return if ENV["FASTLANE_SKIP_UPDATE_CHECK"]

      Thread.new do
        self.plugin_references.each do |plugin_name, current_plugin|
          begin
            self.server_results[plugin_name] = fetch_latest_version(plugin_name)
          rescue
          end
        end
      end
    end

    def self.show_update_status
      return if ENV["FASTLANE_SKIP_UPDATE_CHECK"]

      # We set self.server_results to be nil
      # this way the table is not printed twice
      # (next to the summary table or when an exception happens)
      return unless self.server_results.count > 0

      rows = []
      self.plugin_references.each do |plugin_name, current_plugin|
        latest_version = self.server_results[plugin_name]
        next if latest_version.nil?
        current_version = Gem::Version.new(current_plugin[:version_number])
        next if current_version >= latest_version

        rows << [
          plugin_name.gsub(PluginManager.plugin_prefix, ''),
          current_version.to_s.red,
          latest_version.to_s.green
        ]
      end

      if rows.empty?
        UI.verbose("All plugins are up to date")
        return
      end

      puts Terminal::Table.new({
        rows: rows,
        title: "Plugin updates available".yellow,
        headings: ["Plugin", "Your Version", "Latest Version"]
      })
      UI.message "To update all plugins, just run"
      UI.command "fastlane update_plugins"
      puts ''
      @server_results = nil
    end

    def self.plugin_references
      Fastlane.plugin_manager.plugin_references
    end

    def self.fetch_latest_version(gem_name)
      Gem::Version.new(PluginManager.fetch_gem_info_from_rubygems(gem_name)["version"])
    rescue
      nil
    end

    def self.server_results
      @server_results ||= {}
    end
  end
end

Version data entries

31 entries across 31 versions & 1 rubygems

Version Path
fastlane-2.1.1 fastlane/lib/fastlane/plugins/plugin_update_manager.rb
fastlane-2.1.0 fastlane/lib/fastlane/plugins/plugin_update_manager.rb
fastlane-2.0.5 fastlane/lib/fastlane/plugins/plugin_update_manager.rb
fastlane-2.0.4 fastlane/lib/fastlane/plugins/plugin_update_manager.rb
fastlane-2.0.3 fastlane/lib/fastlane/plugins/plugin_update_manager.rb
fastlane-2.0.2 fastlane/lib/fastlane/plugins/plugin_update_manager.rb
fastlane-2.0.1 fastlane/lib/fastlane/plugins/plugin_update_manager.rb
fastlane-1.111.0 lib/fastlane/plugins/plugin_update_manager.rb
fastlane-1.110.0 lib/fastlane/plugins/plugin_update_manager.rb
fastlane-1.109.0 lib/fastlane/plugins/plugin_update_manager.rb
fastlane-1.108.0 lib/fastlane/plugins/plugin_update_manager.rb
fastlane-1.107.0 lib/fastlane/plugins/plugin_update_manager.rb
fastlane-1.106.2 lib/fastlane/plugins/plugin_update_manager.rb
fastlane-1.106.1 lib/fastlane/plugins/plugin_update_manager.rb
fastlane-1.106.0 lib/fastlane/plugins/plugin_update_manager.rb
fastlane-1.105.3 lib/fastlane/plugins/plugin_update_manager.rb
fastlane-1.105.2 lib/fastlane/plugins/plugin_update_manager.rb
fastlane-1.105.1 lib/fastlane/plugins/plugin_update_manager.rb
fastlane-1.105.0 lib/fastlane/plugins/plugin_update_manager.rb
fastlane-1.104.0 lib/fastlane/plugins/plugin_update_manager.rb