rubygems-update 3.2.30 → 3.4.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +1666 -994
- data/CONTRIBUTING.md +71 -15
- data/Manifest.txt +93 -37
- data/POLICIES.md +65 -16
- data/README.md +28 -13
- data/UPGRADING.md +5 -81
- data/bin/gem +2 -10
- data/bin/update_rubygems +5 -5
- data/bundler/CHANGELOG.md +647 -1
- data/bundler/README.md +3 -6
- data/bundler/UPGRADING.md +11 -4
- data/bundler/bundler.gemspec +8 -10
- data/bundler/exe/bundle +7 -11
- data/bundler/exe/bundler +1 -1
- data/bundler/lib/bundler/.document +1 -0
- data/bundler/lib/bundler/build_metadata.rb +3 -3
- data/bundler/lib/bundler/cli/add.rb +1 -1
- data/bundler/lib/bundler/cli/binstubs.rb +5 -1
- data/bundler/lib/bundler/cli/check.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +4 -2
- data/bundler/lib/bundler/cli/config.rb +10 -1
- data/bundler/lib/bundler/cli/console.rb +2 -2
- data/bundler/lib/bundler/cli/doctor.rb +10 -3
- data/bundler/lib/bundler/cli/gem.rb +136 -42
- data/bundler/lib/bundler/cli/info.rb +17 -3
- data/bundler/lib/bundler/cli/init.rb +6 -2
- data/bundler/lib/bundler/cli/install.rb +15 -33
- data/bundler/lib/bundler/cli/lock.rb +8 -5
- data/bundler/lib/bundler/cli/open.rb +6 -4
- data/bundler/lib/bundler/cli/outdated.rb +13 -6
- data/bundler/lib/bundler/cli/platform.rb +2 -2
- data/bundler/lib/bundler/cli/show.rb +1 -1
- data/bundler/lib/bundler/cli/update.rb +8 -4
- data/bundler/lib/bundler/cli/viz.rb +1 -1
- data/bundler/lib/bundler/cli.rb +67 -21
- data/bundler/lib/bundler/compact_index_client/cache.rb +1 -10
- data/bundler/lib/bundler/compact_index_client/updater.rb +53 -44
- data/bundler/lib/bundler/compact_index_client.rb +0 -6
- data/bundler/lib/bundler/constants.rb +1 -1
- data/bundler/lib/bundler/current_ruby.rb +18 -6
- data/bundler/lib/bundler/definition.rb +259 -242
- data/bundler/lib/bundler/dependency.rb +24 -71
- data/bundler/lib/bundler/digest.rb +1 -1
- data/bundler/lib/bundler/dsl.rb +29 -46
- data/bundler/lib/bundler/endpoint_specification.rb +15 -13
- data/bundler/lib/bundler/env.rb +2 -2
- data/bundler/lib/bundler/environment_preserver.rb +7 -3
- data/bundler/lib/bundler/errors.rb +15 -15
- data/bundler/lib/bundler/feature_flag.rb +0 -1
- data/bundler/lib/bundler/fetcher/base.rb +6 -8
- data/bundler/lib/bundler/fetcher/compact_index.rb +18 -25
- data/bundler/lib/bundler/fetcher/dependency.rb +2 -6
- data/bundler/lib/bundler/fetcher/downloader.rb +2 -5
- data/bundler/lib/bundler/fetcher/index.rb +0 -26
- data/bundler/lib/bundler/fetcher.rb +22 -29
- data/bundler/lib/bundler/force_platform.rb +18 -0
- data/bundler/lib/bundler/friendly_errors.rb +21 -7
- data/bundler/lib/bundler/gem_helper.rb +4 -4
- data/bundler/lib/bundler/gem_helpers.rb +9 -2
- data/bundler/lib/bundler/gem_version_promoter.rb +53 -98
- data/bundler/lib/bundler/graph.rb +3 -3
- data/bundler/lib/bundler/index.rb +13 -51
- data/bundler/lib/bundler/injector.rb +18 -4
- data/bundler/lib/bundler/inline.rb +9 -21
- data/bundler/lib/bundler/installer/gem_installer.rb +13 -5
- data/bundler/lib/bundler/installer/parallel_installer.rb +3 -33
- data/bundler/lib/bundler/installer/standalone.rb +42 -11
- data/bundler/lib/bundler/installer.rb +20 -44
- data/bundler/lib/bundler/lazy_specification.rb +72 -55
- data/bundler/lib/bundler/lockfile_generator.rb +3 -3
- data/bundler/lib/bundler/lockfile_parser.rb +28 -26
- data/bundler/lib/bundler/man/bundle-add.1 +21 -5
- data/bundler/lib/bundler/man/bundle-add.1.ronn +16 -4
- data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
- data/bundler/lib/bundler/man/bundle-cache.1 +7 -1
- data/bundler/lib/bundler/man/bundle-cache.1.ronn +7 -0
- data/bundler/lib/bundler/man/bundle-check.1 +1 -1
- data/bundler/lib/bundler/man/bundle-clean.1 +2 -2
- data/bundler/lib/bundler/man/bundle-clean.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-config.1 +34 -15
- data/bundler/lib/bundler/man/bundle-config.1.ronn +31 -19
- data/bundler/lib/bundler/man/bundle-console.1 +53 -0
- data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
- data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
- data/bundler/lib/bundler/man/bundle-exec.1 +6 -6
- data/bundler/lib/bundler/man/bundle-exec.1.ronn +6 -6
- data/bundler/lib/bundler/man/bundle-gem.1 +37 -34
- data/bundler/lib/bundler/man/bundle-gem.1.ronn +21 -5
- data/bundler/lib/bundler/man/bundle-help.1 +13 -0
- data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
- data/bundler/lib/bundler/man/bundle-info.1 +1 -1
- data/bundler/lib/bundler/man/bundle-init.1 +5 -1
- data/bundler/lib/bundler/man/bundle-init.1.ronn +2 -0
- data/bundler/lib/bundler/man/bundle-inject.1 +5 -2
- data/bundler/lib/bundler/man/bundle-inject.1.ronn +3 -1
- data/bundler/lib/bundler/man/bundle-install.1 +6 -31
- data/bundler/lib/bundler/man/bundle-install.1.ronn +8 -31
- data/bundler/lib/bundler/man/bundle-list.1 +1 -1
- data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
- data/bundler/lib/bundler/man/bundle-open.1 +22 -2
- data/bundler/lib/bundler/man/bundle-open.1.ronn +9 -1
- data/bundler/lib/bundler/man/bundle-outdated.1 +3 -10
- data/bundler/lib/bundler/man/bundle-outdated.1.ronn +1 -10
- data/bundler/lib/bundler/man/bundle-platform.1 +16 -6
- data/bundler/lib/bundler/man/bundle-platform.1.ronn +14 -7
- data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
- data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
- data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
- data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
- data/bundler/lib/bundler/man/bundle-show.1 +1 -1
- data/bundler/lib/bundler/man/bundle-update.1 +2 -2
- data/bundler/lib/bundler/man/bundle-update.1.ronn +2 -1
- data/bundler/lib/bundler/man/bundle-version.1 +35 -0
- data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
- data/bundler/lib/bundler/man/bundle-viz.1 +4 -1
- data/bundler/lib/bundler/man/bundle-viz.1.ronn +2 -0
- data/bundler/lib/bundler/man/bundle.1 +15 -10
- data/bundler/lib/bundler/man/bundle.1.ronn +12 -7
- data/bundler/lib/bundler/man/gemfile.5 +117 -80
- data/bundler/lib/bundler/man/gemfile.5.ronn +105 -84
- data/bundler/lib/bundler/man/index.txt +4 -0
- data/bundler/lib/bundler/match_metadata.rb +13 -0
- data/bundler/lib/bundler/match_platform.rb +0 -1
- data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
- data/bundler/lib/bundler/mirror.rb +5 -7
- data/bundler/lib/bundler/plugin/api/source.rb +4 -9
- data/bundler/lib/bundler/plugin/index.rb +4 -4
- data/bundler/lib/bundler/plugin/installer/git.rb +0 -4
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +0 -8
- data/bundler/lib/bundler/plugin/installer.rb +6 -3
- data/bundler/lib/bundler/plugin.rb +3 -1
- data/bundler/lib/bundler/process_lock.rb +1 -1
- data/bundler/lib/bundler/remote_specification.rb +7 -5
- data/bundler/lib/bundler/resolver/base.rb +109 -0
- data/bundler/lib/bundler/resolver/candidate.rb +94 -0
- data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
- data/bundler/lib/bundler/resolver/package.rb +72 -0
- data/bundler/lib/bundler/resolver/root.rb +25 -0
- data/bundler/lib/bundler/resolver/spec_group.rb +43 -71
- data/bundler/lib/bundler/resolver.rb +332 -308
- data/bundler/lib/bundler/ruby_dsl.rb +1 -1
- data/bundler/lib/bundler/ruby_version.rb +5 -18
- data/bundler/lib/bundler/rubygems_ext.rb +144 -25
- data/bundler/lib/bundler/rubygems_gem_installer.rb +32 -20
- data/bundler/lib/bundler/rubygems_integration.rb +24 -95
- data/bundler/lib/bundler/runtime.rb +2 -7
- data/bundler/lib/bundler/self_manager.rb +168 -0
- data/bundler/lib/bundler/settings.rb +5 -10
- data/bundler/lib/bundler/setup.rb +4 -1
- data/bundler/lib/bundler/shared_helpers.rb +17 -25
- data/bundler/lib/bundler/source/git/git_proxy.rb +219 -71
- data/bundler/lib/bundler/source/git.rb +23 -26
- data/bundler/lib/bundler/source/metadata.rb +3 -4
- data/bundler/lib/bundler/source/path/installer.rb +1 -22
- data/bundler/lib/bundler/source/path.rb +7 -7
- data/bundler/lib/bundler/source/rubygems.rb +91 -130
- data/bundler/lib/bundler/source/rubygems_aggregate.rb +1 -1
- data/bundler/lib/bundler/source.rb +4 -5
- data/bundler/lib/bundler/source_list.rb +19 -31
- data/bundler/lib/bundler/source_map.rb +15 -2
- data/bundler/lib/bundler/spec_set.rb +63 -35
- data/bundler/lib/bundler/stub_specification.rb +5 -3
- data/bundler/lib/bundler/templates/Executable +3 -5
- data/bundler/lib/bundler/templates/Executable.bundler +6 -11
- data/bundler/lib/bundler/templates/Executable.standalone +4 -4
- data/bundler/lib/bundler/templates/Gemfile +0 -2
- data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +8 -2
- data/bundler/lib/bundler/templates/newgem/README.md.tt +7 -11
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +27 -3
- data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +13 -3
- data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +13 -4
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +22 -16
- data/bundler/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
- data/bundler/lib/bundler/templates/newgem/standard.yml.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/test/minitest/{newgem_test.rb.tt → test_newgem.rb.tt} +1 -1
- data/bundler/lib/bundler/ui/shell.rb +36 -13
- data/bundler/lib/bundler/ui/silent.rb +21 -5
- data/bundler/lib/bundler/uri_normalizer.rb +23 -0
- data/bundler/lib/bundler/vendor/.document +1 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1350 -408
- data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
- data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +243 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +6 -6
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +1 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +6 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +6 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +9 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +19 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +23 -5
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/bundler/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
- data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +452 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +76 -91
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +32 -13
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +40 -3
- data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +2 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +2 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -3
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +14 -21
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +11 -17
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +83 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +23 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +3 -3
- data/bundler/lib/bundler/vendored_persistent.rb +1 -33
- data/bundler/lib/bundler/{vendored_molinillo.rb → vendored_pub_grub.rb} +1 -1
- data/bundler/lib/bundler/{vendored_tmpdir.rb → vendored_tsort.rb} +1 -1
- data/bundler/lib/bundler/version.rb +5 -1
- data/bundler/lib/bundler/worker.rb +5 -7
- data/bundler/lib/bundler.rb +50 -77
- data/hide_lib_for_update/note.txt +0 -4
- data/lib/rubygems/available_set.rb +3 -3
- data/lib/rubygems/basic_specification.rb +12 -12
- data/lib/rubygems/bundler_version_finder.rb +14 -46
- data/lib/rubygems/command.rb +47 -39
- data/lib/rubygems/command_manager.rb +34 -13
- data/lib/rubygems/commands/build_command.rb +11 -8
- data/lib/rubygems/commands/cert_command.rb +39 -39
- data/lib/rubygems/commands/check_command.rb +20 -20
- data/lib/rubygems/commands/cleanup_command.rb +23 -23
- data/lib/rubygems/commands/contents_command.rb +13 -13
- data/lib/rubygems/commands/dependency_command.rb +35 -45
- data/lib/rubygems/commands/environment_command.rb +10 -7
- data/lib/rubygems/commands/exec_command.rb +248 -0
- data/lib/rubygems/commands/fetch_command.rb +32 -13
- data/lib/rubygems/commands/generate_index_command.rb +17 -17
- data/lib/rubygems/commands/help_command.rb +6 -6
- data/lib/rubygems/commands/info_command.rb +3 -3
- data/lib/rubygems/commands/install_command.rb +31 -24
- data/lib/rubygems/commands/list_command.rb +4 -4
- data/lib/rubygems/commands/lock_command.rb +4 -4
- data/lib/rubygems/commands/mirror_command.rb +3 -3
- data/lib/rubygems/commands/open_command.rb +9 -9
- data/lib/rubygems/commands/outdated_command.rb +5 -5
- data/lib/rubygems/commands/owner_command.rb +17 -12
- data/lib/rubygems/commands/pristine_command.rb +64 -49
- data/lib/rubygems/commands/push_command.rb +16 -16
- data/lib/rubygems/commands/query_command.rb +9 -9
- data/lib/rubygems/commands/rdoc_command.rb +26 -25
- data/lib/rubygems/commands/search_command.rb +4 -4
- data/lib/rubygems/commands/server_command.rb +16 -79
- data/lib/rubygems/commands/setup_command.rb +172 -173
- data/lib/rubygems/commands/signin_command.rb +9 -9
- data/lib/rubygems/commands/signout_command.rb +7 -7
- data/lib/rubygems/commands/sources_command.rb +22 -22
- data/lib/rubygems/commands/specification_command.rb +18 -18
- data/lib/rubygems/commands/stale_command.rb +2 -2
- data/lib/rubygems/commands/uninstall_command.rb +43 -40
- data/lib/rubygems/commands/unpack_command.rb +13 -13
- data/lib/rubygems/commands/update_command.rb +61 -72
- data/lib/rubygems/commands/which_command.rb +7 -7
- data/lib/rubygems/commands/yank_command.rb +11 -11
- data/lib/rubygems/compatibility.rb +4 -2
- data/lib/rubygems/config_file.rb +58 -25
- data/lib/rubygems/core_ext/kernel_gem.rb +1 -6
- data/lib/rubygems/core_ext/kernel_require.rb +108 -115
- data/lib/rubygems/core_ext/kernel_warn.rb +33 -37
- data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
- data/lib/rubygems/defaults.rb +32 -36
- data/lib/rubygems/dependency.rb +20 -17
- data/lib/rubygems/dependency_installer.rb +37 -37
- data/lib/rubygems/dependency_list.rb +7 -7
- data/lib/rubygems/deprecate.rb +55 -8
- data/lib/rubygems/doctor.rb +21 -21
- data/lib/rubygems/errors.rb +3 -6
- data/lib/rubygems/exceptions.rb +35 -7
- data/lib/rubygems/ext/build_error.rb +1 -1
- data/lib/rubygems/ext/builder.rb +51 -22
- data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +27 -0
- data/lib/rubygems/ext/cargo_builder.rb +360 -0
- data/lib/rubygems/ext/cmake_builder.rb +2 -2
- data/lib/rubygems/ext/configure_builder.rb +1 -1
- data/lib/rubygems/ext/ext_conf_builder.rb +35 -59
- data/lib/rubygems/ext/rake_builder.rb +3 -3
- data/lib/rubygems/ext.rb +7 -6
- data/lib/rubygems/gem_runner.rb +12 -16
- data/lib/rubygems/gemcutter_utilities.rb +60 -21
- data/lib/rubygems/indexer.rb +30 -28
- data/lib/rubygems/install_default_message.rb +2 -2
- data/lib/rubygems/install_message.rb +2 -2
- data/lib/rubygems/install_update_options.rb +70 -61
- data/lib/rubygems/installer.rb +135 -87
- data/lib/rubygems/installer_uninstaller_utils.rb +2 -2
- data/lib/rubygems/local_remote_options.rb +22 -24
- data/lib/rubygems/mock_gem_ui.rb +2 -2
- data/lib/rubygems/name_tuple.rb +6 -7
- data/lib/rubygems/optparse/.document +1 -0
- data/lib/rubygems/optparse/COPYING +56 -0
- data/lib/rubygems/optparse/lib/optionparser.rb +2 -0
- data/lib/rubygems/optparse/lib/optparse/ac.rb +54 -0
- data/lib/rubygems/optparse/lib/optparse/date.rb +18 -0
- data/lib/rubygems/optparse/lib/optparse/kwargs.rb +22 -0
- data/lib/rubygems/optparse/lib/optparse/shellwords.rb +7 -0
- data/lib/rubygems/optparse/lib/optparse/time.rb +11 -0
- data/lib/rubygems/optparse/lib/optparse/uri.rb +7 -0
- data/lib/rubygems/optparse/lib/optparse/version.rb +71 -0
- data/lib/rubygems/optparse/lib/optparse.rb +2308 -0
- data/lib/rubygems/optparse.rb +3 -0
- data/lib/rubygems/package/file_source.rb +2 -2
- data/lib/rubygems/package/old.rb +9 -9
- data/lib/rubygems/package/tar_header.rb +62 -62
- data/lib/rubygems/package/tar_reader/entry.rb +90 -9
- data/lib/rubygems/package/tar_reader.rb +1 -29
- data/lib/rubygems/package/tar_writer.rb +7 -7
- data/lib/rubygems/package.rb +77 -60
- data/lib/rubygems/package_task.rb +4 -4
- data/lib/rubygems/path_support.rb +1 -6
- data/lib/rubygems/platform.rb +94 -61
- data/lib/rubygems/psych_tree.rb +1 -1
- data/lib/rubygems/query_utils.rb +49 -51
- data/lib/rubygems/rdoc.rb +2 -2
- data/lib/rubygems/remote_fetcher.rb +27 -27
- data/lib/rubygems/request/connection_pools.rb +4 -4
- data/lib/rubygems/request/http_pool.rb +1 -1
- data/lib/rubygems/request.rb +24 -24
- data/lib/rubygems/request_set/gem_dependency_api.rb +122 -123
- data/lib/rubygems/request_set/lockfile/parser.rb +26 -26
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +4 -4
- data/lib/rubygems/request_set/lockfile.rb +9 -9
- data/lib/rubygems/request_set.rb +18 -18
- data/lib/rubygems/requirement.rb +15 -15
- data/lib/rubygems/resolver/activation_request.rb +3 -3
- data/lib/rubygems/resolver/api_set.rb +4 -4
- data/lib/rubygems/resolver/api_specification.rb +6 -6
- data/lib/rubygems/resolver/best_set.rb +5 -5
- data/lib/rubygems/resolver/conflict.rb +10 -10
- data/lib/rubygems/resolver/dependency_request.rb +2 -2
- data/lib/rubygems/resolver/git_set.rb +2 -2
- data/lib/rubygems/resolver/git_specification.rb +6 -6
- data/lib/rubygems/resolver/index_set.rb +3 -3
- data/lib/rubygems/resolver/index_specification.rb +6 -5
- data/lib/rubygems/resolver/installed_specification.rb +4 -4
- data/lib/rubygems/resolver/installer_set.rb +21 -26
- data/lib/rubygems/resolver/local_specification.rb +2 -2
- data/lib/rubygems/resolver/lock_set.rb +4 -4
- data/lib/rubygems/resolver/lock_specification.rb +4 -4
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +3 -3
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +32 -26
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/lib/rubygems/resolver/molinillo.rb +1 -1
- data/lib/rubygems/resolver/specification.rb +1 -1
- data/lib/rubygems/resolver/stats.rb +1 -1
- data/lib/rubygems/resolver/vendor_set.rb +1 -1
- data/lib/rubygems/resolver/vendor_specification.rb +3 -3
- data/lib/rubygems/resolver.rb +40 -40
- data/lib/rubygems/s3_uri_signer.rb +6 -6
- data/lib/rubygems/safe_yaml.rb +10 -10
- data/lib/rubygems/security/policies.rb +47 -47
- data/lib/rubygems/security/policy.rb +19 -21
- data/lib/rubygems/security/signer.rb +5 -5
- data/lib/rubygems/security/trust_dir.rb +4 -4
- data/lib/rubygems/security.rb +37 -43
- data/lib/rubygems/security_option.rb +7 -7
- data/lib/rubygems/source/git.rb +25 -24
- data/lib/rubygems/source/installed.rb +1 -1
- data/lib/rubygems/source/local.rb +2 -2
- data/lib/rubygems/source/specific_file.rb +1 -1
- data/lib/rubygems/source.rb +27 -32
- data/lib/rubygems/source_list.rb +5 -9
- data/lib/rubygems/spec_fetcher.rb +37 -37
- data/lib/rubygems/specification.rb +265 -211
- data/lib/rubygems/specification_policy.rb +49 -30
- data/lib/rubygems/stub_specification.rb +24 -27
- data/lib/rubygems/text.rb +22 -21
- data/lib/rubygems/tsort/.document +1 -0
- data/lib/rubygems/tsort/LICENSE.txt +22 -0
- data/lib/rubygems/tsort/lib/tsort.rb +452 -0
- data/lib/rubygems/tsort.rb +3 -0
- data/lib/rubygems/uninstaller.rb +29 -26
- data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
- data/lib/rubygems/update_suggestion.rb +69 -0
- data/lib/rubygems/uri.rb +45 -30
- data/lib/rubygems/uri_formatter.rb +1 -1
- data/lib/rubygems/user_interaction.rb +42 -28
- data/lib/rubygems/util/licenses.rb +4 -2
- data/lib/rubygems/util.rb +12 -16
- data/lib/rubygems/validator.rb +6 -6
- data/lib/rubygems/version.rb +28 -17
- data/lib/rubygems/version_option.rb +5 -5
- data/lib/rubygems.rb +129 -117
- data/rubygems-update.gemspec +3 -3
- data/setup.rb +11 -16
- data/test/rubygems/alternate_cert.pem +14 -14
- data/test/rubygems/alternate_cert_32.pem +15 -15
- data/test/rubygems/alternate_key.pem +25 -25
- data/test/rubygems/bundler_test_gem.rb +419 -0
- data/test/rubygems/child_cert.pem +15 -16
- data/test/rubygems/child_cert_32.pem +15 -16
- data/test/rubygems/child_key.pem +25 -25
- data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
- data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
- data/test/rubygems/encrypted_private_key.pem +26 -26
- data/test/rubygems/expired_cert.pem +15 -15
- data/test/rubygems/future_cert.pem +15 -15
- data/test/rubygems/future_cert_32.pem +15 -15
- data/test/rubygems/grandchild_cert.pem +15 -16
- data/test/rubygems/grandchild_cert_32.pem +15 -16
- data/test/rubygems/grandchild_key.pem +25 -25
- data/test/rubygems/helper.rb +237 -207
- data/test/rubygems/installer_test_case.rb +13 -13
- data/test/rubygems/invalid_issuer_cert.pem +16 -16
- data/test/rubygems/invalid_issuer_cert_32.pem +16 -16
- data/test/rubygems/invalid_key.pem +25 -25
- data/test/rubygems/invalid_signer_cert.pem +15 -15
- data/test/rubygems/invalid_signer_cert_32.pem +15 -15
- data/test/rubygems/invalidchild_cert.pem +15 -16
- data/test/rubygems/invalidchild_cert_32.pem +15 -16
- data/test/rubygems/invalidchild_key.pem +25 -25
- data/test/rubygems/package/tar_test_case.rb +52 -17
- data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
- data/test/rubygems/plugin/exception/rubygems_plugin.rb +1 -1
- data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +1 -1
- data/test/rubygems/private_key.pem +25 -25
- data/test/rubygems/public_cert.pem +16 -16
- data/test/rubygems/public_cert_32.pem +15 -15
- data/test/rubygems/public_key.pem +7 -7
- data/test/rubygems/rubygems_plugin.rb +2 -2
- data/test/rubygems/simple_gem.rb +1 -1
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +4 -4
- data/test/rubygems/test_bundled_ca.rb +11 -11
- data/test/rubygems/test_config.rb +5 -5
- data/test/rubygems/test_deprecate.rb +3 -3
- data/test/rubygems/test_exit.rb +17 -0
- data/test/rubygems/test_gem.rb +367 -757
- data/test/rubygems/test_gem_available_set.rb +21 -21
- data/test/rubygems/test_gem_bundler_version_finder.rb +27 -47
- data/test/rubygems/test_gem_command.rb +45 -45
- data/test/rubygems/test_gem_command_manager.rb +124 -27
- data/test/rubygems/test_gem_commands_build_command.rb +73 -63
- data/test/rubygems/test_gem_commands_cert_command.rb +105 -107
- data/test/rubygems/test_gem_commands_check_command.rb +4 -4
- data/test/rubygems/test_gem_commands_cleanup_command.rb +40 -40
- data/test/rubygems/test_gem_commands_contents_command.rb +28 -28
- data/test/rubygems/test_gem_commands_dependency_command.rb +36 -36
- data/test/rubygems/test_gem_commands_environment_command.rb +38 -14
- data/test/rubygems/test_gem_commands_exec_command.rb +851 -0
- data/test/rubygems/test_gem_commands_fetch_command.rb +159 -26
- data/test/rubygems/test_gem_commands_generate_index_command.rb +7 -7
- data/test/rubygems/test_gem_commands_help_command.rb +13 -13
- data/test/rubygems/test_gem_commands_info_command.rb +28 -2
- data/test/rubygems/test_gem_commands_install_command.rb +200 -132
- data/test/rubygems/test_gem_commands_list_command.rb +4 -4
- data/test/rubygems/test_gem_commands_lock_command.rb +10 -10
- data/test/rubygems/test_gem_commands_mirror.rb +2 -2
- data/test/rubygems/test_gem_commands_open_command.rb +5 -5
- data/test/rubygems/test_gem_commands_outdated_command.rb +9 -9
- data/test/rubygems/test_gem_commands_owner_command.rb +126 -45
- data/test/rubygems/test_gem_commands_pristine_command.rb +141 -92
- data/test/rubygems/test_gem_commands_push_command.rb +85 -59
- data/test/rubygems/test_gem_commands_query_command.rb +73 -73
- data/test/rubygems/test_gem_commands_search_command.rb +2 -2
- data/test/rubygems/test_gem_commands_server_command.rb +6 -48
- data/test/rubygems/test_gem_commands_setup_command.rb +169 -92
- data/test/rubygems/test_gem_commands_signin_command.rb +154 -26
- data/test/rubygems/test_gem_commands_signout_command.rb +3 -3
- data/test/rubygems/test_gem_commands_sources_command.rb +74 -25
- data/test/rubygems/test_gem_commands_specification_command.rb +32 -32
- data/test/rubygems/test_gem_commands_stale_command.rb +4 -4
- data/test/rubygems/test_gem_commands_uninstall_command.rb +99 -82
- data/test/rubygems/test_gem_commands_unpack_command.rb +31 -31
- data/test/rubygems/test_gem_commands_update_command.rb +202 -91
- data/test/rubygems/test_gem_commands_which_command.rb +6 -6
- data/test/rubygems/test_gem_commands_yank_command.rb +43 -43
- data/test/rubygems/test_gem_config_file.rb +93 -81
- data/test/rubygems/test_gem_dependency.rb +78 -80
- data/test/rubygems/test_gem_dependency_installer.rb +165 -165
- data/test/rubygems/test_gem_dependency_list.rb +47 -47
- data/test/rubygems/test_gem_dependency_resolution_error.rb +4 -4
- data/test/rubygems/test_gem_doctor.rb +26 -26
- data/test/rubygems/test_gem_ext_builder.rb +60 -62
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +1 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +8 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +233 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +10 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +27 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +1 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +1 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +247 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +10 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +8 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +51 -0
- data/test/rubygems/test_gem_ext_cargo_builder.rb +166 -0
- data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +33 -0
- data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +60 -0
- data/test/rubygems/test_gem_ext_cmake_builder.rb +17 -15
- data/test/rubygems/test_gem_ext_configure_builder.rb +13 -13
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +53 -50
- data/test/rubygems/test_gem_ext_rake_builder.rb +15 -15
- data/test/rubygems/test_gem_gem_runner.rb +13 -8
- data/test/rubygems/test_gem_gemcutter_utilities.rb +71 -65
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +4 -4
- data/test/rubygems/test_gem_indexer.rb +90 -67
- data/test/rubygems/test_gem_install_update_options.rb +18 -18
- data/test/rubygems/test_gem_installer.rb +511 -327
- data/test/rubygems/test_gem_local_remote_options.rb +10 -10
- data/test/rubygems/test_gem_name_tuple.rb +4 -4
- data/test/rubygems/test_gem_package.rb +246 -236
- data/test/rubygems/test_gem_package_old.rb +13 -13
- data/test/rubygems/test_gem_package_tar_header.rb +47 -47
- data/test/rubygems/test_gem_package_tar_reader.rb +55 -8
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +161 -16
- data/test/rubygems/test_gem_package_tar_writer.rb +76 -76
- data/test/rubygems/test_gem_package_task.rb +18 -18
- data/test/rubygems/test_gem_path_support.rb +15 -19
- data/test/rubygems/test_gem_platform.rb +335 -214
- data/test/rubygems/test_gem_rdoc.rb +14 -14
- data/test/rubygems/test_gem_remote_fetcher.rb +169 -154
- data/test/rubygems/test_gem_request.rb +65 -59
- data/test/rubygems/test_gem_request_connection_pools.rb +29 -29
- data/test/rubygems/test_gem_request_set.rb +100 -100
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +209 -211
- data/test/rubygems/test_gem_request_set_lockfile.rb +86 -86
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +58 -58
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +62 -62
- data/test/rubygems/test_gem_requirement.rb +47 -42
- data/test/rubygems/test_gem_resolver.rb +173 -106
- data/test/rubygems/test_gem_resolver_activation_request.rb +6 -6
- data/test/rubygems/test_gem_resolver_api_set.rb +33 -33
- data/test/rubygems/test_gem_resolver_api_specification.rb +47 -47
- data/test/rubygems/test_gem_resolver_best_set.rb +22 -22
- data/test/rubygems/test_gem_resolver_composed_set.rb +1 -1
- data/test/rubygems/test_gem_resolver_conflict.rb +12 -12
- data/test/rubygems/test_gem_resolver_dependency_request.rb +15 -15
- data/test/rubygems/test_gem_resolver_git_set.rb +21 -21
- data/test/rubygems/test_gem_resolver_git_specification.rb +21 -21
- data/test/rubygems/test_gem_resolver_index_set.rb +12 -12
- data/test/rubygems/test_gem_resolver_index_specification.rb +16 -16
- data/test/rubygems/test_gem_resolver_installed_specification.rb +5 -5
- data/test/rubygems/test_gem_resolver_installer_set.rb +79 -35
- data/test/rubygems/test_gem_resolver_local_specification.rb +7 -7
- data/test/rubygems/test_gem_resolver_lock_set.rb +12 -12
- data/test/rubygems/test_gem_resolver_lock_specification.rb +17 -17
- data/test/rubygems/test_gem_resolver_requirement_list.rb +1 -1
- data/test/rubygems/test_gem_resolver_specification.rb +8 -8
- data/test/rubygems/test_gem_resolver_vendor_set.rb +6 -6
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +10 -10
- data/test/rubygems/test_gem_security.rb +69 -69
- data/test/rubygems/test_gem_security_policy.rb +72 -72
- data/test/rubygems/test_gem_security_signer.rb +34 -34
- data/test/rubygems/test_gem_security_trust_dir.rb +6 -6
- data/test/rubygems/test_gem_silent_ui.rb +38 -32
- data/test/rubygems/test_gem_source.rb +44 -44
- data/test/rubygems/test_gem_source_fetch_problem.rb +9 -9
- data/test/rubygems/test_gem_source_git.rb +69 -62
- data/test/rubygems/test_gem_source_installed.rb +16 -16
- data/test/rubygems/test_gem_source_list.rb +5 -5
- data/test/rubygems/test_gem_source_local.rb +14 -14
- data/test/rubygems/test_gem_source_lock.rb +31 -31
- data/test/rubygems/test_gem_source_specific_file.rb +17 -17
- data/test/rubygems/test_gem_source_subpath_problem.rb +7 -7
- data/test/rubygems/test_gem_source_vendor.rb +13 -13
- data/test/rubygems/test_gem_spec_fetcher.rb +72 -72
- data/test/rubygems/test_gem_specification.rb +560 -493
- data/test/rubygems/test_gem_stream_ui.rb +20 -20
- data/test/rubygems/test_gem_stub_specification.rb +32 -48
- data/test/rubygems/test_gem_text.rb +7 -1
- data/test/rubygems/test_gem_uninstaller.rb +113 -113
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +3 -3
- data/test/rubygems/test_gem_update_suggestion.rb +208 -0
- data/test/rubygems/test_gem_uri.rb +4 -4
- data/test/rubygems/test_gem_uri_formatter.rb +14 -14
- data/test/rubygems/test_gem_util.rb +23 -23
- data/test/rubygems/test_gem_validator.rb +8 -8
- data/test/rubygems/test_gem_version.rb +27 -16
- data/test/rubygems/test_gem_version_option.rb +15 -15
- data/test/rubygems/test_kernel.rb +42 -60
- data/test/rubygems/test_project_sanity.rb +2 -2
- data/test/rubygems/test_remote_fetch_error.rb +6 -6
- data/test/rubygems/test_require.rb +132 -174
- data/test/rubygems/test_rubygems.rb +42 -12
- data/test/rubygems/utilities.rb +59 -37
- data/test/rubygems/wrong_key_cert.pem +15 -15
- data/test/rubygems/wrong_key_cert_32.pem +15 -15
- data/test/test_changelog_generator.rb +1 -0
- metadata +97 -41
- data/bundler/lib/bundler/dep_proxy.rb +0 -55
- data/bundler/lib/bundler/gemdeps.rb +0 -29
- data/bundler/lib/bundler/psyched_yaml.rb +0 -22
- data/bundler/lib/bundler/templates/gems.rb +0 -8
- data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -6
- data/bundler/lib/bundler/vendor/molinillo/LICENSE +0 -9
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -143
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
- data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
- data/bundler/lib/bundler/version_ranges.rb +0 -122
- data/lib/rubygems/psych_additions.rb +0 -10
- data/lib/rubygems/server.rb +0 -882
- data/test/rubygems/bogussources.rb +0 -9
- data/test/rubygems/data/null-type.gemspec.rz +0 -0
- data/test/rubygems/test_gem_server.rb +0 -608
- /data/bundler/lib/bundler/templates/newgem/ext/newgem/{extconf.rb.tt → extconf-c.rb.tt} +0 -0
data/lib/rubygems/installer.rb
CHANGED
|
@@ -5,13 +5,12 @@
|
|
|
5
5
|
# See LICENSE.txt for permissions.
|
|
6
6
|
#++
|
|
7
7
|
|
|
8
|
-
require_relative
|
|
9
|
-
require_relative
|
|
10
|
-
require_relative
|
|
11
|
-
require_relative
|
|
12
|
-
require_relative
|
|
13
|
-
require_relative
|
|
14
|
-
require_relative 'user_interaction'
|
|
8
|
+
require_relative "installer_uninstaller_utils"
|
|
9
|
+
require_relative "exceptions"
|
|
10
|
+
require_relative "deprecate"
|
|
11
|
+
require_relative "package"
|
|
12
|
+
require_relative "ext"
|
|
13
|
+
require_relative "user_interaction"
|
|
15
14
|
|
|
16
15
|
##
|
|
17
16
|
# The installer installs the files contained in the .gem into the Gem.home.
|
|
@@ -68,19 +67,28 @@ class Gem::Installer
|
|
|
68
67
|
|
|
69
68
|
@path_warning = false
|
|
70
69
|
|
|
71
|
-
@install_lock = Thread::Mutex.new
|
|
72
|
-
|
|
73
70
|
class << self
|
|
74
|
-
|
|
75
|
-
#
|
|
71
|
+
#
|
|
72
|
+
# Changes in rubygems to lazily loading `rubygems/command` (in order to
|
|
73
|
+
# lazily load `optparse` as a side effect) affect bundler's custom installer
|
|
74
|
+
# which uses `Gem::Command` without requiring it (up until bundler 2.2.29).
|
|
75
|
+
# This hook is to compensate for that missing require.
|
|
76
|
+
#
|
|
77
|
+
# TODO: Remove when rubygems no longer supports running on bundler older
|
|
78
|
+
# than 2.2.29.
|
|
76
79
|
|
|
77
|
-
|
|
80
|
+
def inherited(klass)
|
|
81
|
+
if klass.name == "Bundler::RubyGemsGemInstaller"
|
|
82
|
+
require "rubygems/command"
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
super(klass)
|
|
86
|
+
end
|
|
78
87
|
|
|
79
88
|
##
|
|
80
|
-
#
|
|
81
|
-
# used to allow multiple threads to install Gems at the same time.
|
|
89
|
+
# True if we've warned about PATH not including Gem.bindir
|
|
82
90
|
|
|
83
|
-
|
|
91
|
+
attr_accessor :path_warning
|
|
84
92
|
|
|
85
93
|
##
|
|
86
94
|
# Overrides the executable format.
|
|
@@ -117,14 +125,14 @@ class Gem::Installer
|
|
|
117
125
|
@spec = spec
|
|
118
126
|
end
|
|
119
127
|
|
|
120
|
-
def extract_files(destination_dir, pattern =
|
|
128
|
+
def extract_files(destination_dir, pattern = "*")
|
|
121
129
|
FileUtils.mkdir_p destination_dir
|
|
122
130
|
|
|
123
131
|
spec.files.each do |file|
|
|
124
132
|
file = File.join destination_dir, file
|
|
125
133
|
next if File.exist? file
|
|
126
134
|
FileUtils.mkdir_p File.dirname(file)
|
|
127
|
-
File.open file,
|
|
135
|
+
File.open file, "w" do |fp|
|
|
128
136
|
fp.puts "# #{file}"
|
|
129
137
|
end
|
|
130
138
|
end
|
|
@@ -169,7 +177,7 @@ class Gem::Installer
|
|
|
169
177
|
# :post_install_message:: Print gem post install message if true
|
|
170
178
|
|
|
171
179
|
def initialize(package, options={})
|
|
172
|
-
require
|
|
180
|
+
require "fileutils"
|
|
173
181
|
|
|
174
182
|
@options = options
|
|
175
183
|
@package = package
|
|
@@ -193,8 +201,8 @@ class Gem::Installer
|
|
|
193
201
|
#
|
|
194
202
|
# If +@force+ is set +filename+ is overwritten.
|
|
195
203
|
#
|
|
196
|
-
# If +filename+ exists and is a RubyGems wrapper for different gem
|
|
197
|
-
# is consulted.
|
|
204
|
+
# If +filename+ exists and it is a RubyGems wrapper for a different gem, then
|
|
205
|
+
# the user is consulted.
|
|
198
206
|
#
|
|
199
207
|
# If +filename+ exists and +@bin_dir+ is Gem.default_bindir (/usr/local) the
|
|
200
208
|
# user is consulted.
|
|
@@ -211,13 +219,23 @@ class Gem::Installer
|
|
|
211
219
|
ruby_executable = false
|
|
212
220
|
existing = nil
|
|
213
221
|
|
|
214
|
-
File.open generated_bin,
|
|
215
|
-
|
|
222
|
+
File.open generated_bin, "rb" do |io|
|
|
223
|
+
line = io.gets
|
|
224
|
+
shebang = /^#!.*ruby/
|
|
225
|
+
|
|
226
|
+
if load_relative_enabled?
|
|
227
|
+
until line.nil? || line =~ shebang do
|
|
228
|
+
line = io.gets
|
|
229
|
+
end
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
next unless line =~ shebang
|
|
233
|
+
|
|
216
234
|
io.gets # blankline
|
|
217
235
|
|
|
218
236
|
# TODO detect a specially formatted comment instead of trying
|
|
219
|
-
# to
|
|
220
|
-
next unless io.gets
|
|
237
|
+
# to find a string inside Ruby code.
|
|
238
|
+
next unless io.gets.to_s.include?("This file was generated by RubyGems")
|
|
221
239
|
|
|
222
240
|
ruby_executable = true
|
|
223
241
|
existing = io.read.slice(%r{
|
|
@@ -233,12 +251,12 @@ class Gem::Installer
|
|
|
233
251
|
return if spec.name == existing
|
|
234
252
|
|
|
235
253
|
# somebody has written to RubyGems' directory, overwrite, too bad
|
|
236
|
-
return if Gem.default_bindir != @bin_dir
|
|
254
|
+
return if Gem.default_bindir != @bin_dir && !ruby_executable
|
|
237
255
|
|
|
238
256
|
question = "#{spec.name}'s executable \"#{filename}\" conflicts with ".dup
|
|
239
257
|
|
|
240
258
|
if ruby_executable
|
|
241
|
-
question << (existing ||
|
|
259
|
+
question << (existing || "an unknown executable")
|
|
242
260
|
|
|
243
261
|
return if ask_yes_no "#{question}\nOverwrite the executable?", false
|
|
244
262
|
|
|
@@ -267,8 +285,6 @@ class Gem::Installer
|
|
|
267
285
|
|
|
268
286
|
def spec
|
|
269
287
|
@package.spec
|
|
270
|
-
rescue Gem::Package::Error => e
|
|
271
|
-
raise Gem::InstallError, "invalid gem: #{e.message}"
|
|
272
288
|
end
|
|
273
289
|
|
|
274
290
|
##
|
|
@@ -285,8 +301,6 @@ class Gem::Installer
|
|
|
285
301
|
def install
|
|
286
302
|
pre_install_checks
|
|
287
303
|
|
|
288
|
-
FileUtils.rm_f File.join gem_home, 'specifications', spec.spec_name
|
|
289
|
-
|
|
290
304
|
run_pre_install_hooks
|
|
291
305
|
|
|
292
306
|
# Set loaded_from to ensure extension_dir is correct
|
|
@@ -326,7 +340,7 @@ class Gem::Installer
|
|
|
326
340
|
|
|
327
341
|
say spec.post_install_message if options[:post_install_message] && !spec.post_install_message.nil?
|
|
328
342
|
|
|
329
|
-
Gem::
|
|
343
|
+
Gem::Specification.add_spec(spec)
|
|
330
344
|
|
|
331
345
|
run_post_install_hooks
|
|
332
346
|
|
|
@@ -404,10 +418,10 @@ class Gem::Installer
|
|
|
404
418
|
# True if the gems in the system satisfy +dependency+.
|
|
405
419
|
|
|
406
420
|
def installation_satisfies_dependency?(dependency)
|
|
407
|
-
return true if @options[:development]
|
|
421
|
+
return true if @options[:development] && dependency.type == :development
|
|
408
422
|
return true if installed_specs.detect {|s| dependency.matches_spec? s }
|
|
409
423
|
return false if @only_install_dir
|
|
410
|
-
|
|
424
|
+
!dependency.matching_specs.empty?
|
|
411
425
|
end
|
|
412
426
|
|
|
413
427
|
##
|
|
@@ -440,13 +454,9 @@ class Gem::Installer
|
|
|
440
454
|
# specifications directory.
|
|
441
455
|
|
|
442
456
|
def write_spec
|
|
443
|
-
|
|
444
|
-
spec.installed_by_version = Gem.rubygems_version
|
|
445
|
-
|
|
446
|
-
file.puts spec.to_ruby_for_cache
|
|
457
|
+
spec.installed_by_version = Gem.rubygems_version
|
|
447
458
|
|
|
448
|
-
|
|
449
|
-
end
|
|
459
|
+
Gem.write_binary(spec_file, spec.to_ruby_for_cache)
|
|
450
460
|
end
|
|
451
461
|
|
|
452
462
|
##
|
|
@@ -454,9 +464,7 @@ class Gem::Installer
|
|
|
454
464
|
# specifications/default directory.
|
|
455
465
|
|
|
456
466
|
def write_default_spec
|
|
457
|
-
|
|
458
|
-
file.puts spec.to_ruby
|
|
459
|
-
end
|
|
467
|
+
Gem.write_binary(default_spec_file, spec.to_ruby)
|
|
460
468
|
end
|
|
461
469
|
|
|
462
470
|
##
|
|
@@ -466,7 +474,7 @@ class Gem::Installer
|
|
|
466
474
|
if Gem.win_platform?
|
|
467
475
|
script_name = formatted_program_filename(filename) + ".bat"
|
|
468
476
|
script_path = File.join bindir, File.basename(script_name)
|
|
469
|
-
File.open script_path,
|
|
477
|
+
File.open script_path, "w" do |file|
|
|
470
478
|
file.puts windows_stub_script(bindir, filename)
|
|
471
479
|
end
|
|
472
480
|
|
|
@@ -475,28 +483,20 @@ class Gem::Installer
|
|
|
475
483
|
end
|
|
476
484
|
|
|
477
485
|
def generate_bin # :nodoc:
|
|
478
|
-
return if spec.executables.nil?
|
|
486
|
+
return if spec.executables.nil? || spec.executables.empty?
|
|
479
487
|
|
|
480
488
|
ensure_writable_dir @bin_dir
|
|
481
489
|
|
|
482
490
|
spec.executables.each do |filename|
|
|
483
491
|
filename.tap(&Gem::UNTAINT)
|
|
484
492
|
bin_path = File.join gem_dir, spec.bindir, filename
|
|
485
|
-
|
|
486
|
-
unless File.exist? bin_path
|
|
487
|
-
if File.symlink? bin_path
|
|
488
|
-
alert_warning "`#{bin_path}` is dangling symlink pointing to `#{File.readlink bin_path}`"
|
|
489
|
-
else
|
|
490
|
-
alert_warning "`#{bin_path}` does not exist, maybe `gem pristine #{spec.name}` will fix it?"
|
|
491
|
-
end
|
|
492
|
-
next
|
|
493
|
-
end
|
|
493
|
+
next unless File.exist? bin_path
|
|
494
494
|
|
|
495
495
|
mode = File.stat(bin_path).mode
|
|
496
496
|
dir_mode = options[:prog_mode] || (mode | 0111)
|
|
497
497
|
|
|
498
498
|
unless dir_mode == mode
|
|
499
|
-
require
|
|
499
|
+
require "fileutils"
|
|
500
500
|
FileUtils.chmod dir_mode, bin_path
|
|
501
501
|
end
|
|
502
502
|
|
|
@@ -511,7 +511,7 @@ class Gem::Installer
|
|
|
511
511
|
end
|
|
512
512
|
|
|
513
513
|
def generate_plugins # :nodoc:
|
|
514
|
-
latest = Gem::
|
|
514
|
+
latest = Gem::Specification.latest_spec_for(spec.name)
|
|
515
515
|
return if latest && latest.version > spec.version
|
|
516
516
|
|
|
517
517
|
ensure_writable_dir @plugins_dir
|
|
@@ -533,10 +533,10 @@ class Gem::Installer
|
|
|
533
533
|
def generate_bin_script(filename, bindir)
|
|
534
534
|
bin_script_path = File.join bindir, formatted_program_filename(filename)
|
|
535
535
|
|
|
536
|
-
require
|
|
536
|
+
require "fileutils"
|
|
537
537
|
FileUtils.rm_f bin_script_path # prior install may have been --no-wrappers
|
|
538
538
|
|
|
539
|
-
File.open bin_script_path,
|
|
539
|
+
File.open bin_script_path, "wb", 0755 do |file|
|
|
540
540
|
file.print app_script_text(filename)
|
|
541
541
|
file.chmod(options[:prog_mode] || 0755)
|
|
542
542
|
end
|
|
@@ -557,7 +557,7 @@ class Gem::Installer
|
|
|
557
557
|
if File.exist? dst
|
|
558
558
|
if File.symlink? dst
|
|
559
559
|
link = File.readlink(dst).split File::SEPARATOR
|
|
560
|
-
cur_version = Gem::Version.create(link[-3].sub(/^.*-/,
|
|
560
|
+
cur_version = Gem::Version.create(link[-3].sub(/^.*-/, ""))
|
|
561
561
|
return if spec.version < cur_version
|
|
562
562
|
end
|
|
563
563
|
File.unlink dst
|
|
@@ -585,7 +585,6 @@ class Gem::Installer
|
|
|
585
585
|
#
|
|
586
586
|
|
|
587
587
|
def shebang(bin_file_name)
|
|
588
|
-
ruby_name = RbConfig::CONFIG['ruby_install_name'] if @env_shebang
|
|
589
588
|
path = File.join gem_dir, spec.bindir, bin_file_name
|
|
590
589
|
first_line = File.open(path, "rb") {|file| file.gets } || ""
|
|
591
590
|
|
|
@@ -598,7 +597,7 @@ class Gem::Installer
|
|
|
598
597
|
|
|
599
598
|
if which = Gem.configuration[:custom_shebang]
|
|
600
599
|
# replace bin_file_name with "ruby" to avoid endless loops
|
|
601
|
-
which = which.gsub(/ #{bin_file_name}$/," #{
|
|
600
|
+
which = which.gsub(/ #{bin_file_name}$/," #{ruby_install_name}")
|
|
602
601
|
|
|
603
602
|
which = which.gsub(/\$(\w+)/) do
|
|
604
603
|
case $1
|
|
@@ -614,14 +613,12 @@ class Gem::Installer
|
|
|
614
613
|
end
|
|
615
614
|
|
|
616
615
|
"#!#{which}"
|
|
617
|
-
elsif
|
|
618
|
-
"#!#{Gem.ruby}#{opts}"
|
|
619
|
-
elsif opts
|
|
620
|
-
"#!/bin/sh\n'exec' #{ruby_name.dump} '-x' \"$0\" \"$@\"\n#{shebang}"
|
|
621
|
-
else
|
|
616
|
+
elsif @env_shebang
|
|
622
617
|
# Create a plain shebang line.
|
|
623
618
|
@env_path ||= ENV_PATHS.find {|env_path| File.executable? env_path }
|
|
624
|
-
"#!#{@env_path} #{
|
|
619
|
+
"#!#{@env_path} #{ruby_install_name}"
|
|
620
|
+
else
|
|
621
|
+
"#{bash_prolog_script}#!#{Gem.ruby}#{opts}"
|
|
625
622
|
end
|
|
626
623
|
end
|
|
627
624
|
|
|
@@ -652,9 +649,9 @@ class Gem::Installer
|
|
|
652
649
|
|
|
653
650
|
def process_options # :nodoc:
|
|
654
651
|
@options = {
|
|
655
|
-
:bin_dir
|
|
656
|
-
:env_shebang
|
|
657
|
-
:force
|
|
652
|
+
:bin_dir => nil,
|
|
653
|
+
:env_shebang => false,
|
|
654
|
+
:force => false,
|
|
658
655
|
:only_install_dir => false,
|
|
659
656
|
:post_install_message => true,
|
|
660
657
|
}.merge options
|
|
@@ -676,12 +673,12 @@ class Gem::Installer
|
|
|
676
673
|
@development = options[:development]
|
|
677
674
|
@build_root = options[:build_root]
|
|
678
675
|
|
|
679
|
-
@build_args = options[:build_args]
|
|
676
|
+
@build_args = options[:build_args]
|
|
680
677
|
|
|
681
678
|
unless @build_root.nil?
|
|
682
|
-
@bin_dir = File.join(@build_root, @bin_dir.gsub(/^[a-zA-Z]:/,
|
|
683
|
-
@gem_home = File.join(@build_root, @gem_home.gsub(/^[a-zA-Z]:/,
|
|
684
|
-
@plugins_dir = File.join(@build_root, @plugins_dir.gsub(/^[a-zA-Z]:/,
|
|
679
|
+
@bin_dir = File.join(@build_root, @bin_dir.gsub(/^[a-zA-Z]:/, ""))
|
|
680
|
+
@gem_home = File.join(@build_root, @gem_home.gsub(/^[a-zA-Z]:/, ""))
|
|
681
|
+
@plugins_dir = File.join(@build_root, @plugins_dir.gsub(/^[a-zA-Z]:/, ""))
|
|
685
682
|
alert_warning "You build with buildroot.\n Build root: #{@build_root}\n Bin dir: #{@bin_dir}\n Gem home: #{@gem_home}\n Plugins dir: #{@plugins_dir}"
|
|
686
683
|
end
|
|
687
684
|
end
|
|
@@ -692,7 +689,7 @@ class Gem::Installer
|
|
|
692
689
|
user_bin_dir = @bin_dir || Gem.bindir(gem_home)
|
|
693
690
|
user_bin_dir = user_bin_dir.tr(File::ALT_SEPARATOR, File::SEPARATOR) if File::ALT_SEPARATOR
|
|
694
691
|
|
|
695
|
-
path = ENV[
|
|
692
|
+
path = ENV["PATH"]
|
|
696
693
|
path = path.tr(File::ALT_SEPARATOR, File::SEPARATOR) if File::ALT_SEPARATOR
|
|
697
694
|
|
|
698
695
|
if Gem.win_platform?
|
|
@@ -703,7 +700,7 @@ class Gem::Installer
|
|
|
703
700
|
path = path.split(File::PATH_SEPARATOR)
|
|
704
701
|
|
|
705
702
|
unless path.include? user_bin_dir
|
|
706
|
-
unless !Gem.win_platform? && (path.include? user_bin_dir.sub(ENV[
|
|
703
|
+
unless !Gem.win_platform? && (path.include? user_bin_dir.sub(ENV["HOME"], "~"))
|
|
707
704
|
alert_warning "You don't have #{user_bin_dir} in your PATH,\n\t gem executables will not run."
|
|
708
705
|
self.class.path_warning = true
|
|
709
706
|
end
|
|
@@ -720,11 +717,11 @@ class Gem::Installer
|
|
|
720
717
|
raise Gem::InstallError, "#{spec} has an invalid name"
|
|
721
718
|
end
|
|
722
719
|
|
|
723
|
-
if spec.raw_require_paths.any?{|path| path =~ /\R/ }
|
|
720
|
+
if spec.raw_require_paths.any? {|path| path =~ /\R/ }
|
|
724
721
|
raise Gem::InstallError, "#{spec} has an invalid require_paths"
|
|
725
722
|
end
|
|
726
723
|
|
|
727
|
-
if spec.extensions.any?{|ext| ext =~ /\R/ }
|
|
724
|
+
if spec.extensions.any? {|ext| ext =~ /\R/ }
|
|
728
725
|
raise Gem::InstallError, "#{spec} has an invalid extensions"
|
|
729
726
|
end
|
|
730
727
|
|
|
@@ -768,7 +765,7 @@ str = ARGV.first
|
|
|
768
765
|
if str
|
|
769
766
|
str = str.b[/\\A_(.*)_\\z/, 1]
|
|
770
767
|
if str and Gem::Version.correct?(str)
|
|
771
|
-
|
|
768
|
+
#{explicit_version_requirement(spec.name)}
|
|
772
769
|
ARGV.shift
|
|
773
770
|
end
|
|
774
771
|
end
|
|
@@ -783,7 +780,7 @@ TEXT
|
|
|
783
780
|
end
|
|
784
781
|
|
|
785
782
|
def gemdeps_load(name)
|
|
786
|
-
return
|
|
783
|
+
return "" if name == "bundler"
|
|
787
784
|
|
|
788
785
|
<<-TEXT
|
|
789
786
|
|
|
@@ -791,11 +788,20 @@ Gem.use_gemdeps
|
|
|
791
788
|
TEXT
|
|
792
789
|
end
|
|
793
790
|
|
|
791
|
+
def explicit_version_requirement(name)
|
|
792
|
+
code = "version = str"
|
|
793
|
+
return code unless name == "bundler"
|
|
794
|
+
|
|
795
|
+
code += <<-TEXT
|
|
796
|
+
|
|
797
|
+
ENV['BUNDLER_VERSION'] = str
|
|
798
|
+
TEXT
|
|
799
|
+
end
|
|
800
|
+
|
|
794
801
|
##
|
|
795
802
|
# return the stub script text used to launch the true Ruby script
|
|
796
803
|
|
|
797
804
|
def windows_stub_script(bindir, bin_file_name)
|
|
798
|
-
rb_config = RbConfig::CONFIG
|
|
799
805
|
rb_topdir = RbConfig::TOPDIR || File.dirname(rb_config["bindir"])
|
|
800
806
|
|
|
801
807
|
# get ruby executable file name from RbConfig
|
|
@@ -810,7 +816,7 @@ TEXT
|
|
|
810
816
|
TEXT
|
|
811
817
|
elsif bindir.downcase.start_with? rb_topdir.downcase
|
|
812
818
|
# stub within ruby folder, but not standard bin. Portable
|
|
813
|
-
require
|
|
819
|
+
require "pathname"
|
|
814
820
|
from = Pathname.new bindir
|
|
815
821
|
to = Pathname.new "#{rb_topdir}/bin"
|
|
816
822
|
rel = to.relative_path_from from
|
|
@@ -832,7 +838,7 @@ TEXT
|
|
|
832
838
|
# configure scripts and rakefiles or mkrf_conf files.
|
|
833
839
|
|
|
834
840
|
def build_extensions
|
|
835
|
-
builder = Gem::Ext::Builder.new spec,
|
|
841
|
+
builder = Gem::Ext::Builder.new spec, build_args
|
|
836
842
|
|
|
837
843
|
builder.build_extensions
|
|
838
844
|
end
|
|
@@ -919,17 +925,17 @@ TEXT
|
|
|
919
925
|
# extensions.
|
|
920
926
|
|
|
921
927
|
def write_build_info_file
|
|
922
|
-
return if
|
|
928
|
+
return if build_args.empty?
|
|
923
929
|
|
|
924
|
-
build_info_dir = File.join gem_home,
|
|
930
|
+
build_info_dir = File.join gem_home, "build_info"
|
|
925
931
|
|
|
926
932
|
dir_mode = options[:dir_mode]
|
|
927
933
|
FileUtils.mkdir_p build_info_dir, :mode => dir_mode && 0755
|
|
928
934
|
|
|
929
935
|
build_info_file = File.join build_info_dir, "#{spec.full_name}.info"
|
|
930
936
|
|
|
931
|
-
File.open build_info_file,
|
|
932
|
-
|
|
937
|
+
File.open build_info_file, "w" do |io|
|
|
938
|
+
build_args.each do |arg|
|
|
933
939
|
io.puts arg
|
|
934
940
|
end
|
|
935
941
|
end
|
|
@@ -941,7 +947,7 @@ TEXT
|
|
|
941
947
|
# Writes the .gem file to the cache directory
|
|
942
948
|
|
|
943
949
|
def write_cache_file
|
|
944
|
-
cache_file = File.join gem_home,
|
|
950
|
+
cache_file = File.join gem_home, "cache", spec.file_name
|
|
945
951
|
@package.copy_to cache_file
|
|
946
952
|
end
|
|
947
953
|
|
|
@@ -954,4 +960,46 @@ TEXT
|
|
|
954
960
|
|
|
955
961
|
raise Gem::FilePermissionError.new(dir) unless File.writable? dir
|
|
956
962
|
end
|
|
963
|
+
|
|
964
|
+
private
|
|
965
|
+
|
|
966
|
+
def build_args
|
|
967
|
+
@build_args ||= begin
|
|
968
|
+
require_relative "command"
|
|
969
|
+
Gem::Command.build_args
|
|
970
|
+
end
|
|
971
|
+
end
|
|
972
|
+
|
|
973
|
+
def rb_config
|
|
974
|
+
RbConfig::CONFIG
|
|
975
|
+
end
|
|
976
|
+
|
|
977
|
+
def ruby_install_name
|
|
978
|
+
rb_config["ruby_install_name"]
|
|
979
|
+
end
|
|
980
|
+
|
|
981
|
+
def load_relative_enabled?
|
|
982
|
+
rb_config["LIBRUBY_RELATIVE"] == "yes"
|
|
983
|
+
end
|
|
984
|
+
|
|
985
|
+
def bash_prolog_script
|
|
986
|
+
if load_relative_enabled?
|
|
987
|
+
script = +<<~EOS
|
|
988
|
+
bindir="${0%/*}"
|
|
989
|
+
EOS
|
|
990
|
+
|
|
991
|
+
script << %Q(exec "$bindir/#{ruby_install_name}" "-x" "$0" "$@"\n)
|
|
992
|
+
|
|
993
|
+
<<~EOS
|
|
994
|
+
#!/bin/sh
|
|
995
|
+
# -*- ruby -*-
|
|
996
|
+
_=_\\
|
|
997
|
+
=begin
|
|
998
|
+
#{script.chomp}
|
|
999
|
+
=end
|
|
1000
|
+
EOS
|
|
1001
|
+
else
|
|
1002
|
+
""
|
|
1003
|
+
end
|
|
1004
|
+
end
|
|
957
1005
|
end
|
|
@@ -9,12 +9,12 @@ module Gem::InstallerUninstallerUtils
|
|
|
9
9
|
plugins = spec.plugins
|
|
10
10
|
return if plugins.empty?
|
|
11
11
|
|
|
12
|
-
require
|
|
12
|
+
require "pathname"
|
|
13
13
|
|
|
14
14
|
spec.plugins.each do |plugin|
|
|
15
15
|
plugin_script_path = File.join plugins_dir, "#{spec.name}_plugin#{File.extname(plugin)}"
|
|
16
16
|
|
|
17
|
-
File.open plugin_script_path,
|
|
17
|
+
File.open plugin_script_path, "wb" do |file|
|
|
18
18
|
file.puts "require_relative '#{Pathname.new(plugin).relative_path_from(Pathname.new(plugins_dir))}'"
|
|
19
19
|
end
|
|
20
20
|
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
# See LICENSE.txt for permissions.
|
|
6
6
|
#++
|
|
7
7
|
|
|
8
|
-
require
|
|
9
|
-
require_relative
|
|
8
|
+
require "uri"
|
|
9
|
+
require_relative "../rubygems"
|
|
10
10
|
|
|
11
11
|
##
|
|
12
12
|
# Mixin methods for local and remote Gem::Command options.
|
|
@@ -14,19 +14,19 @@ require_relative '../rubygems'
|
|
|
14
14
|
module Gem::LocalRemoteOptions
|
|
15
15
|
|
|
16
16
|
##
|
|
17
|
-
# Allows OptionParser to handle HTTP URIs.
|
|
17
|
+
# Allows Gem::OptionParser to handle HTTP URIs.
|
|
18
18
|
|
|
19
19
|
def accept_uri_http
|
|
20
|
-
OptionParser.accept URI::HTTP do |value|
|
|
20
|
+
Gem::OptionParser.accept URI::HTTP do |value|
|
|
21
21
|
begin
|
|
22
22
|
uri = URI.parse value
|
|
23
23
|
rescue URI::InvalidURIError
|
|
24
|
-
raise OptionParser::InvalidArgument, value
|
|
24
|
+
raise Gem::OptionParser::InvalidArgument, value
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
valid_uri_schemes = ["http", "https", "file", "s3"]
|
|
28
28
|
unless valid_uri_schemes.include?(uri.scheme)
|
|
29
|
-
msg = "Invalid uri scheme for #{value}\nPreface URLs with one of #{valid_uri_schemes.map{|s| "#{s}://" }}"
|
|
29
|
+
msg = "Invalid uri scheme for #{value}\nPreface URLs with one of #{valid_uri_schemes.map {|s| "#{s}://" }}"
|
|
30
30
|
raise ArgumentError, msg
|
|
31
31
|
end
|
|
32
32
|
|
|
@@ -38,18 +38,18 @@ module Gem::LocalRemoteOptions
|
|
|
38
38
|
# Add local/remote options to the command line parser.
|
|
39
39
|
|
|
40
40
|
def add_local_remote_options
|
|
41
|
-
add_option(:"Local/Remote",
|
|
42
|
-
|
|
41
|
+
add_option(:"Local/Remote", "-l", "--local",
|
|
42
|
+
"Restrict operations to the LOCAL domain") do |value, options|
|
|
43
43
|
options[:domain] = :local
|
|
44
44
|
end
|
|
45
45
|
|
|
46
|
-
add_option(:"Local/Remote",
|
|
47
|
-
|
|
46
|
+
add_option(:"Local/Remote", "-r", "--remote",
|
|
47
|
+
"Restrict operations to the REMOTE domain") do |value, options|
|
|
48
48
|
options[:domain] = :remote
|
|
49
49
|
end
|
|
50
50
|
|
|
51
|
-
add_option(:"Local/Remote",
|
|
52
|
-
|
|
51
|
+
add_option(:"Local/Remote", "-b", "--both",
|
|
52
|
+
"Allow LOCAL and REMOTE operations") do |value, options|
|
|
53
53
|
options[:domain] = :both
|
|
54
54
|
end
|
|
55
55
|
|
|
@@ -64,7 +64,7 @@ module Gem::LocalRemoteOptions
|
|
|
64
64
|
# Add the --bulk-threshold option
|
|
65
65
|
|
|
66
66
|
def add_bulk_threshold_option
|
|
67
|
-
add_option(:"Local/Remote",
|
|
67
|
+
add_option(:"Local/Remote", "-B", "--bulk-threshold COUNT",
|
|
68
68
|
"Threshold for switching to bulk",
|
|
69
69
|
"synchronization (default #{Gem.configuration.bulk_threshold})") do
|
|
70
70
|
|value, options|
|
|
@@ -76,9 +76,8 @@ module Gem::LocalRemoteOptions
|
|
|
76
76
|
# Add the --clear-sources option
|
|
77
77
|
|
|
78
78
|
def add_clear_sources_option
|
|
79
|
-
add_option(:"Local/Remote",
|
|
80
|
-
|
|
81
|
-
|
|
79
|
+
add_option(:"Local/Remote", "--clear-sources",
|
|
80
|
+
"Clear the gem sources") do |value, options|
|
|
82
81
|
Gem.sources = nil
|
|
83
82
|
options[:sources_cleared] = true
|
|
84
83
|
end
|
|
@@ -90,8 +89,8 @@ module Gem::LocalRemoteOptions
|
|
|
90
89
|
def add_proxy_option
|
|
91
90
|
accept_uri_http
|
|
92
91
|
|
|
93
|
-
add_option(:"Local/Remote",
|
|
94
|
-
|
|
92
|
+
add_option(:"Local/Remote", "-p", "--[no-]http-proxy [URL]", URI::HTTP,
|
|
93
|
+
"Use HTTP proxy for remote operations") do |value, options|
|
|
95
94
|
options[:http_proxy] = (value == false) ? :no_proxy : value
|
|
96
95
|
Gem.configuration[:http_proxy] = options[:http_proxy]
|
|
97
96
|
end
|
|
@@ -103,10 +102,9 @@ module Gem::LocalRemoteOptions
|
|
|
103
102
|
def add_source_option
|
|
104
103
|
accept_uri_http
|
|
105
104
|
|
|
106
|
-
add_option(:"Local/Remote",
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
source << '/' if source !~ /\/\z/
|
|
105
|
+
add_option(:"Local/Remote", "-s", "--source URL", URI::HTTP,
|
|
106
|
+
"Append URL to list of remote gem sources") do |source, options|
|
|
107
|
+
source << "/" if source !~ /\/\z/
|
|
110
108
|
|
|
111
109
|
if options.delete :sources_cleared
|
|
112
110
|
Gem.sources = [source]
|
|
@@ -120,8 +118,8 @@ module Gem::LocalRemoteOptions
|
|
|
120
118
|
# Add the --update-sources option
|
|
121
119
|
|
|
122
120
|
def add_update_sources_option
|
|
123
|
-
add_option(:Deprecated,
|
|
124
|
-
|
|
121
|
+
add_option(:Deprecated, "-u", "--[no-]update-sources",
|
|
122
|
+
"Update local source cache") do |value, options|
|
|
125
123
|
Gem.configuration.update_sources = value
|
|
126
124
|
end
|
|
127
125
|
end
|
data/lib/rubygems/mock_gem_ui.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
require_relative
|
|
2
|
+
require_relative "user_interaction"
|
|
3
3
|
|
|
4
4
|
##
|
|
5
5
|
# This Gem::StreamUI subclass records input and output to StringIO for
|
|
@@ -40,7 +40,7 @@ class Gem::MockGemUi < Gem::StreamUI
|
|
|
40
40
|
end
|
|
41
41
|
|
|
42
42
|
def initialize(input = "")
|
|
43
|
-
require
|
|
43
|
+
require "stringio"
|
|
44
44
|
ins = StringIO.new input
|
|
45
45
|
outs = StringIO.new
|
|
46
46
|
errs = StringIO.new
|
data/lib/rubygems/name_tuple.rb
CHANGED
|
@@ -10,7 +10,7 @@ class Gem::NameTuple
|
|
|
10
10
|
@version = version
|
|
11
11
|
|
|
12
12
|
unless platform.kind_of? Gem::Platform
|
|
13
|
-
platform = "ruby" if !platform
|
|
13
|
+
platform = "ruby" if !platform || platform.empty?
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
@platform = platform
|
|
@@ -48,7 +48,7 @@ class Gem::NameTuple
|
|
|
48
48
|
|
|
49
49
|
def full_name
|
|
50
50
|
case @platform
|
|
51
|
-
when nil,
|
|
51
|
+
when nil, "ruby", ""
|
|
52
52
|
"#{@name}-#{@version}"
|
|
53
53
|
else
|
|
54
54
|
"#{@name}-#{@version}-#{@platform}"
|
|
@@ -89,9 +89,8 @@ class Gem::NameTuple
|
|
|
89
89
|
alias to_s inspect # :nodoc:
|
|
90
90
|
|
|
91
91
|
def <=>(other)
|
|
92
|
-
[@name, @version,
|
|
93
|
-
[other.name, other.version,
|
|
94
|
-
other.platform == Gem::Platform::RUBY ? -1 : 1]
|
|
92
|
+
[@name, @version, Gem::Platform.sort_priority(@platform)] <=>
|
|
93
|
+
[other.name, other.version, Gem::Platform.sort_priority(other.platform)]
|
|
95
94
|
end
|
|
96
95
|
|
|
97
96
|
include Comparable
|
|
@@ -103,8 +102,8 @@ class Gem::NameTuple
|
|
|
103
102
|
def ==(other)
|
|
104
103
|
case other
|
|
105
104
|
when self.class
|
|
106
|
-
@name == other.name
|
|
107
|
-
@version == other.version
|
|
105
|
+
@name == other.name &&
|
|
106
|
+
@version == other.version &&
|
|
108
107
|
@platform == other.platform
|
|
109
108
|
when Array
|
|
110
109
|
to_a == other
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Vendored files do not need to be documented
|