opt
/
alt
/
ruby26
/
lib64
/
ruby
/
2.6.0
/
rubygems
/
commands
/
Go to Home Directory
+
Upload
Create File
root@0UT1S:~$
Execute
By Order of Mr.0UT1S
[DIR] ..
N/A
build_command.rb
2.03 KB
Rename
Delete
cert_command.rb
9.02 KB
Rename
Delete
check_command.rb
2.23 KB
Rename
Delete
cleanup_command.rb
4.48 KB
Rename
Delete
contents_command.rb
4.07 KB
Rename
Delete
dependency_command.rb
5.14 KB
Rename
Delete
environment_command.rb
5.16 KB
Rename
Delete
fetch_command.rb
1.77 KB
Rename
Delete
generate_index_command.rb
2.55 KB
Rename
Delete
help_command.rb
10.14 KB
Rename
Delete
info_command.rb
713 bytes
Rename
Delete
install_command.rb
8.40 KB
Rename
Delete
list_command.rb
939 bytes
Rename
Delete
lock_command.rb
2.69 KB
Rename
Delete
mirror_command.rb
624 bytes
Rename
Delete
open_command.rb
1.96 KB
Rename
Delete
outdated_command.rb
852 bytes
Rename
Delete
owner_command.rb
2.82 KB
Rename
Delete
pristine_command.rb
5.39 KB
Rename
Delete
push_command.rb
3.53 KB
Rename
Delete
query_command.rb
9.28 KB
Rename
Delete
rdoc_command.rb
2.47 KB
Rename
Delete
search_command.rb
884 bytes
Rename
Delete
server_command.rb
2.38 KB
Rename
Delete
setup_command.rb
17.81 KB
Rename
Delete
signin_command.rb
890 bytes
Rename
Delete
signout_command.rb
896 bytes
Rename
Delete
sources_command.rb
5.18 KB
Rename
Delete
specification_command.rb
3.27 KB
Rename
Delete
stale_command.rb
962 bytes
Rename
Delete
uninstall_command.rb
5.41 KB
Rename
Delete
unpack_command.rb
5.07 KB
Rename
Delete
update_command.rb
6.99 KB
Rename
Delete
which_command.rb
2.15 KB
Rename
Delete
yank_command.rb
2.29 KB
Rename
Delete
# frozen_string_literal: true require 'rubygems/command' require 'rubygems/command_manager' require 'rubygems/dependency_installer' require 'rubygems/install_update_options' require 'rubygems/local_remote_options' require 'rubygems/spec_fetcher' require 'rubygems/version_option' require 'rubygems/install_message' # must come before rdoc for messaging require 'rubygems/rdoc' class Gem::Commands::UpdateCommand < Gem::Command include Gem::InstallUpdateOptions include Gem::LocalRemoteOptions include Gem::VersionOption attr_reader :installer # :nodoc: attr_reader :updated # :nodoc: def initialize super 'update', 'Update installed gems to the latest version', :document => %w[rdoc ri], :force => false add_install_update_options OptionParser.accept Gem::Version do |value| Gem::Version.new value value end add_option('--system [VERSION]', Gem::Version, 'Update the RubyGems system software') do |value, options| value = true unless value options[:system] = value end add_local_remote_options add_platform_option add_prerelease_option "as update targets" @updated = [] @installer = nil end def arguments # :nodoc: "GEMNAME name of gem to update" end def defaults_str # :nodoc: "--document --no-force --install-dir #{Gem.dir}" end def description # :nodoc: <<-EOF The update command will update your gems to the latest version. The update command does not remove the previous version. Use the cleanup command to remove old versions. EOF end def usage # :nodoc: "#{program_name} GEMNAME [GEMNAME ...]" end def check_latest_rubygems(version) # :nodoc: if Gem.rubygems_version == version say "Latest version already installed. Done." terminate_interaction end options[:user_install] = false end def check_update_arguments # :nodoc: unless options[:args].empty? alert_error "Gem names are not allowed with the --system option" terminate_interaction 1 end end def execute if options[:system] update_rubygems return end hig = highest_installed_gems gems_to_update = which_to_update hig, options[:args].uniq if options[:explain] say "Gems to update:" gems_to_update.each do |(name, version)| say " #{name}-#{version}" end return end say "Updating installed gems" updated = update_gems gems_to_update updated_names = updated.map { |spec| spec.name } not_updated_names = options[:args].uniq - updated_names if updated.empty? say "Nothing to update" else say "Gems updated: #{updated_names.join(' ')}" say "Gems already up-to-date: #{not_updated_names.join(' ')}" unless not_updated_names.empty? end end def fetch_remote_gems(spec) # :nodoc: dependency = Gem::Dependency.new spec.name, "> #{spec.version}" dependency.prerelease = options[:prerelease] fetcher = Gem::SpecFetcher.fetcher spec_tuples, errors = fetcher.search_for_dependency dependency error = errors.find { |e| e.respond_to? :exception } raise error if error spec_tuples end def highest_installed_gems # :nodoc: hig = {} # highest installed gems Gem::Specification.each do |spec| if hig[spec.name].nil? or hig[spec.name].version < spec.version hig[spec.name] = spec end end hig end def highest_remote_version(spec) # :nodoc: spec_tuples = fetch_remote_gems spec matching_gems = spec_tuples.select do |g,_| g.name == spec.name and g.match_platform? end highest_remote_gem = matching_gems.max_by { |g,_| g.version } highest_remote_gem ||= [Gem::NameTuple.null] highest_remote_gem.first.version end def install_rubygems(version) # :nodoc: args = update_rubygems_arguments update_dir = File.join Gem.dir, 'gems', "rubygems-update-#{version}" Dir.chdir update_dir do say "Installing RubyGems #{version}" installed = system Gem.ruby, '--disable-gems', 'setup.rb', *args say "RubyGems system software updated" if installed end end def rubygems_target_version version = options[:system] update_latest = version == true if update_latest version = Gem::Version.new Gem::VERSION requirement = Gem::Requirement.new ">= #{Gem::VERSION}" else version = Gem::Version.new version requirement = Gem::Requirement.new version end rubygems_update = Gem::Specification.new rubygems_update.name = 'rubygems-update' rubygems_update.version = version hig = { 'rubygems-update' => rubygems_update } gems_to_update = which_to_update hig, options[:args], :system _, up_ver = gems_to_update.first target = if update_latest up_ver else version end return target, requirement end def update_gem(name, version = Gem::Requirement.default) return if @updated.any? { |spec| spec.name == name } update_options = options.dup update_options[:prerelease] = version.prerelease? @installer = Gem::DependencyInstaller.new update_options say "Updating #{name}" begin @installer.install name, Gem::Requirement.new(version) rescue Gem::InstallError, Gem::DependencyError => e alert_error "Error installing #{name}:\n\t#{e.message}" end @installer.installed_gems.each do |spec| @updated << spec end end def update_gems(gems_to_update) gems_to_update.uniq.sort.each do |(name, version)| update_gem name, version end @updated end ## # Update RubyGems software to the latest version. def update_rubygems check_update_arguments version, requirement = rubygems_target_version check_latest_rubygems version update_gem 'rubygems-update', version installed_gems = Gem::Specification.find_all_by_name 'rubygems-update', requirement version = installed_gems.first.version install_rubygems version end def update_rubygems_arguments # :nodoc: args = [] args << '--prefix' << Gem.prefix if Gem.prefix # TODO use --document for >= 1.9 , --no-rdoc --no-ri < 1.9 args << '--no-rdoc' unless options[:document].include? 'rdoc' args << '--no-ri' unless options[:document].include? 'ri' args << '--no-format-executable' if options[:no_format_executable] args << '--previous-version' << Gem::VERSION if options[:system] == true or Gem::Version.new(options[:system]) >= Gem::Version.new(2) args end def which_to_update(highest_installed_gems, gem_names, system = false) result = [] highest_installed_gems.each do |l_name, l_spec| next if not gem_names.empty? and gem_names.none? { |name| name == l_spec.name } highest_remote_ver = highest_remote_version l_spec if system or (l_spec.version < highest_remote_ver) result << [l_spec.name, [l_spec.version, highest_remote_ver].max] end end result end end
Save