rubygems-update 3.1.6 → 3.3.22
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/{History.txt → CHANGELOG.md} +1452 -514
- data/CODE_OF_CONDUCT.md +55 -19
- data/CONTRIBUTING.md +74 -27
- data/Manifest.txt +154 -117
- data/POLICIES.md +27 -19
- data/README.md +10 -8
- data/UPGRADING.md +5 -81
- data/bin/gem +3 -8
- data/bin/update_rubygems +5 -5
- data/bundler/CHANGELOG.md +2358 -1430
- data/bundler/README.md +7 -9
- data/bundler/UPGRADING.md +27 -34
- data/bundler/bundler.gemspec +8 -11
- data/bundler/exe/bundle +10 -8
- data/bundler/exe/bundler +1 -1
- data/bundler/lib/bundler/.document +1 -0
- data/bundler/lib/bundler/build_metadata.rb +4 -12
- data/bundler/lib/bundler/cli/add.rb +1 -1
- data/bundler/lib/bundler/cli/binstubs.rb +6 -2
- data/bundler/lib/bundler/cli/cache.rb +3 -8
- data/bundler/lib/bundler/cli/check.rb +4 -2
- data/bundler/lib/bundler/cli/clean.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +31 -3
- data/bundler/lib/bundler/cli/config.rb +10 -1
- data/bundler/lib/bundler/cli/console.rb +1 -1
- data/bundler/lib/bundler/cli/doctor.rb +25 -6
- data/bundler/lib/bundler/cli/exec.rb +5 -10
- data/bundler/lib/bundler/cli/fund.rb +36 -0
- data/bundler/lib/bundler/cli/gem.rb +219 -28
- data/bundler/lib/bundler/cli/info.rb +38 -6
- data/bundler/lib/bundler/cli/init.rb +3 -3
- data/bundler/lib/bundler/cli/inject.rb +1 -1
- data/bundler/lib/bundler/cli/install.rb +25 -54
- data/bundler/lib/bundler/cli/issue.rb +5 -4
- data/bundler/lib/bundler/cli/list.rb +19 -11
- data/bundler/lib/bundler/cli/lock.rb +5 -1
- data/bundler/lib/bundler/cli/open.rb +1 -2
- data/bundler/lib/bundler/cli/outdated.rb +105 -76
- data/bundler/lib/bundler/cli/platform.rb +2 -2
- data/bundler/lib/bundler/cli/plugin.rb +10 -0
- data/bundler/lib/bundler/cli/pristine.rb +5 -0
- data/bundler/lib/bundler/cli/remove.rb +1 -2
- data/bundler/lib/bundler/cli/show.rb +2 -2
- data/bundler/lib/bundler/cli/update.rb +20 -9
- data/bundler/lib/bundler/cli.rb +106 -83
- data/bundler/lib/bundler/compact_index_client/cache.rb +6 -23
- data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
- data/bundler/lib/bundler/compact_index_client/updater.rb +29 -25
- data/bundler/lib/bundler/compact_index_client.rb +3 -9
- data/bundler/lib/bundler/current_ruby.rb +17 -6
- data/bundler/lib/bundler/definition.rb +297 -396
- data/bundler/lib/bundler/dep_proxy.rb +16 -9
- data/bundler/lib/bundler/dependency.rb +22 -77
- data/bundler/lib/bundler/digest.rb +71 -0
- data/bundler/lib/bundler/dsl.rb +76 -83
- data/bundler/lib/bundler/endpoint_specification.rb +16 -14
- data/bundler/lib/bundler/env.rb +2 -2
- data/bundler/lib/bundler/environment_preserver.rb +29 -2
- data/bundler/lib/bundler/errors.rb +30 -3
- data/bundler/lib/bundler/feature_flag.rb +0 -9
- data/bundler/lib/bundler/fetcher/base.rb +7 -9
- data/bundler/lib/bundler/fetcher/compact_index.rb +11 -16
- data/bundler/lib/bundler/fetcher/downloader.rb +10 -7
- data/bundler/lib/bundler/fetcher/index.rb +2 -30
- data/bundler/lib/bundler/fetcher.rb +24 -25
- data/bundler/lib/bundler/friendly_errors.rb +46 -47
- data/bundler/lib/bundler/gem_helper.rb +53 -31
- data/bundler/lib/bundler/gem_helpers.rb +43 -24
- data/bundler/lib/bundler/gem_version_promoter.rb +10 -20
- data/bundler/lib/bundler/graph.rb +1 -1
- data/bundler/lib/bundler/index.rb +19 -25
- data/bundler/lib/bundler/injector.rb +38 -6
- data/bundler/lib/bundler/inline.rb +4 -13
- data/bundler/lib/bundler/installer/gem_installer.rb +19 -24
- data/bundler/lib/bundler/installer/parallel_installer.rb +46 -25
- data/bundler/lib/bundler/installer/standalone.rb +58 -11
- data/bundler/lib/bundler/installer.rb +51 -81
- data/bundler/lib/bundler/lazy_specification.rb +79 -36
- data/bundler/lib/bundler/lockfile_generator.rb +3 -3
- data/bundler/lib/bundler/lockfile_parser.rb +19 -44
- data/bundler/lib/bundler/man/.document +1 -0
- data/bundler/{man → lib/bundler/man}/bundle-add.1 +21 -5
- data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +16 -4
- data/bundler/{man → lib/bundler/man}/bundle-binstubs.1 +5 -3
- data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +2 -4
- data/bundler/{man → lib/bundler/man}/bundle-cache.1 +7 -1
- data/bundler/{man/bundle-cache.ronn → lib/bundler/man/bundle-cache.1.ronn} +7 -0
- data/bundler/{man → lib/bundler/man}/bundle-check.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-clean.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-config.1 +65 -47
- data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +74 -65
- data/bundler/lib/bundler/man/bundle-console.1 +53 -0
- data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
- data/bundler/{man → lib/bundler/man}/bundle-doctor.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-exec.1 +2 -2
- data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-gem.1 +38 -3
- data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +46 -7
- data/bundler/lib/bundler/man/bundle-help.1 +13 -0
- data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
- data/bundler/{man → lib/bundler/man}/bundle-info.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-init.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-inject.1 +5 -2
- data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +3 -1
- data/bundler/{man → lib/bundler/man}/bundle-install.1 +35 -4
- data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +33 -5
- data/bundler/{man → lib/bundler/man}/bundle-list.1 +7 -7
- data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
- data/bundler/{man → lib/bundler/man}/bundle-lock.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-open.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-outdated.1 +3 -10
- data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +1 -10
- data/bundler/{man → lib/bundler/man}/bundle-platform.1 +16 -6
- data/bundler/{man/bundle-platform.ronn → 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/{man → lib/bundler/man}/bundle-pristine.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-remove.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-show.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-update.1 +5 -5
- data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +5 -4
- data/bundler/lib/bundler/man/bundle-version.1 +35 -0
- data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
- data/bundler/{man → lib/bundler/man}/bundle-viz.1 +4 -1
- data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +2 -0
- data/bundler/{man → lib/bundler/man}/bundle.1 +15 -10
- data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +12 -7
- data/bundler/{man → lib/bundler/man}/gemfile.5 +106 -80
- data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +94 -83
- data/bundler/{man → 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 +2 -2
- data/bundler/lib/bundler/plugin/api/source.rb +25 -9
- data/bundler/lib/bundler/plugin/dsl.rb +1 -1
- data/bundler/lib/bundler/plugin/index.rb +13 -1
- data/bundler/lib/bundler/plugin/installer/git.rb +0 -4
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -5
- data/bundler/lib/bundler/plugin/installer.rb +11 -11
- data/bundler/lib/bundler/plugin/source_list.rb +5 -1
- data/bundler/lib/bundler/plugin.rb +58 -11
- data/bundler/lib/bundler/process_lock.rb +1 -1
- data/bundler/lib/bundler/remote_specification.rb +11 -6
- data/bundler/lib/bundler/resolver/base.rb +50 -0
- data/bundler/lib/bundler/resolver/spec_group.rb +64 -57
- data/bundler/lib/bundler/resolver.rb +234 -230
- data/bundler/lib/bundler/retry.rb +2 -2
- data/bundler/lib/bundler/ruby_dsl.rb +1 -1
- data/bundler/lib/bundler/ruby_version.rb +6 -19
- data/bundler/lib/bundler/rubygems_ext.rb +194 -33
- data/bundler/lib/bundler/rubygems_gem_installer.rb +87 -16
- data/bundler/lib/bundler/rubygems_integration.rb +71 -153
- data/bundler/lib/bundler/runtime.rb +22 -26
- data/bundler/lib/bundler/self_manager.rb +168 -0
- data/bundler/lib/bundler/settings.rb +145 -66
- data/bundler/lib/bundler/setup.rb +2 -2
- data/bundler/lib/bundler/shared_helpers.rb +17 -32
- data/bundler/lib/bundler/similarity_detector.rb +1 -1
- data/bundler/lib/bundler/source/git/git_proxy.rb +88 -84
- data/bundler/lib/bundler/source/git.rb +50 -32
- data/bundler/lib/bundler/source/metadata.rb +3 -7
- data/bundler/lib/bundler/source/path/installer.rb +10 -10
- data/bundler/lib/bundler/source/path.rb +10 -4
- data/bundler/lib/bundler/source/rubygems/remote.rb +1 -1
- data/bundler/lib/bundler/source/rubygems.rb +201 -179
- data/bundler/lib/bundler/source/rubygems_aggregate.rb +68 -0
- data/bundler/lib/bundler/source.rb +25 -5
- data/bundler/lib/bundler/source_list.rb +105 -63
- data/bundler/lib/bundler/source_map.rb +71 -0
- data/bundler/lib/bundler/spec_set.rb +62 -57
- data/bundler/lib/bundler/stub_specification.rb +30 -10
- data/bundler/lib/bundler/templates/Executable +2 -4
- data/bundler/lib/bundler/templates/Executable.bundler +8 -8
- data/bundler/lib/bundler/templates/Executable.standalone +2 -4
- data/bundler/lib/bundler/templates/Gemfile +0 -2
- data/bundler/lib/bundler/templates/gems.rb +0 -3
- data/bundler/lib/bundler/templates/newgem/CHANGELOG.md.tt +5 -0
- data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +12 -1
- data/bundler/lib/bundler/templates/newgem/README.md.tt +9 -14
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +32 -5
- data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
- data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +27 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
- data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +27 -17
- data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
- data/bundler/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
- data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
- data/bundler/lib/bundler/templates/newgem/standard.yml.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
- data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/test_newgem.rb.tt} +3 -1
- data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
- data/bundler/lib/bundler/ui/shell.rb +6 -6
- data/bundler/lib/bundler/uri_credentials_filter.rb +3 -1
- data/bundler/lib/bundler/vendor/.document +1 -0
- data/bundler/lib/bundler/vendor/connection_pool/LICENSE +20 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +19 -21
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +57 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +39 -74
- data/bundler/lib/bundler/vendor/fileutils/LICENSE.txt +22 -0
- data/bundler/lib/bundler/vendor/molinillo/LICENSE +9 -0
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +7 -0
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +2 -2
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +11 -5
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +37 -5
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +34 -28
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +12 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +49 -47
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +82 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +82 -189
- data/bundler/lib/bundler/vendor/thor/LICENSE.md +20 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +9 -7
- 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 +7 -3
- data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
- 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 +10 -5
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +5 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +28 -9
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +27 -6
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +5 -1
- 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/thor/lib/thor.rb +5 -13
- data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
- 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/LICENSE.txt +22 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +17 -80
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +0 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +5 -6
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +0 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +0 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +0 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +1 -14
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +1 -12
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +84 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +22 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +0 -1
- data/bundler/lib/bundler/vendored_persistent.rb +0 -7
- data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
- data/bundler/lib/bundler/vendored_tsort.rb +4 -0
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/lib/bundler/worker.rb +20 -5
- data/bundler/lib/bundler/yaml_serializer.rb +1 -1
- data/bundler/lib/bundler.rb +79 -47
- data/hide_lib_for_update/note.txt +0 -4
- data/lib/rubygems/available_set.rb +7 -9
- data/lib/rubygems/basic_specification.rb +23 -21
- data/lib/rubygems/bundler_version_finder.rb +26 -53
- data/lib/rubygems/command.rb +48 -45
- data/lib/rubygems/command_manager.rb +20 -14
- data/lib/rubygems/commands/build_command.rb +47 -27
- data/lib/rubygems/commands/cert_command.rb +78 -75
- data/lib/rubygems/commands/check_command.rb +20 -22
- data/lib/rubygems/commands/cleanup_command.rb +30 -26
- data/lib/rubygems/commands/contents_command.rb +16 -18
- data/lib/rubygems/commands/dependency_command.rb +39 -51
- data/lib/rubygems/commands/environment_command.rb +11 -10
- data/lib/rubygems/commands/fetch_command.rb +33 -16
- data/lib/rubygems/commands/generate_index_command.rb +17 -19
- data/lib/rubygems/commands/help_command.rb +6 -6
- data/lib/rubygems/commands/info_command.rb +10 -7
- data/lib/rubygems/commands/install_command.rb +29 -27
- data/lib/rubygems/commands/list_command.rb +9 -8
- data/lib/rubygems/commands/lock_command.rb +5 -7
- data/lib/rubygems/commands/mirror_command.rb +3 -5
- data/lib/rubygems/commands/open_command.rb +10 -14
- data/lib/rubygems/commands/outdated_command.rb +5 -7
- data/lib/rubygems/commands/owner_command.rb +26 -16
- data/lib/rubygems/commands/pristine_command.rb +61 -49
- data/lib/rubygems/commands/push_command.rb +22 -59
- data/lib/rubygems/commands/query_command.rb +21 -351
- data/lib/rubygems/commands/rdoc_command.rb +23 -25
- data/lib/rubygems/commands/search_command.rb +8 -8
- data/lib/rubygems/commands/server_command.rb +16 -77
- data/lib/rubygems/commands/setup_command.rb +255 -229
- data/lib/rubygems/commands/signin_command.rb +9 -11
- data/lib/rubygems/commands/signout_command.rb +7 -9
- data/lib/rubygems/commands/sources_command.rb +27 -25
- data/lib/rubygems/commands/specification_command.rb +25 -21
- data/lib/rubygems/commands/stale_command.rb +3 -5
- data/lib/rubygems/commands/uninstall_command.rb +41 -43
- data/lib/rubygems/commands/unpack_command.rb +13 -15
- data/lib/rubygems/commands/update_command.rb +132 -74
- data/lib/rubygems/commands/which_command.rb +7 -9
- data/lib/rubygems/commands/yank_command.rb +16 -19
- data/lib/rubygems/compatibility.rb +4 -2
- data/lib/rubygems/config_file.rb +42 -26
- data/lib/rubygems/core_ext/kernel_gem.rb +1 -1
- data/lib/rubygems/core_ext/kernel_require.rb +6 -3
- data/lib/rubygems/core_ext/kernel_warn.rb +12 -13
- data/lib/rubygems/core_ext/tcpsocket_init.rb +52 -0
- data/lib/rubygems/defaults.rb +108 -32
- data/lib/rubygems/dependency.rb +21 -22
- data/lib/rubygems/dependency_installer.rb +19 -91
- data/lib/rubygems/dependency_list.rb +13 -15
- data/lib/rubygems/deprecate.rb +102 -8
- data/lib/rubygems/doctor.rb +22 -22
- data/lib/rubygems/errors.rb +6 -21
- data/lib/rubygems/exceptions.rb +33 -34
- data/lib/rubygems/ext/build_error.rb +2 -0
- data/lib/rubygems/ext/builder.rb +48 -54
- data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +23 -0
- data/lib/rubygems/ext/cargo_builder.rb +321 -0
- data/lib/rubygems/ext/cmake_builder.rb +6 -9
- data/lib/rubygems/ext/configure_builder.rb +5 -8
- data/lib/rubygems/ext/ext_conf_builder.rb +42 -66
- data/lib/rubygems/ext/rake_builder.rb +7 -10
- data/lib/rubygems/ext.rb +7 -6
- data/lib/rubygems/gem_runner.rb +15 -26
- data/lib/rubygems/gemcutter_utilities.rb +153 -32
- data/lib/rubygems/indexer.rb +30 -49
- data/lib/rubygems/install_default_message.rb +2 -2
- data/lib/rubygems/install_message.rb +2 -2
- data/lib/rubygems/install_update_options.rb +73 -64
- data/lib/rubygems/installer.rb +194 -151
- data/lib/rubygems/installer_uninstaller_utils.rb +29 -0
- data/lib/rubygems/local_remote_options.rb +22 -24
- data/lib/rubygems/mock_gem_ui.rb +2 -8
- data/lib/rubygems/name_tuple.rb +9 -14
- data/lib/rubygems/openssl.rb +7 -0
- 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 +2303 -0
- data/lib/rubygems/optparse.rb +3 -0
- data/lib/rubygems/package/digest_io.rb +0 -2
- data/lib/rubygems/package/file_source.rb +2 -4
- data/lib/rubygems/package/io_source.rb +4 -2
- data/lib/rubygems/package/old.rb +9 -11
- data/lib/rubygems/package/tar_header.rb +54 -56
- data/lib/rubygems/package/tar_reader/entry.rb +2 -5
- data/lib/rubygems/package/tar_reader.rb +1 -4
- data/lib/rubygems/package/tar_writer.rb +8 -18
- data/lib/rubygems/package.rb +101 -117
- data/lib/rubygems/package_task.rb +5 -11
- data/lib/rubygems/path_support.rb +2 -9
- data/lib/rubygems/platform.rb +101 -76
- data/lib/rubygems/psych_tree.rb +1 -3
- data/lib/rubygems/query_utils.rb +351 -0
- data/lib/rubygems/rdoc.rb +2 -14
- data/lib/rubygems/remote_fetcher.rb +48 -74
- data/lib/rubygems/request/connection_pools.rb +6 -10
- data/lib/rubygems/request/http_pool.rb +2 -4
- data/lib/rubygems/request/https_pool.rb +0 -2
- data/lib/rubygems/request.rb +26 -31
- data/lib/rubygems/request_set/gem_dependency_api.rb +23 -25
- data/lib/rubygems/request_set/lockfile/parser.rb +26 -28
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +5 -7
- data/lib/rubygems/request_set/lockfile.rb +17 -21
- data/lib/rubygems/request_set.rb +27 -40
- data/lib/rubygems/requirement.rb +28 -48
- data/lib/rubygems/resolver/activation_request.rb +12 -6
- data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
- data/lib/rubygems/resolver/api_set.rb +32 -25
- data/lib/rubygems/resolver/api_specification.rb +29 -15
- data/lib/rubygems/resolver/best_set.rb +7 -9
- data/lib/rubygems/resolver/composed_set.rb +3 -5
- data/lib/rubygems/resolver/conflict.rb +12 -14
- data/lib/rubygems/resolver/current_set.rb +0 -2
- data/lib/rubygems/resolver/dependency_request.rb +3 -5
- data/lib/rubygems/resolver/git_set.rb +2 -4
- data/lib/rubygems/resolver/git_specification.rb +6 -8
- data/lib/rubygems/resolver/index_set.rb +4 -6
- data/lib/rubygems/resolver/index_specification.rb +38 -7
- data/lib/rubygems/resolver/installed_specification.rb +4 -6
- data/lib/rubygems/resolver/installer_set.rb +66 -24
- data/lib/rubygems/resolver/local_specification.rb +2 -4
- data/lib/rubygems/resolver/lock_set.rb +6 -8
- data/lib/rubygems/resolver/lock_specification.rb +4 -6
- data/lib/rubygems/resolver/molinillo/LICENSE +9 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +8 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +51 -12
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +41 -8
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +76 -8
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +13 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +510 -165
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
- data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
- data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
- data/lib/rubygems/resolver/molinillo.rb +1 -1
- data/lib/rubygems/resolver/requirement_list.rb +0 -2
- data/lib/rubygems/resolver/set.rb +0 -3
- data/lib/rubygems/resolver/source_set.rb +0 -2
- data/lib/rubygems/resolver/spec_specification.rb +14 -2
- data/lib/rubygems/resolver/specification.rb +14 -4
- data/lib/rubygems/resolver/stats.rb +0 -2
- data/lib/rubygems/resolver/vendor_set.rb +1 -3
- data/lib/rubygems/resolver/vendor_specification.rb +3 -5
- data/lib/rubygems/resolver.rb +53 -51
- data/lib/rubygems/s3_uri_signer.rb +7 -15
- data/lib/rubygems/safe_yaml.rb +14 -16
- data/lib/rubygems/security/policies.rb +11 -11
- data/lib/rubygems/security/policy.rb +25 -29
- data/lib/rubygems/security/signer.rb +13 -16
- data/lib/rubygems/security/trust_dir.rb +4 -5
- data/lib/rubygems/security.rb +103 -69
- data/lib/rubygems/security_option.rb +7 -7
- data/lib/rubygems/source/git.rb +30 -30
- data/lib/rubygems/source/installed.rb +1 -3
- data/lib/rubygems/source/local.rb +4 -6
- data/lib/rubygems/source/lock.rb +0 -2
- data/lib/rubygems/source/specific_file.rb +1 -3
- data/lib/rubygems/source/vendor.rb +0 -2
- data/lib/rubygems/source.rb +44 -38
- data/lib/rubygems/source_list.rb +9 -16
- data/lib/rubygems/spec_fetcher.rb +49 -48
- data/lib/rubygems/specification.rb +338 -295
- data/lib/rubygems/specification_policy.rb +112 -61
- data/lib/rubygems/stub_specification.rb +21 -28
- data/lib/rubygems/text.rb +21 -20
- data/lib/rubygems/tsort/.document +1 -0
- data/lib/rubygems/tsort/LICENSE.txt +22 -0
- data/lib/rubygems/tsort/lib/tsort.rb +454 -0
- data/lib/rubygems/tsort.rb +3 -0
- data/lib/rubygems/uninstaller.rb +98 -45
- data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
- data/lib/rubygems/uri.rb +126 -0
- data/lib/rubygems/uri_formatter.rb +2 -3
- data/lib/rubygems/user_interaction.rb +43 -54
- data/lib/rubygems/util/licenses.rb +115 -10
- data/lib/rubygems/util/list.rb +0 -2
- data/lib/rubygems/util.rb +18 -12
- data/lib/rubygems/validator.rb +6 -8
- data/lib/rubygems/version.rb +29 -20
- data/lib/rubygems/version_option.rb +11 -5
- data/lib/rubygems.rb +192 -289
- data/rubygems-update.gemspec +4 -4
- data/setup.rb +11 -22
- data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
- data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
- data/test/rubygems/data/null-required-rubygems-version.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/{lib/rubygems/test_case.rb → test/rubygems/helper.rb} +380 -314
- data/{lib → test}/rubygems/installer_test_case.rb +38 -24
- data/{lib → test}/rubygems/package/tar_test_case.rb +4 -6
- data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
- data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
- data/test/rubygems/plugin/exception/rubygems_plugin.rb +1 -1
- data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -2
- data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +1 -1
- data/test/rubygems/private_ec_key.pem +9 -0
- data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
- data/test/rubygems/rubygems_plugin.rb +2 -4
- data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +4 -6
- data/test/rubygems/test_bundled_ca.rb +43 -50
- data/test/rubygems/test_config.rb +5 -7
- data/test/rubygems/test_deprecate.rb +87 -10
- data/test/rubygems/test_exit.rb +11 -0
- data/test/rubygems/test_gem.rb +719 -639
- data/test/rubygems/test_gem_available_set.rb +24 -26
- data/test/rubygems/test_gem_bundler_version_finder.rb +37 -44
- data/test/rubygems/test_gem_command.rb +78 -49
- data/test/rubygems/test_gem_command_manager.rb +98 -35
- data/test/rubygems/test_gem_commands_build_command.rb +275 -57
- data/test/rubygems/test_gem_commands_cert_command.rb +180 -125
- data/test/rubygems/test_gem_commands_check_command.rb +9 -11
- data/test/rubygems/test_gem_commands_cleanup_command.rb +78 -69
- data/test/rubygems/test_gem_commands_contents_command.rb +73 -42
- data/test/rubygems/test_gem_commands_dependency_command.rb +38 -40
- data/test/rubygems/test_gem_commands_environment_command.rb +60 -38
- data/test/rubygems/test_gem_commands_fetch_command.rb +163 -32
- data/test/rubygems/test_gem_commands_generate_index_command.rb +8 -14
- data/test/rubygems/test_gem_commands_help_command.rb +34 -16
- data/test/rubygems/test_gem_commands_info_command.rb +33 -9
- data/test/rubygems/test_gem_commands_install_command.rb +401 -198
- data/test/rubygems/test_gem_commands_list_command.rb +5 -7
- data/test/rubygems/test_gem_commands_lock_command.rb +11 -13
- data/test/rubygems/test_gem_commands_mirror.rb +3 -5
- data/test/rubygems/test_gem_commands_open_command.rb +16 -19
- data/test/rubygems/test_gem_commands_outdated_command.rb +23 -7
- data/test/rubygems/test_gem_commands_owner_command.rb +100 -46
- data/test/rubygems/test_gem_commands_pristine_command.rb +131 -99
- data/test/rubygems/test_gem_commands_push_command.rb +134 -66
- data/test/rubygems/test_gem_commands_query_command.rb +91 -91
- data/test/rubygems/test_gem_commands_search_command.rb +2 -4
- data/test/rubygems/test_gem_commands_server_command.rb +6 -50
- data/test/rubygems/test_gem_commands_setup_command.rb +288 -179
- data/test/rubygems/test_gem_commands_signin_command.rb +162 -28
- data/test/rubygems/test_gem_commands_signout_command.rb +3 -10
- data/test/rubygems/test_gem_commands_sources_command.rb +139 -32
- data/test/rubygems/test_gem_commands_specification_command.rb +81 -55
- data/test/rubygems/test_gem_commands_stale_command.rb +4 -6
- data/test/rubygems/test_gem_commands_uninstall_command.rb +80 -82
- data/test/rubygems/test_gem_commands_unpack_command.rb +32 -34
- data/test/rubygems/test_gem_commands_update_command.rb +335 -88
- data/test/rubygems/test_gem_commands_which_command.rb +12 -14
- data/test/rubygems/test_gem_commands_yank_command.rb +80 -44
- data/test/rubygems/test_gem_config_file.rb +114 -97
- data/test/rubygems/test_gem_dependency.rb +87 -87
- data/test/rubygems/test_gem_dependency_installer.rb +277 -391
- data/test/rubygems/test_gem_dependency_list.rb +57 -59
- data/test/rubygems/test_gem_dependency_resolution_error.rb +5 -7
- data/test/rubygems/test_gem_doctor.rb +73 -47
- data/test/rubygems/test_gem_ext_builder.rb +115 -109
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +1 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.lock +243 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.toml +10 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/build.rb +21 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +10 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/src/lib.rs +27 -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 +243 -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/build.rb +21 -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 +39 -0
- data/test/rubygems/test_gem_ext_cargo_builder.rb +178 -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 +75 -0
- data/test/rubygems/test_gem_ext_cmake_builder.rb +31 -38
- data/test/rubygems/test_gem_ext_configure_builder.rb +23 -39
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +66 -82
- data/test/rubygems/test_gem_ext_rake_builder.rb +49 -32
- data/test/rubygems/test_gem_gem_runner.rb +51 -8
- data/test/rubygems/test_gem_gemcutter_utilities.rb +87 -76
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +4 -6
- data/test/rubygems/test_gem_indexer.rb +62 -64
- data/test/rubygems/test_gem_install_update_options.rb +31 -21
- data/test/rubygems/test_gem_installer.rb +798 -491
- data/test/rubygems/test_gem_local_remote_options.rb +11 -13
- data/test/rubygems/test_gem_name_tuple.rb +4 -6
- data/test/rubygems/test_gem_package.rb +318 -283
- data/test/rubygems/test_gem_package_old.rb +18 -20
- data/test/rubygems/test_gem_package_tar_header.rb +64 -47
- data/test/rubygems/test_gem_package_tar_reader.rb +8 -10
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +18 -20
- data/test/rubygems/test_gem_package_tar_writer.rb +96 -100
- data/test/rubygems/test_gem_package_task.rb +58 -25
- data/test/rubygems/test_gem_path_support.rb +15 -21
- data/test/rubygems/test_gem_platform.rb +354 -201
- data/test/rubygems/test_gem_rdoc.rb +19 -21
- data/test/rubygems/test_gem_remote_fetcher.rb +376 -337
- data/test/rubygems/test_gem_request.rb +114 -86
- data/test/rubygems/test_gem_request_connection_pools.rb +30 -34
- data/test/rubygems/test_gem_request_set.rb +123 -124
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +222 -226
- data/test/rubygems/test_gem_request_set_lockfile.rb +93 -95
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +68 -70
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +136 -138
- data/test/rubygems/test_gem_requirement.rb +133 -54
- data/test/rubygems/test_gem_resolver.rb +149 -117
- data/test/rubygems/test_gem_resolver_activation_request.rb +6 -8
- data/test/rubygems/test_gem_resolver_api_set.rb +79 -78
- data/test/rubygems/test_gem_resolver_api_specification.rb +47 -49
- data/test/rubygems/test_gem_resolver_best_set.rb +43 -22
- data/test/rubygems/test_gem_resolver_composed_set.rb +1 -3
- data/test/rubygems/test_gem_resolver_conflict.rb +12 -14
- data/test/rubygems/test_gem_resolver_dependency_request.rb +15 -17
- data/test/rubygems/test_gem_resolver_git_set.rb +22 -24
- data/test/rubygems/test_gem_resolver_git_specification.rb +22 -23
- data/test/rubygems/test_gem_resolver_index_set.rb +14 -16
- data/test/rubygems/test_gem_resolver_index_specification.rb +16 -18
- data/test/rubygems/test_gem_resolver_installed_specification.rb +5 -7
- data/test/rubygems/test_gem_resolver_installer_set.rb +104 -44
- data/test/rubygems/test_gem_resolver_local_specification.rb +7 -9
- data/test/rubygems/test_gem_resolver_lock_set.rb +15 -17
- data/test/rubygems/test_gem_resolver_lock_specification.rb +17 -19
- data/test/rubygems/test_gem_resolver_requirement_list.rb +1 -3
- data/test/rubygems/test_gem_resolver_specification.rb +8 -12
- data/test/rubygems/test_gem_resolver_vendor_set.rb +9 -11
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +10 -12
- data/test/rubygems/test_gem_security.rb +104 -78
- data/test/rubygems/test_gem_security_policy.rb +92 -97
- data/test/rubygems/test_gem_security_signer.rb +45 -47
- data/test/rubygems/test_gem_security_trust_dir.rb +12 -14
- data/test/rubygems/test_gem_silent_ui.rb +46 -42
- data/test/rubygems/test_gem_source.rb +53 -52
- data/test/rubygems/test_gem_source_fetch_problem.rb +16 -8
- data/test/rubygems/test_gem_source_git.rb +69 -69
- data/test/rubygems/test_gem_source_installed.rb +16 -18
- data/test/rubygems/test_gem_source_list.rb +5 -6
- data/test/rubygems/test_gem_source_local.rb +15 -17
- data/test/rubygems/test_gem_source_lock.rb +31 -33
- data/test/rubygems/test_gem_source_specific_file.rb +18 -20
- data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
- data/test/rubygems/test_gem_source_vendor.rb +13 -15
- data/test/rubygems/test_gem_spec_fetcher.rb +74 -67
- data/test/rubygems/test_gem_specification.rb +888 -1024
- data/test/rubygems/test_gem_stream_ui.rb +23 -23
- data/test/rubygems/test_gem_stub_specification.rb +39 -57
- data/test/rubygems/test_gem_text.rb +8 -4
- data/test/rubygems/test_gem_uninstaller.rb +233 -104
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +3 -5
- data/test/rubygems/test_gem_uri.rb +39 -0
- data/test/rubygems/test_gem_uri_formatter.rb +14 -16
- data/test/rubygems/test_gem_util.rb +37 -35
- data/test/rubygems/test_gem_validator.rb +10 -12
- data/test/rubygems/test_gem_version.rb +31 -31
- data/test/rubygems/test_gem_version_option.rb +16 -18
- data/test/rubygems/test_kernel.rb +46 -60
- data/test/rubygems/test_project_sanity.rb +8 -3
- data/test/rubygems/test_remote_fetch_error.rb +7 -9
- data/test/rubygems/test_require.rb +240 -167
- data/test/rubygems/test_rubygems.rb +74 -0
- data/{lib/rubygems/test_utilities.rb → test/rubygems/utilities.rb} +30 -39
- data/test/test_changelog_generator.rb +17 -0
- metadata +158 -146
- data/.bundle/config +0 -2
- data/.rubocop.yml +0 -91
- data/Gemfile +0 -8
- data/Gemfile.lock +0 -43
- data/Rakefile +0 -428
- data/bundler/CODE_OF_CONDUCT.md +0 -136
- data/bundler/lib/bundler/gemdeps.rb +0 -29
- data/bundler/lib/bundler/psyched_yaml.rb +0 -37
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +0 -66
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
- data/bundler/man/bundle-add.1.txt +0 -58
- data/bundler/man/bundle-binstubs.1.txt +0 -48
- data/bundler/man/bundle-cache.1.txt +0 -78
- data/bundler/man/bundle-check.1.txt +0 -33
- data/bundler/man/bundle-clean.1.txt +0 -26
- data/bundler/man/bundle-config.1.txt +0 -528
- data/bundler/man/bundle-doctor.1.txt +0 -44
- data/bundler/man/bundle-exec.1.txt +0 -178
- data/bundler/man/bundle-gem.1.txt +0 -91
- data/bundler/man/bundle-info.1.txt +0 -21
- data/bundler/man/bundle-init.1.txt +0 -34
- data/bundler/man/bundle-inject.1.txt +0 -32
- data/bundler/man/bundle-install.1.txt +0 -401
- data/bundler/man/bundle-list.1.txt +0 -43
- data/bundler/man/bundle-lock.1.txt +0 -93
- data/bundler/man/bundle-open.1.txt +0 -29
- data/bundler/man/bundle-outdated.1.txt +0 -131
- data/bundler/man/bundle-platform.1.txt +0 -57
- data/bundler/man/bundle-pristine.1.txt +0 -44
- data/bundler/man/bundle-remove.1.txt +0 -34
- data/bundler/man/bundle-show.1.txt +0 -27
- data/bundler/man/bundle-update.1.txt +0 -390
- data/bundler/man/bundle-viz.1.txt +0 -39
- data/bundler/man/bundle.1.txt +0 -116
- data/bundler/man/gemfile.5.txt +0 -649
- data/lib/rubygems/psych_additions.rb +0 -10
- data/lib/rubygems/server.rb +0 -879
- data/lib/rubygems/source_local.rb +0 -7
- data/lib/rubygems/source_specific_file.rb +0 -6
- data/lib/rubygems/syck_hack.rb +0 -79
- data/lib/rubygems/uri_parser.rb +0 -36
- data/lib/rubygems/uri_parsing.rb +0 -23
- data/lib/ubygems.rb +0 -14
- 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 -612
- data/tmp/.keep +0 -0
- data/util/CL2notes +0 -55
- data/util/bisect +0 -10
- data/util/ci.sh +0 -62
- data/util/cops/deprecations.rb +0 -52
- data/util/create_certs.rb +0 -171
- data/util/create_certs.sh +0 -27
- data/util/create_encrypted_key.rb +0 -16
- data/util/generate_spdx_license_list.rb +0 -63
- data/util/patch_with_prs.rb +0 -77
- data/util/rubocop +0 -8
- data/util/update_bundled_ca_certificates.rb +0 -137
- data/util/update_changelog.rb +0 -64
- /data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
- /data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
- /data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
- /data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
- /data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +0 -0
- /data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
- /data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
- /data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
- /data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
- /data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
data/lib/rubygems/installer.rb
CHANGED
@@ -5,13 +5,12 @@
|
|
5
5
|
# See LICENSE.txt for permissions.
|
6
6
|
#++
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
require 'fileutils'
|
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.
|
@@ -27,7 +26,6 @@ require 'fileutils'
|
|
27
26
|
# file. See Gem.pre_install and Gem.post_install for details.
|
28
27
|
|
29
28
|
class Gem::Installer
|
30
|
-
|
31
29
|
extend Gem::Deprecate
|
32
30
|
|
33
31
|
##
|
@@ -43,10 +41,7 @@ class Gem::Installer
|
|
43
41
|
|
44
42
|
include Gem::UserInteraction
|
45
43
|
|
46
|
-
|
47
|
-
# Filename of the gem being installed.
|
48
|
-
|
49
|
-
attr_reader :gem
|
44
|
+
include Gem::InstallerUninstallerUtils
|
50
45
|
|
51
46
|
##
|
52
47
|
# The directory a gem's executables will be installed into
|
@@ -72,20 +67,28 @@ class Gem::Installer
|
|
72
67
|
|
73
68
|
@path_warning = false
|
74
69
|
|
75
|
-
@install_lock = Mutex.new
|
76
|
-
|
77
70
|
class << self
|
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.
|
78
79
|
|
79
|
-
|
80
|
-
|
80
|
+
def inherited(klass)
|
81
|
+
if klass.name == "Bundler::RubyGemsGemInstaller"
|
82
|
+
require "rubygems/command"
|
83
|
+
end
|
81
84
|
|
82
|
-
|
85
|
+
super(klass)
|
86
|
+
end
|
83
87
|
|
84
88
|
##
|
85
|
-
#
|
86
|
-
# used to allow multiple threads to install Gems at the same time.
|
89
|
+
# True if we've warned about PATH not including Gem.bindir
|
87
90
|
|
88
|
-
|
91
|
+
attr_accessor :path_warning
|
89
92
|
|
90
93
|
##
|
91
94
|
# Overrides the executable format.
|
@@ -100,7 +103,6 @@ class Gem::Installer
|
|
100
103
|
def exec_format
|
101
104
|
@exec_format ||= Gem.default_exec_format
|
102
105
|
end
|
103
|
-
|
104
106
|
end
|
105
107
|
|
106
108
|
##
|
@@ -113,7 +115,6 @@ class Gem::Installer
|
|
113
115
|
end
|
114
116
|
|
115
117
|
class FakePackage
|
116
|
-
|
117
118
|
attr_accessor :spec
|
118
119
|
|
119
120
|
attr_accessor :dir_mode
|
@@ -124,14 +125,14 @@ class Gem::Installer
|
|
124
125
|
@spec = spec
|
125
126
|
end
|
126
127
|
|
127
|
-
def extract_files(destination_dir, pattern =
|
128
|
+
def extract_files(destination_dir, pattern = "*")
|
128
129
|
FileUtils.mkdir_p destination_dir
|
129
130
|
|
130
131
|
spec.files.each do |file|
|
131
132
|
file = File.join destination_dir, file
|
132
133
|
next if File.exist? file
|
133
134
|
FileUtils.mkdir_p File.dirname(file)
|
134
|
-
File.open file,
|
135
|
+
File.open file, "w" do |fp|
|
135
136
|
fp.puts "# #{file}"
|
136
137
|
end
|
137
138
|
end
|
@@ -139,7 +140,6 @@ class Gem::Installer
|
|
139
140
|
|
140
141
|
def copy_to(path)
|
141
142
|
end
|
142
|
-
|
143
143
|
end
|
144
144
|
|
145
145
|
##
|
@@ -177,18 +177,10 @@ class Gem::Installer
|
|
177
177
|
# :post_install_message:: Print gem post install message if true
|
178
178
|
|
179
179
|
def initialize(package, options={})
|
180
|
-
require
|
180
|
+
require "fileutils"
|
181
181
|
|
182
182
|
@options = options
|
183
|
-
|
184
|
-
security_policy = options[:security_policy]
|
185
|
-
@package = Gem::Package.new package, security_policy
|
186
|
-
if $VERBOSE
|
187
|
-
warn "constructing an Installer object with a string is deprecated. Please use Gem::Installer.at (called from: #{caller.first})"
|
188
|
-
end
|
189
|
-
else
|
190
|
-
@package = package
|
191
|
-
end
|
183
|
+
@package = package
|
192
184
|
|
193
185
|
process_options
|
194
186
|
|
@@ -199,6 +191,7 @@ class Gem::Installer
|
|
199
191
|
if options[:user_install]
|
200
192
|
@gem_home = Gem.user_dir
|
201
193
|
@bin_dir = Gem.bindir gem_home unless options[:bin_dir]
|
194
|
+
@plugins_dir = Gem.plugindir(gem_home)
|
202
195
|
check_that_user_bin_dir_is_in_path
|
203
196
|
end
|
204
197
|
end
|
@@ -208,8 +201,8 @@ class Gem::Installer
|
|
208
201
|
#
|
209
202
|
# If +@force+ is set +filename+ is overwritten.
|
210
203
|
#
|
211
|
-
# If +filename+ exists and is a RubyGems wrapper for different gem
|
212
|
-
# is consulted.
|
204
|
+
# If +filename+ exists and it is a RubyGems wrapper for a different gem, then
|
205
|
+
# the user is consulted.
|
213
206
|
#
|
214
207
|
# If +filename+ exists and +@bin_dir+ is Gem.default_bindir (/usr/local) the
|
215
208
|
# user is consulted.
|
@@ -226,8 +219,18 @@ class Gem::Installer
|
|
226
219
|
ruby_executable = false
|
227
220
|
existing = nil
|
228
221
|
|
229
|
-
File.open generated_bin,
|
230
|
-
|
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
|
+
|
231
234
|
io.gets # blankline
|
232
235
|
|
233
236
|
# TODO detect a specially formatted comment instead of trying
|
@@ -248,12 +251,12 @@ class Gem::Installer
|
|
248
251
|
return if spec.name == existing
|
249
252
|
|
250
253
|
# somebody has written to RubyGems' directory, overwrite, too bad
|
251
|
-
return if Gem.default_bindir != @bin_dir
|
254
|
+
return if Gem.default_bindir != @bin_dir && !ruby_executable
|
252
255
|
|
253
256
|
question = "#{spec.name}'s executable \"#{filename}\" conflicts with ".dup
|
254
257
|
|
255
258
|
if ruby_executable
|
256
|
-
question << (existing ||
|
259
|
+
question << (existing || "an unknown executable")
|
257
260
|
|
258
261
|
return if ask_yes_no "#{question}\nOverwrite the executable?", false
|
259
262
|
|
@@ -282,8 +285,6 @@ class Gem::Installer
|
|
282
285
|
|
283
286
|
def spec
|
284
287
|
@package.spec
|
285
|
-
rescue Gem::Package::Error => e
|
286
|
-
raise Gem::InstallError, "invalid gem: #{e.message}"
|
287
288
|
end
|
288
289
|
|
289
290
|
##
|
@@ -300,8 +301,6 @@ class Gem::Installer
|
|
300
301
|
def install
|
301
302
|
pre_install_checks
|
302
303
|
|
303
|
-
FileUtils.rm_f File.join gem_home, 'specifications', spec.spec_name
|
304
|
-
|
305
304
|
run_pre_install_hooks
|
306
305
|
|
307
306
|
# Set loaded_from to ensure extension_dir is correct
|
@@ -330,6 +329,7 @@ class Gem::Installer
|
|
330
329
|
end
|
331
330
|
|
332
331
|
generate_bin
|
332
|
+
generate_plugins
|
333
333
|
|
334
334
|
unless @options[:install_as_default]
|
335
335
|
write_spec
|
@@ -340,7 +340,7 @@ class Gem::Installer
|
|
340
340
|
|
341
341
|
say spec.post_install_message if options[:post_install_message] && !spec.post_install_message.nil?
|
342
342
|
|
343
|
-
Gem::
|
343
|
+
Gem::Specification.add_spec(spec)
|
344
344
|
|
345
345
|
run_post_install_hooks
|
346
346
|
|
@@ -418,10 +418,10 @@ class Gem::Installer
|
|
418
418
|
# True if the gems in the system satisfy +dependency+.
|
419
419
|
|
420
420
|
def installation_satisfies_dependency?(dependency)
|
421
|
-
return true if @options[:development]
|
422
|
-
return true if installed_specs.detect {
|
421
|
+
return true if @options[:development] && dependency.type == :development
|
422
|
+
return true if installed_specs.detect {|s| dependency.matches_spec? s }
|
423
423
|
return false if @only_install_dir
|
424
|
-
|
424
|
+
!dependency.matching_specs.empty?
|
425
425
|
end
|
426
426
|
|
427
427
|
##
|
@@ -431,7 +431,7 @@ class Gem::Installer
|
|
431
431
|
@gem_dir = directory
|
432
432
|
extract_files
|
433
433
|
end
|
434
|
-
|
434
|
+
rubygems_deprecate :unpack
|
435
435
|
|
436
436
|
##
|
437
437
|
# The location of the spec file that is installed.
|
@@ -446,7 +446,7 @@ class Gem::Installer
|
|
446
446
|
#
|
447
447
|
|
448
448
|
def default_spec_file
|
449
|
-
File.join
|
449
|
+
File.join gem_home, "specifications", "default", "#{spec.full_name}.gemspec"
|
450
450
|
end
|
451
451
|
|
452
452
|
##
|
@@ -454,13 +454,9 @@ class Gem::Installer
|
|
454
454
|
# specifications directory.
|
455
455
|
|
456
456
|
def write_spec
|
457
|
-
|
458
|
-
spec.installed_by_version = Gem.rubygems_version
|
459
|
-
|
460
|
-
file.puts spec.to_ruby_for_cache
|
457
|
+
spec.installed_by_version = Gem.rubygems_version
|
461
458
|
|
462
|
-
|
463
|
-
end
|
459
|
+
Gem.write_binary(spec_file, spec.to_ruby_for_cache)
|
464
460
|
end
|
465
461
|
|
466
462
|
##
|
@@ -468,9 +464,7 @@ class Gem::Installer
|
|
468
464
|
# specifications/default directory.
|
469
465
|
|
470
466
|
def write_default_spec
|
471
|
-
|
472
|
-
file.puts spec.to_ruby
|
473
|
-
end
|
467
|
+
Gem.write_binary(default_spec_file, spec.to_ruby)
|
474
468
|
end
|
475
469
|
|
476
470
|
##
|
@@ -480,7 +474,7 @@ class Gem::Installer
|
|
480
474
|
if Gem.win_platform?
|
481
475
|
script_name = formatted_program_filename(filename) + ".bat"
|
482
476
|
script_path = File.join bindir, File.basename(script_name)
|
483
|
-
File.open script_path,
|
477
|
+
File.open script_path, "w" do |file|
|
484
478
|
file.puts windows_stub_script(bindir, filename)
|
485
479
|
end
|
486
480
|
|
@@ -489,29 +483,22 @@ class Gem::Installer
|
|
489
483
|
end
|
490
484
|
|
491
485
|
def generate_bin # :nodoc:
|
492
|
-
return if spec.executables.nil?
|
486
|
+
return if spec.executables.nil? || spec.executables.empty?
|
493
487
|
|
494
|
-
|
495
|
-
Dir.mkdir @bin_dir, *[options[:dir_mode] && 0755].compact
|
496
|
-
rescue SystemCallError
|
497
|
-
raise unless File.directory? @bin_dir
|
498
|
-
end
|
499
|
-
|
500
|
-
raise Gem::FilePermissionError.new(@bin_dir) unless File.writable? @bin_dir
|
488
|
+
ensure_writable_dir @bin_dir
|
501
489
|
|
502
490
|
spec.executables.each do |filename|
|
503
491
|
filename.tap(&Gem::UNTAINT)
|
504
492
|
bin_path = File.join gem_dir, spec.bindir, filename
|
505
|
-
|
506
|
-
unless File.exist? bin_path
|
507
|
-
# TODO change this to a more useful warning
|
508
|
-
warn "`#{bin_path}` does not exist, maybe `gem pristine #{spec.name}` will fix it?"
|
509
|
-
next
|
510
|
-
end
|
493
|
+
next unless File.exist? bin_path
|
511
494
|
|
512
495
|
mode = File.stat(bin_path).mode
|
513
496
|
dir_mode = options[:prog_mode] || (mode | 0111)
|
514
|
-
|
497
|
+
|
498
|
+
unless dir_mode == mode
|
499
|
+
require "fileutils"
|
500
|
+
FileUtils.chmod dir_mode, bin_path
|
501
|
+
end
|
515
502
|
|
516
503
|
check_executable_overwrite filename
|
517
504
|
|
@@ -520,7 +507,19 @@ class Gem::Installer
|
|
520
507
|
else
|
521
508
|
generate_bin_symlink filename, @bin_dir
|
522
509
|
end
|
510
|
+
end
|
511
|
+
end
|
512
|
+
|
513
|
+
def generate_plugins # :nodoc:
|
514
|
+
latest = Gem::Specification.latest_spec_for(spec.name)
|
515
|
+
return if latest && latest.version > spec.version
|
516
|
+
|
517
|
+
ensure_writable_dir @plugins_dir
|
523
518
|
|
519
|
+
if spec.plugins.empty?
|
520
|
+
remove_plugins_for(spec, @plugins_dir)
|
521
|
+
else
|
522
|
+
regenerate_plugins_for(spec, @plugins_dir)
|
524
523
|
end
|
525
524
|
end
|
526
525
|
|
@@ -534,9 +533,10 @@ class Gem::Installer
|
|
534
533
|
def generate_bin_script(filename, bindir)
|
535
534
|
bin_script_path = File.join bindir, formatted_program_filename(filename)
|
536
535
|
|
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,11 +585,10 @@ 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
|
-
first_line = File.open(path, "rb") {|file| file.gets}
|
589
|
+
first_line = File.open(path, "rb") {|file| file.gets } || ""
|
591
590
|
|
592
|
-
if
|
591
|
+
if first_line.start_with?("#!")
|
593
592
|
# Preserve extra words on shebang line, like "-w". Thanks RPA.
|
594
593
|
shebang = first_line.sub(/\A\#!.*?ruby\S*((\s+\S+)+)/, "#!#{Gem.ruby}")
|
595
594
|
opts = $1
|
@@ -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
|
|
@@ -641,27 +638,6 @@ class Gem::Installer
|
|
641
638
|
end
|
642
639
|
end
|
643
640
|
|
644
|
-
def ensure_required_ruby_version_met # :nodoc:
|
645
|
-
if rrv = spec.required_ruby_version
|
646
|
-
ruby_version = Gem.ruby_version
|
647
|
-
unless rrv.satisfied_by? ruby_version
|
648
|
-
raise Gem::RuntimeRequirementNotMetError,
|
649
|
-
"#{spec.name} requires Ruby version #{rrv}. The current ruby version is #{ruby_version}."
|
650
|
-
end
|
651
|
-
end
|
652
|
-
end
|
653
|
-
|
654
|
-
def ensure_required_rubygems_version_met # :nodoc:
|
655
|
-
if rrgv = spec.required_rubygems_version
|
656
|
-
unless rrgv.satisfied_by? Gem.rubygems_version
|
657
|
-
rg_version = Gem::VERSION
|
658
|
-
raise Gem::RuntimeRequirementNotMetError,
|
659
|
-
"#{spec.name} requires RubyGems version #{rrgv}. The current RubyGems version is #{rg_version}. " +
|
660
|
-
"Try 'gem update --system' to update RubyGems itself."
|
661
|
-
end
|
662
|
-
end
|
663
|
-
end
|
664
|
-
|
665
641
|
def ensure_dependencies_met # :nodoc:
|
666
642
|
deps = spec.runtime_dependencies
|
667
643
|
deps |= spec.development_dependencies if @development
|
@@ -677,13 +653,14 @@ class Gem::Installer
|
|
677
653
|
:env_shebang => false,
|
678
654
|
:force => false,
|
679
655
|
:only_install_dir => false,
|
680
|
-
:post_install_message => true
|
656
|
+
:post_install_message => true,
|
681
657
|
}.merge options
|
682
658
|
|
683
659
|
@env_shebang = options[:env_shebang]
|
684
660
|
@force = options[:force]
|
685
661
|
@install_dir = options[:install_dir]
|
686
662
|
@gem_home = options[:install_dir] || Gem.dir
|
663
|
+
@plugins_dir = Gem.plugindir(@gem_home)
|
687
664
|
@ignore_dependencies = options[:ignore_dependencies]
|
688
665
|
@format_executable = options[:format_executable]
|
689
666
|
@wrappers = options[:wrappers]
|
@@ -696,23 +673,25 @@ class Gem::Installer
|
|
696
673
|
@development = options[:development]
|
697
674
|
@build_root = options[:build_root]
|
698
675
|
|
699
|
-
@build_args = options[:build_args]
|
676
|
+
@build_args = options[:build_args]
|
700
677
|
|
701
678
|
unless @build_root.nil?
|
702
|
-
|
703
|
-
@
|
704
|
-
@
|
705
|
-
|
706
|
-
alert_warning "You build with buildroot.\n Build root: #{@build_root}\n Bin dir: #{@bin_dir}\n Gem home: #{@gem_home}"
|
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]:/, ""))
|
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}"
|
707
683
|
end
|
708
684
|
end
|
709
685
|
|
710
686
|
def check_that_user_bin_dir_is_in_path # :nodoc:
|
687
|
+
return if self.class.path_warning
|
688
|
+
|
711
689
|
user_bin_dir = @bin_dir || Gem.bindir(gem_home)
|
712
|
-
user_bin_dir = user_bin_dir.
|
713
|
-
|
690
|
+
user_bin_dir = user_bin_dir.tr(File::ALT_SEPARATOR, File::SEPARATOR) if File::ALT_SEPARATOR
|
691
|
+
|
692
|
+
path = ENV["PATH"]
|
693
|
+
path = path.tr(File::ALT_SEPARATOR, File::SEPARATOR) if File::ALT_SEPARATOR
|
714
694
|
|
715
|
-
path = ENV['PATH']
|
716
695
|
if Gem.win_platform?
|
717
696
|
path = path.downcase
|
718
697
|
user_bin_dir = user_bin_dir.downcase
|
@@ -721,11 +700,9 @@ class Gem::Installer
|
|
721
700
|
path = path.split(File::PATH_SEPARATOR)
|
722
701
|
|
723
702
|
unless path.include? user_bin_dir
|
724
|
-
unless !Gem.win_platform? && (path.include? user_bin_dir.sub(ENV[
|
725
|
-
|
726
|
-
|
727
|
-
self.class.path_warning = true
|
728
|
-
end
|
703
|
+
unless !Gem.win_platform? && (path.include? user_bin_dir.sub(ENV["HOME"], "~"))
|
704
|
+
alert_warning "You don't have #{user_bin_dir} in your PATH,\n\t gem executables will not run."
|
705
|
+
self.class.path_warning = true
|
729
706
|
end
|
730
707
|
end
|
731
708
|
end
|
@@ -740,14 +717,18 @@ class Gem::Installer
|
|
740
717
|
raise Gem::InstallError, "#{spec} has an invalid name"
|
741
718
|
end
|
742
719
|
|
743
|
-
if spec.raw_require_paths.any?{|path| path =~ /\R/ }
|
720
|
+
if spec.raw_require_paths.any? {|path| path =~ /\R/ }
|
744
721
|
raise Gem::InstallError, "#{spec} has an invalid require_paths"
|
745
722
|
end
|
746
723
|
|
747
|
-
if spec.extensions.any?{|ext| ext =~ /\R/ }
|
724
|
+
if spec.extensions.any? {|ext| ext =~ /\R/ }
|
748
725
|
raise Gem::InstallError, "#{spec} has an invalid extensions"
|
749
726
|
end
|
750
727
|
|
728
|
+
if spec.platform.to_s =~ /\R/
|
729
|
+
raise Gem::InstallError, "#{spec.platform} is an invalid platform"
|
730
|
+
end
|
731
|
+
|
751
732
|
unless spec.specification_version.to_s =~ /\A\d+\z/
|
752
733
|
raise Gem::InstallError, "#{spec} has an invalid specification_version"
|
753
734
|
end
|
@@ -777,14 +758,14 @@ class Gem::Installer
|
|
777
758
|
#
|
778
759
|
|
779
760
|
require 'rubygems'
|
780
|
-
|
761
|
+
#{gemdeps_load(spec.name)}
|
781
762
|
version = "#{Gem::Requirement.default_prerelease}"
|
782
763
|
|
783
764
|
str = ARGV.first
|
784
765
|
if str
|
785
766
|
str = str.b[/\\A_(.*)_\\z/, 1]
|
786
767
|
if str and Gem::Version.correct?(str)
|
787
|
-
|
768
|
+
#{explicit_version_requirement(spec.name)}
|
788
769
|
ARGV.shift
|
789
770
|
end
|
790
771
|
end
|
@@ -798,11 +779,29 @@ end
|
|
798
779
|
TEXT
|
799
780
|
end
|
800
781
|
|
782
|
+
def gemdeps_load(name)
|
783
|
+
return "" if name == "bundler"
|
784
|
+
|
785
|
+
<<-TEXT
|
786
|
+
|
787
|
+
Gem.use_gemdeps
|
788
|
+
TEXT
|
789
|
+
end
|
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
|
+
|
801
801
|
##
|
802
802
|
# return the stub script text used to launch the true Ruby script
|
803
803
|
|
804
804
|
def windows_stub_script(bindir, bin_file_name)
|
805
|
-
rb_config = RbConfig::CONFIG
|
806
805
|
rb_topdir = RbConfig::TOPDIR || File.dirname(rb_config["bindir"])
|
807
806
|
|
808
807
|
# get ruby executable file name from RbConfig
|
@@ -810,14 +809,14 @@ TEXT
|
|
810
809
|
ruby_exe = "ruby.exe" if ruby_exe.empty?
|
811
810
|
|
812
811
|
if File.exist?(File.join bindir, ruby_exe)
|
813
|
-
# stub & ruby.exe
|
812
|
+
# stub & ruby.exe within same folder. Portable
|
814
813
|
<<-TEXT
|
815
814
|
@ECHO OFF
|
816
815
|
@"%~dp0#{ruby_exe}" "%~dpn0" %*
|
817
816
|
TEXT
|
818
817
|
elsif bindir.downcase.start_with? rb_topdir.downcase
|
819
818
|
# stub within ruby folder, but not standard bin. Portable
|
820
|
-
require
|
819
|
+
require "pathname"
|
821
820
|
from = Pathname.new bindir
|
822
821
|
to = Pathname.new "#{rb_topdir}/bin"
|
823
822
|
rel = to.relative_path_from from
|
@@ -839,23 +838,11 @@ TEXT
|
|
839
838
|
# configure scripts and rakefiles or mkrf_conf files.
|
840
839
|
|
841
840
|
def build_extensions
|
842
|
-
builder = Gem::Ext::Builder.new spec,
|
841
|
+
builder = Gem::Ext::Builder.new spec, build_args
|
843
842
|
|
844
843
|
builder.build_extensions
|
845
844
|
end
|
846
845
|
|
847
|
-
##
|
848
|
-
# Logs the build +output+ in +build_dir+, then raises Gem::Ext::BuildError.
|
849
|
-
#
|
850
|
-
# TODO: Delete this for RubyGems 4. It remains for API compatibility
|
851
|
-
|
852
|
-
def extension_build_error(build_dir, output, backtrace = nil) # :nodoc:
|
853
|
-
builder = Gem::Ext::Builder.new spec, @build_args
|
854
|
-
|
855
|
-
builder.build_error build_dir, output, backtrace
|
856
|
-
end
|
857
|
-
deprecate :extension_build_error, :none, 2018, 12
|
858
|
-
|
859
846
|
##
|
860
847
|
# Reads the file index and extracts each file into the gem directory.
|
861
848
|
#
|
@@ -895,6 +882,13 @@ TEXT
|
|
895
882
|
gem_dir.to_s
|
896
883
|
end
|
897
884
|
|
885
|
+
##
|
886
|
+
# Filename of the gem being installed.
|
887
|
+
|
888
|
+
def gem
|
889
|
+
@package.gem.path
|
890
|
+
end
|
891
|
+
|
898
892
|
##
|
899
893
|
# Performs various checks before installing the gem such as the install
|
900
894
|
# repository is writable and its directories exist, required Ruby and
|
@@ -921,8 +915,6 @@ TEXT
|
|
921
915
|
|
922
916
|
return true if @force
|
923
917
|
|
924
|
-
ensure_required_ruby_version_met
|
925
|
-
ensure_required_rubygems_version_met
|
926
918
|
ensure_dependencies_met unless @ignore_dependencies
|
927
919
|
|
928
920
|
true
|
@@ -933,17 +925,17 @@ TEXT
|
|
933
925
|
# extensions.
|
934
926
|
|
935
927
|
def write_build_info_file
|
936
|
-
return if
|
928
|
+
return if build_args.empty?
|
937
929
|
|
938
|
-
build_info_dir = File.join gem_home,
|
930
|
+
build_info_dir = File.join gem_home, "build_info"
|
939
931
|
|
940
932
|
dir_mode = options[:dir_mode]
|
941
933
|
FileUtils.mkdir_p build_info_dir, :mode => dir_mode && 0755
|
942
934
|
|
943
935
|
build_info_file = File.join build_info_dir, "#{spec.full_name}.info"
|
944
936
|
|
945
|
-
File.open build_info_file,
|
946
|
-
|
937
|
+
File.open build_info_file, "w" do |io|
|
938
|
+
build_args.each do |arg|
|
947
939
|
io.puts arg
|
948
940
|
end
|
949
941
|
end
|
@@ -955,8 +947,59 @@ TEXT
|
|
955
947
|
# Writes the .gem file to the cache directory
|
956
948
|
|
957
949
|
def write_cache_file
|
958
|
-
cache_file = File.join gem_home,
|
950
|
+
cache_file = File.join gem_home, "cache", spec.file_name
|
959
951
|
@package.copy_to cache_file
|
960
952
|
end
|
961
953
|
|
954
|
+
def ensure_writable_dir(dir) # :nodoc:
|
955
|
+
begin
|
956
|
+
Dir.mkdir dir, *[options[:dir_mode] && 0755].compact
|
957
|
+
rescue SystemCallError
|
958
|
+
raise unless File.directory? dir
|
959
|
+
end
|
960
|
+
|
961
|
+
raise Gem::FilePermissionError.new(dir) unless File.writable? dir
|
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
|
962
1005
|
end
|