# File lib/rubygems/commands/update_command.rb, line 33
      def execute
        if options[:system]
          say "Updating RubyGems..."
          if ! options[:args].empty?
            fail "No gem names are allowed with the --system option"
          end
          options[:args] = ["rubygems-update"]
        else
          say "Updating installed gems..."
        end
        hig = highest_installed_gems = {}
        Gem::SourceIndex.from_installed_gems.each do |name, spec|
          if hig[spec.name].nil? or hig[spec.name].version < spec.version
            hig[spec.name] = spec
          end
        end
        remote_gemspecs = Gem::SourceInfoCache.search(//)
        gems_to_update =  if(options[:args].empty?) then
                            which_to_update(highest_installed_gems, remote_gemspecs)
                          else
                            options[:args]
                          end
        options[:domain] = :remote # install from remote source
        install_command = command_manager['install']
        gems_to_update.uniq.sort.each do |name|
          say "Attempting remote update of #{name}"
          options[:args] = [name]
          install_command.merge_options(options)
          install_command.execute
        end
        if gems_to_update.include?("rubygems-update")
          latest_ruby_gem = remote_gemspecs.select { |s|
            s.name == 'rubygems-update' 
          }.sort_by { |s|
            s.version
          }.last
          say "Updating version of RubyGems to #{latest_ruby_gem.version}"
          do_rubygems_update(latest_ruby_gem.version.to_s)
        end
        if(options[:system]) then
          say "RubyGems system software updated"
        else
          say "Gems: [#{gems_to_update.uniq.sort.collect{|g| g.to_s}.join(', ')}] updated"
        end
      end