rubygems-update 3.0.6 → 3.2.14
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} +1100 -436
- data/CODE_OF_CONDUCT.md +55 -19
- data/CONTRIBUTING.md +37 -10
- data/MAINTAINERS.txt +1 -6
- data/Manifest.txt +104 -64
- data/POLICIES.md +6 -12
- data/README.md +6 -6
- data/Rakefile +121 -111
- data/bin/gem +0 -6
- data/bin/update_rubygems +2 -2
- data/bundler/CHANGELOG.md +1788 -1251
- data/bundler/LICENSE.md +18 -19
- data/bundler/README.md +9 -10
- data/bundler/UPGRADING.md +215 -0
- data/bundler/bundler.gemspec +9 -26
- data/bundler/exe/bundle +22 -3
- data/bundler/lib/bundler.rb +233 -94
- data/bundler/lib/bundler/build_metadata.rb +5 -13
- data/bundler/lib/bundler/capistrano.rb +4 -4
- data/bundler/lib/bundler/cli.rb +221 -148
- data/bundler/lib/bundler/cli/add.rb +28 -16
- data/bundler/lib/bundler/cli/binstubs.rb +6 -2
- data/bundler/lib/bundler/cli/cache.rb +24 -17
- data/bundler/lib/bundler/cli/clean.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +25 -12
- data/bundler/lib/bundler/cli/config.rb +161 -86
- data/bundler/lib/bundler/cli/console.rb +1 -1
- data/bundler/lib/bundler/cli/doctor.rb +5 -5
- data/bundler/lib/bundler/cli/exec.rb +8 -20
- data/bundler/lib/bundler/cli/fund.rb +36 -0
- data/bundler/lib/bundler/cli/gem.rb +125 -32
- data/bundler/lib/bundler/cli/info.rb +29 -6
- data/bundler/lib/bundler/cli/init.rb +2 -2
- data/bundler/lib/bundler/cli/inject.rb +1 -1
- data/bundler/lib/bundler/cli/install.rb +27 -23
- data/bundler/lib/bundler/cli/issue.rb +5 -5
- data/bundler/lib/bundler/cli/list.rb +12 -10
- data/bundler/lib/bundler/cli/open.rb +10 -6
- data/bundler/lib/bundler/cli/outdated.rb +134 -109
- data/bundler/lib/bundler/cli/plugin.rb +19 -2
- data/bundler/lib/bundler/cli/pristine.rb +6 -1
- data/bundler/lib/bundler/cli/show.rb +2 -2
- data/bundler/lib/bundler/cli/update.rb +34 -12
- data/bundler/lib/bundler/compact_index_client.rb +26 -10
- data/bundler/lib/bundler/compact_index_client/cache.rb +6 -14
- data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
- data/bundler/lib/bundler/compact_index_client/updater.rb +8 -20
- data/bundler/lib/bundler/current_ruby.rb +9 -7
- data/bundler/lib/bundler/definition.rb +133 -132
- data/bundler/lib/bundler/dep_proxy.rb +16 -9
- data/bundler/lib/bundler/dependency.rb +19 -14
- data/bundler/lib/bundler/deployment.rb +1 -1
- data/bundler/lib/bundler/dsl.rb +54 -71
- data/bundler/lib/bundler/endpoint_specification.rb +1 -1
- data/bundler/lib/bundler/env.rb +9 -14
- data/bundler/lib/bundler/environment_preserver.rb +26 -3
- data/bundler/lib/bundler/errors.rb +1 -0
- data/bundler/lib/bundler/feature_flag.rb +19 -34
- data/bundler/lib/bundler/fetcher.rb +19 -16
- data/bundler/lib/bundler/fetcher/base.rb +1 -1
- data/bundler/lib/bundler/fetcher/compact_index.rb +27 -13
- data/bundler/lib/bundler/fetcher/dependency.rb +1 -1
- data/bundler/lib/bundler/fetcher/downloader.rb +6 -3
- data/bundler/lib/bundler/fetcher/index.rb +8 -7
- data/bundler/lib/bundler/friendly_errors.rb +27 -19
- data/bundler/lib/bundler/gem_helper.rb +68 -37
- data/bundler/lib/bundler/gem_helpers.rb +38 -29
- data/bundler/lib/bundler/gem_tasks.rb +1 -1
- data/bundler/lib/bundler/gem_version_promoter.rb +5 -5
- data/bundler/lib/bundler/graph.rb +3 -3
- data/bundler/lib/bundler/index.rb +12 -7
- data/bundler/lib/bundler/injector.rb +32 -12
- data/bundler/lib/bundler/inline.rb +41 -30
- data/bundler/lib/bundler/installer.rb +41 -60
- data/bundler/lib/bundler/installer/gem_installer.rb +8 -4
- data/bundler/lib/bundler/installer/parallel_installer.rb +20 -26
- data/bundler/lib/bundler/installer/standalone.rb +18 -4
- data/bundler/lib/bundler/lazy_specification.rb +41 -27
- data/bundler/lib/bundler/lockfile_generator.rb +1 -1
- data/bundler/lib/bundler/lockfile_parser.rb +16 -33
- data/bundler/lib/bundler/{ssl_certs → man}/.document +0 -0
- data/bundler/lib/bundler/man/bundle-add.1 +66 -0
- data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +7 -1
- data/bundler/lib/bundler/man/bundle-binstubs.1 +42 -0
- data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +3 -5
- data/bundler/lib/bundler/man/bundle-cache.1 +55 -0
- data/bundler/{man/bundle-package.ronn → lib/bundler/man/bundle-cache.1.ronn} +15 -15
- data/bundler/lib/bundler/man/bundle-check.1 +31 -0
- data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-clean.1 +24 -0
- data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-config.1 +488 -0
- data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +59 -67
- data/bundler/lib/bundler/man/bundle-doctor.1 +44 -0
- data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-exec.1 +165 -0
- data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +1 -1
- data/bundler/lib/bundler/man/bundle-gem.1 +102 -0
- data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +30 -7
- data/bundler/lib/bundler/man/bundle-info.1 +20 -0
- data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-init.1 +25 -0
- data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +1 -1
- data/bundler/lib/bundler/man/bundle-inject.1 +33 -0
- data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-install.1 +338 -0
- data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +34 -7
- data/bundler/lib/bundler/man/bundle-list.1 +50 -0
- data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
- data/bundler/lib/bundler/man/bundle-lock.1 +84 -0
- data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-open.1 +32 -0
- data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-outdated.1 +155 -0
- data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-platform.1 +61 -0
- data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-pristine.1 +34 -0
- data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-remove.1 +31 -0
- data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-show.1 +23 -0
- data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-update.1 +394 -0
- data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +3 -3
- data/bundler/lib/bundler/man/bundle-viz.1 +39 -0
- data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle.1 +136 -0
- data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +2 -2
- data/bundler/lib/bundler/man/gemfile.5 +686 -0
- data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +16 -20
- data/bundler/lib/bundler/man/index.txt +25 -0
- data/bundler/lib/bundler/match_platform.rb +1 -1
- data/bundler/lib/bundler/mirror.rb +5 -5
- data/bundler/lib/bundler/plugin.rb +75 -36
- data/bundler/lib/bundler/plugin/api.rb +1 -1
- data/bundler/lib/bundler/plugin/api/source.rb +12 -7
- data/bundler/lib/bundler/plugin/dsl.rb +1 -1
- data/bundler/lib/bundler/plugin/index.rb +24 -4
- data/bundler/lib/bundler/plugin/installer.rb +33 -22
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -1
- data/bundler/lib/bundler/plugin/source_list.rb +5 -1
- data/bundler/lib/bundler/psyched_yaml.rb +0 -15
- data/bundler/lib/bundler/remote_specification.rb +5 -4
- data/bundler/lib/bundler/resolver.rb +191 -87
- data/bundler/lib/bundler/resolver/spec_group.rb +76 -48
- data/bundler/lib/bundler/retry.rb +3 -3
- data/bundler/lib/bundler/ruby_version.rb +5 -20
- data/bundler/lib/bundler/rubygems_ext.rb +76 -72
- data/bundler/lib/bundler/rubygems_gem_installer.rb +47 -13
- data/bundler/lib/bundler/rubygems_integration.rb +159 -444
- data/bundler/lib/bundler/runtime.rb +6 -23
- data/bundler/lib/bundler/settings.rb +67 -93
- data/bundler/lib/bundler/setup.rb +11 -12
- data/bundler/lib/bundler/shared_helpers.rb +54 -80
- data/bundler/lib/bundler/similarity_detector.rb +3 -3
- data/bundler/lib/bundler/source.rb +12 -6
- data/bundler/lib/bundler/source/git.rb +47 -38
- data/bundler/lib/bundler/source/git/git_proxy.rb +101 -102
- data/bundler/lib/bundler/source/metadata.rb +7 -6
- data/bundler/lib/bundler/source/path.rb +20 -11
- data/bundler/lib/bundler/source/path/installer.rb +10 -10
- data/bundler/lib/bundler/source/rubygems.rb +56 -29
- data/bundler/lib/bundler/source/rubygems/remote.rb +3 -4
- data/bundler/lib/bundler/source_list.rb +32 -30
- data/bundler/lib/bundler/spec_set.rb +37 -25
- data/bundler/lib/bundler/stub_specification.rb +40 -34
- data/bundler/lib/bundler/templates/Executable.bundler +23 -14
- 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 +16 -2
- data/bundler/lib/bundler/templates/newgem/README.md.tt +7 -5
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +19 -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 +18 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
- data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
- data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +18 -31
- data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -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/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -0
- data/bundler/lib/bundler/templates/newgem/test/minitest/test_helper.rb.tt +6 -0
- 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/templates/newgem/travis.yml.tt +0 -1
- data/bundler/lib/bundler/ui.rb +3 -3
- data/bundler/lib/bundler/ui/rg_proxy.rb +1 -1
- data/bundler/lib/bundler/ui/shell.rb +7 -11
- data/bundler/lib/bundler/uri_credentials_filter.rb +10 -4
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +161 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +66 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +176 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +273 -147
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +5 -6
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +7 -0
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +36 -4
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +6 -6
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +3 -3
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +39 -11
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +4 -4
- 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 +11 -0
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +53 -51
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +2 -2
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +302 -462
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +40 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +53 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +79 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor.rb +16 -9
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +28 -13
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +3 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +7 -17
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +20 -9
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +19 -8
- data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +63 -43
- data/bundler/lib/bundler/vendor/thor/lib/thor/command.rb +21 -14
- data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +78 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +3 -3
- data/bundler/lib/bundler/vendor/thor/lib/thor/invocation.rb +1 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor.rb +2 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb +6 -6
- data/bundler/lib/bundler/vendor/thor/lib/thor/nested_context.rb +29 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +7 -3
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +20 -7
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +21 -5
- data/bundler/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +1 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb +15 -14
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +4 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +65 -8
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +10 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +3 -3
- data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +18 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +104 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +744 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +94 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +267 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1568 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +88 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +23 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +261 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +21 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +294 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +546 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +125 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +6 -0
- data/bundler/lib/bundler/vendored_fileutils.rb +1 -6
- data/bundler/lib/bundler/vendored_molinillo.rb +1 -1
- data/bundler/lib/bundler/vendored_persistent.rb +7 -12
- data/bundler/lib/bundler/vendored_thor.rb +2 -2
- data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
- data/bundler/lib/bundler/vendored_uri.rb +4 -0
- data/bundler/lib/bundler/version.rb +1 -20
- data/bundler/lib/bundler/version_ranges.rb +51 -5
- data/bundler/lib/bundler/vlad.rb +2 -2
- data/bundler/lib/bundler/worker.rb +2 -4
- data/bundler/lib/bundler/yaml_serializer.rb +3 -4
- data/lib/rubygems.rb +198 -222
- data/lib/rubygems/available_set.rb +4 -5
- data/lib/rubygems/basic_specification.rb +32 -19
- data/lib/rubygems/bundler_version_finder.rb +19 -9
- data/lib/rubygems/command.rb +73 -21
- data/lib/rubygems/command_manager.rb +5 -12
- data/lib/rubygems/commands/build_command.rb +51 -18
- data/lib/rubygems/commands/cert_command.rb +2 -11
- data/lib/rubygems/commands/check_command.rb +0 -2
- data/lib/rubygems/commands/cleanup_command.rb +17 -13
- data/lib/rubygems/commands/contents_command.rb +7 -9
- data/lib/rubygems/commands/dependency_command.rb +9 -10
- data/lib/rubygems/commands/environment_command.rb +1 -6
- data/lib/rubygems/commands/fetch_command.rb +2 -4
- data/lib/rubygems/commands/generate_index_command.rb +3 -2
- data/lib/rubygems/commands/help_command.rb +4 -4
- data/lib/rubygems/commands/info_command.rb +9 -4
- data/lib/rubygems/commands/install_command.rb +12 -54
- data/lib/rubygems/commands/list_command.rb +8 -7
- data/lib/rubygems/commands/lock_command.rb +3 -5
- data/lib/rubygems/commands/mirror_command.rb +0 -1
- data/lib/rubygems/commands/open_command.rb +1 -4
- data/lib/rubygems/commands/outdated_command.rb +0 -1
- data/lib/rubygems/commands/owner_command.rb +10 -10
- data/lib/rubygems/commands/pristine_command.rb +13 -9
- data/lib/rubygems/commands/push_command.rb +12 -51
- data/lib/rubygems/commands/query_command.rb +14 -330
- data/lib/rubygems/commands/rdoc_command.rb +0 -1
- data/lib/rubygems/commands/search_command.rb +7 -7
- data/lib/rubygems/commands/server_command.rb +3 -1
- data/lib/rubygems/commands/setup_command.rb +143 -101
- data/lib/rubygems/commands/signin_command.rb +0 -1
- data/lib/rubygems/commands/signout_command.rb +0 -2
- data/lib/rubygems/commands/sources_command.rb +22 -6
- data/lib/rubygems/commands/specification_command.rb +8 -3
- data/lib/rubygems/commands/stale_command.rb +1 -1
- data/lib/rubygems/commands/uninstall_command.rb +2 -3
- data/lib/rubygems/commands/unpack_command.rb +3 -32
- data/lib/rubygems/commands/update_command.rb +73 -28
- data/lib/rubygems/commands/which_command.rb +0 -1
- data/lib/rubygems/commands/yank_command.rb +10 -7
- data/lib/rubygems/compatibility.rb +4 -4
- data/lib/rubygems/config_file.rb +48 -27
- data/lib/rubygems/core_ext/kernel_gem.rb +7 -6
- data/lib/rubygems/core_ext/kernel_require.rb +44 -6
- data/lib/rubygems/core_ext/kernel_warn.rb +22 -13
- data/lib/rubygems/core_ext/tcpsocket_init.rb +52 -0
- data/lib/rubygems/defaults.rb +110 -23
- data/lib/rubygems/dependency.rb +28 -14
- data/lib/rubygems/dependency_installer.rb +11 -166
- data/lib/rubygems/dependency_list.rb +17 -18
- data/lib/rubygems/deprecate.rb +51 -6
- data/lib/rubygems/doctor.rb +4 -4
- data/lib/rubygems/errors.rb +5 -7
- data/lib/rubygems/exceptions.rb +2 -24
- data/lib/rubygems/ext.rb +6 -6
- data/lib/rubygems/ext/build_error.rb +2 -0
- data/lib/rubygems/ext/builder.rb +45 -82
- data/lib/rubygems/ext/cmake_builder.rb +6 -7
- data/lib/rubygems/ext/configure_builder.rb +5 -8
- data/lib/rubygems/ext/ext_conf_builder.rb +27 -23
- data/lib/rubygems/ext/rake_builder.rb +4 -6
- data/lib/rubygems/gem_runner.rb +3 -10
- data/lib/rubygems/gemcutter_utilities.rb +111 -37
- data/lib/rubygems/indexer.rb +9 -26
- data/lib/rubygems/install_update_options.rb +7 -7
- data/lib/rubygems/installer.rb +91 -98
- data/lib/rubygems/installer_test_case.rb +104 -42
- data/lib/rubygems/installer_uninstaller_utils.rb +29 -0
- data/lib/rubygems/local_remote_options.rb +1 -1
- data/lib/rubygems/mock_gem_ui.rb +1 -4
- data/lib/rubygems/name_tuple.rb +4 -7
- data/lib/rubygems/openssl.rb +7 -0
- data/lib/rubygems/package.rb +49 -32
- data/lib/rubygems/package/digest_io.rb +0 -2
- data/lib/rubygems/package/file_source.rb +0 -2
- data/lib/rubygems/package/io_source.rb +0 -2
- data/lib/rubygems/package/old.rb +1 -3
- data/lib/rubygems/package/tar_header.rb +4 -6
- data/lib/rubygems/package/tar_reader.rb +15 -12
- data/lib/rubygems/package/tar_reader/entry.rb +0 -3
- data/lib/rubygems/package/tar_test_case.rb +2 -4
- data/lib/rubygems/package/tar_writer.rb +6 -16
- data/lib/rubygems/package_task.rb +1 -7
- data/lib/rubygems/path_support.rb +2 -2
- data/lib/rubygems/platform.rb +22 -16
- data/lib/rubygems/query_utils.rb +353 -0
- data/lib/rubygems/rdoc.rb +0 -12
- data/lib/rubygems/remote_fetcher.rb +33 -59
- data/lib/rubygems/request.rb +11 -14
- data/lib/rubygems/request/connection_pools.rb +3 -7
- data/lib/rubygems/request/http_pool.rb +0 -1
- data/lib/rubygems/request_set.rb +10 -23
- data/lib/rubygems/request_set/gem_dependency_api.rb +9 -11
- data/lib/rubygems/request_set/lockfile.rb +13 -12
- data/lib/rubygems/request_set/lockfile/parser.rb +2 -2
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +1 -1
- data/lib/rubygems/requirement.rb +36 -35
- data/lib/rubygems/resolver.rb +20 -16
- data/lib/rubygems/resolver/activation_request.rb +27 -51
- data/lib/rubygems/resolver/api_set.rb +31 -24
- data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
- data/lib/rubygems/resolver/api_specification.rb +24 -10
- data/lib/rubygems/resolver/best_set.rb +4 -6
- data/lib/rubygems/resolver/composed_set.rb +3 -5
- data/lib/rubygems/resolver/conflict.rb +2 -9
- data/lib/rubygems/resolver/current_set.rb +0 -2
- data/lib/rubygems/resolver/dependency_request.rb +1 -3
- data/lib/rubygems/resolver/git_set.rb +0 -2
- data/lib/rubygems/resolver/git_specification.rb +0 -2
- data/lib/rubygems/resolver/index_set.rb +1 -3
- data/lib/rubygems/resolver/index_specification.rb +32 -2
- data/lib/rubygems/resolver/installed_specification.rb +0 -2
- data/lib/rubygems/resolver/installer_set.rb +63 -16
- data/lib/rubygems/resolver/local_specification.rb +0 -2
- data/lib/rubygems/resolver/lock_set.rb +3 -5
- data/lib/rubygems/resolver/lock_specification.rb +2 -4
- data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
- 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.rb +39 -6
- 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/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 +12 -0
- 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/requirement_list.rb +0 -1
- data/lib/rubygems/resolver/set.rb +0 -2
- data/lib/rubygems/resolver/source_set.rb +0 -2
- data/lib/rubygems/resolver/spec_specification.rb +14 -2
- data/lib/rubygems/resolver/specification.rb +13 -2
- data/lib/rubygems/resolver/vendor_set.rb +0 -2
- data/lib/rubygems/resolver/vendor_specification.rb +0 -2
- data/lib/rubygems/s3_uri_signer.rb +15 -13
- data/lib/rubygems/safe_yaml.rb +4 -4
- data/lib/rubygems/security.rb +27 -34
- data/lib/rubygems/security/policy.rb +4 -8
- data/lib/rubygems/security/signer.rb +8 -9
- data/lib/rubygems/security/trust_dir.rb +1 -3
- data/lib/rubygems/server.rb +20 -16
- data/lib/rubygems/source.rb +30 -13
- data/lib/rubygems/source/git.rb +7 -8
- data/lib/rubygems/source/installed.rb +0 -2
- data/lib/rubygems/source/local.rb +2 -4
- data/lib/rubygems/source/lock.rb +0 -2
- data/lib/rubygems/source/specific_file.rb +0 -2
- data/lib/rubygems/source/vendor.rb +0 -2
- data/lib/rubygems/source_list.rb +6 -6
- data/lib/rubygems/spec_fetcher.rb +22 -34
- data/lib/rubygems/specification.rb +207 -278
- data/lib/rubygems/specification_policy.rb +135 -57
- data/{bundler/lib/bundler/ssl_certs/index.rubygems.org → lib/rubygems/ssl_certs/rubygems.org}/GlobalSignRootCA.pem +0 -0
- data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
- data/lib/rubygems/stub_specification.rb +4 -5
- data/lib/rubygems/test_case.rb +221 -341
- data/lib/rubygems/test_utilities.rb +22 -18
- data/lib/rubygems/text.rb +2 -3
- data/lib/rubygems/uninstaller.rb +49 -30
- data/lib/rubygems/uri_formatter.rb +2 -4
- data/lib/rubygems/uri_parser.rb +34 -0
- data/lib/rubygems/uri_parsing.rb +23 -0
- data/lib/rubygems/user_interaction.rb +3 -20
- data/lib/rubygems/util.rb +20 -44
- data/lib/rubygems/util/licenses.rb +400 -400
- data/lib/rubygems/validator.rb +9 -31
- data/lib/rubygems/version.rb +29 -21
- data/lib/rubygems/version_option.rb +6 -0
- data/rubygems-update.gemspec +4 -11
- data/setup.rb +2 -7
- 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/rubygems/commands/crash_command.rb +0 -2
- data/test/rubygems/rubygems_plugin.rb +0 -2
- data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +12 -0
- data/test/rubygems/test_bundled_ca.rb +42 -45
- data/test/rubygems/test_config.rb +0 -2
- data/test/rubygems/test_deprecate.rb +41 -5
- data/test/rubygems/test_gem.rb +405 -236
- data/test/rubygems/test_gem_available_set.rb +5 -6
- data/test/rubygems/test_gem_bundler_version_finder.rb +20 -2
- data/test/rubygems/test_gem_command.rb +144 -9
- data/test/rubygems/test_gem_command_manager.rb +40 -17
- data/test/rubygems/test_gem_commands_build_command.rb +386 -13
- data/test/rubygems/test_gem_commands_cert_command.rb +18 -6
- data/test/rubygems/test_gem_commands_check_command.rb +0 -2
- data/test/rubygems/test_gem_commands_cleanup_command.rb +35 -10
- data/test/rubygems/test_gem_commands_contents_command.rb +50 -19
- data/test/rubygems/test_gem_commands_dependency_command.rb +1 -3
- data/test/rubygems/test_gem_commands_environment_command.rb +21 -33
- data/test/rubygems/test_gem_commands_fetch_command.rb +0 -2
- data/test/rubygems/test_gem_commands_generate_index_command.rb +32 -2
- data/test/rubygems/test_gem_commands_help_command.rb +16 -8
- data/test/rubygems/test_gem_commands_info_command.rb +6 -7
- data/test/rubygems/test_gem_commands_install_command.rb +368 -34
- data/test/rubygems/test_gem_commands_list_command.rb +0 -2
- data/test/rubygems/test_gem_commands_lock_command.rb +0 -2
- data/test/rubygems/test_gem_commands_mirror.rb +1 -2
- data/test/rubygems/test_gem_commands_open_command.rb +4 -6
- data/test/rubygems/test_gem_commands_outdated_command.rb +18 -1
- data/test/rubygems/test_gem_commands_owner_command.rb +62 -9
- data/test/rubygems/test_gem_commands_pristine_command.rb +148 -16
- data/test/rubygems/test_gem_commands_push_command.rb +94 -21
- data/test/rubygems/test_gem_commands_query_command.rb +35 -10
- data/test/rubygems/test_gem_commands_search_command.rb +0 -2
- data/test/rubygems/test_gem_commands_server_command.rb +6 -4
- data/test/rubygems/test_gem_commands_setup_command.rb +228 -128
- data/test/rubygems/test_gem_commands_signin_command.rb +36 -11
- data/test/rubygems/test_gem_commands_signout_command.rb +0 -7
- data/test/rubygems/test_gem_commands_sources_command.rb +193 -9
- data/test/rubygems/test_gem_commands_specification_command.rb +46 -20
- data/test/rubygems/test_gem_commands_stale_command.rb +0 -2
- data/test/rubygems/test_gem_commands_uninstall_command.rb +108 -52
- data/test/rubygems/test_gem_commands_unpack_command.rb +0 -2
- data/test/rubygems/test_gem_commands_update_command.rb +201 -29
- data/test/rubygems/test_gem_commands_which_command.rb +3 -5
- data/test/rubygems/test_gem_commands_yank_command.rb +86 -5
- data/test/rubygems/test_gem_config_file.rb +25 -13
- data/test/rubygems/test_gem_dependency.rb +6 -2
- data/test/rubygems/test_gem_dependency_installer.rb +169 -252
- data/test/rubygems/test_gem_dependency_list.rb +31 -26
- data/test/rubygems/test_gem_dependency_resolution_error.rb +1 -3
- data/test/rubygems/test_gem_doctor.rb +28 -2
- data/test/rubygems/test_gem_ext_builder.rb +51 -44
- data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -23
- data/test/rubygems/test_gem_ext_configure_builder.rb +6 -14
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +21 -29
- data/test/rubygems/test_gem_ext_rake_builder.rb +39 -22
- data/test/rubygems/test_gem_gem_runner.rb +47 -2
- data/test/rubygems/test_gem_gemcutter_utilities.rb +16 -13
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -2
- data/test/rubygems/test_gem_indexer.rb +40 -55
- data/test/rubygems/test_gem_install_update_options.rb +45 -21
- data/test/rubygems/test_gem_installer.rb +661 -338
- data/test/rubygems/test_gem_local_remote_options.rb +0 -2
- data/test/rubygems/test_gem_name_tuple.rb +0 -2
- data/test/rubygems/test_gem_package.rb +132 -45
- data/test/rubygems/test_gem_package_old.rb +56 -55
- data/test/rubygems/test_gem_package_tar_header.rb +18 -1
- data/test/rubygems/test_gem_package_tar_reader.rb +0 -2
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +6 -7
- data/test/rubygems/test_gem_package_tar_writer.rb +20 -12
- data/test/rubygems/test_gem_package_task.rb +46 -13
- data/test/rubygems/test_gem_path_support.rb +17 -13
- data/test/rubygems/test_gem_platform.rb +74 -7
- data/test/rubygems/test_gem_rdoc.rb +0 -1
- data/test/rubygems/test_gem_remote_fetcher.rb +223 -209
- data/test/rubygems/test_gem_request.rb +30 -19
- data/test/rubygems/test_gem_request_connection_pools.rb +2 -2
- data/test/rubygems/test_gem_request_set.rb +104 -29
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +4 -6
- data/test/rubygems/test_gem_request_set_lockfile.rb +4 -5
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +9 -10
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +118 -118
- data/test/rubygems/test_gem_requirement.rb +50 -4
- data/test/rubygems/test_gem_resolver.rb +73 -31
- data/test/rubygems/test_gem_resolver_activation_request.rb +3 -34
- data/test/rubygems/test_gem_resolver_api_set.rb +60 -59
- data/test/rubygems/test_gem_resolver_api_specification.rb +3 -5
- data/test/rubygems/test_gem_resolver_best_set.rb +27 -6
- data/test/rubygems/test_gem_resolver_composed_set.rb +0 -2
- data/test/rubygems/test_gem_resolver_conflict.rb +1 -7
- data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -2
- data/test/rubygems/test_gem_resolver_git_set.rb +0 -2
- data/test/rubygems/test_gem_resolver_git_specification.rb +1 -2
- data/test/rubygems/test_gem_resolver_index_set.rb +2 -4
- data/test/rubygems/test_gem_resolver_index_specification.rb +7 -4
- data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -3
- data/test/rubygems/test_gem_resolver_installer_set.rb +10 -10
- data/test/rubygems/test_gem_resolver_local_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_lock_set.rb +3 -5
- data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -2
- data/test/rubygems/test_gem_resolver_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_vendor_set.rb +1 -3
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -2
- data/test/rubygems/test_gem_security.rb +27 -25
- data/test/rubygems/test_gem_security_policy.rb +7 -12
- data/test/rubygems/test_gem_security_signer.rb +11 -12
- data/test/rubygems/test_gem_security_trust_dir.rb +4 -6
- data/test/rubygems/test_gem_server.rb +13 -12
- data/test/rubygems/test_gem_silent_ui.rb +0 -1
- data/test/rubygems/test_gem_source.rb +32 -17
- data/test/rubygems/test_gem_source_fetch_problem.rb +0 -1
- data/test/rubygems/test_gem_source_git.rb +12 -18
- data/test/rubygems/test_gem_source_installed.rb +11 -13
- data/test/rubygems/test_gem_source_list.rb +1 -1
- data/test/rubygems/test_gem_source_local.rb +8 -9
- data/test/rubygems/test_gem_source_lock.rb +17 -19
- data/test/rubygems/test_gem_source_specific_file.rb +9 -10
- data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
- data/test/rubygems/test_gem_source_vendor.rb +7 -9
- data/test/rubygems/test_gem_spec_fetcher.rb +11 -4
- data/test/rubygems/test_gem_specification.rb +363 -245
- data/test/rubygems/test_gem_stream_ui.rb +3 -1
- data/test/rubygems/test_gem_stub_specification.rb +6 -7
- data/test/rubygems/test_gem_text.rb +1 -2
- data/test/rubygems/test_gem_uninstaller.rb +165 -22
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -2
- data/test/rubygems/test_gem_uri_formatter.rb +0 -2
- data/test/rubygems/test_gem_util.rb +17 -15
- data/test/rubygems/test_gem_validator.rb +4 -7
- data/test/rubygems/test_gem_version.rb +23 -10
- data/test/rubygems/test_gem_version_option.rb +1 -3
- data/test/rubygems/test_kernel.rb +25 -9
- data/test/rubygems/test_project_sanity.rb +20 -0
- data/test/rubygems/test_remote_fetch_error.rb +1 -2
- data/test/rubygems/test_require.rb +394 -56
- data/test/test_changelog_generator.rb +17 -0
- metadata +109 -155
- data/.rubocop.yml +0 -67
- data/.travis.yml +0 -38
- data/appveyor.yml +0 -43
- data/bundler/CODE_OF_CONDUCT.md +0 -42
- data/bundler/CONTRIBUTING.md +0 -17
- data/bundler/exe/bundle_ruby +0 -60
- data/bundler/lib/bundler/cli/package.rb +0 -49
- data/bundler/lib/bundler/compatibility_guard.rb +0 -14
- data/bundler/lib/bundler/gem_remote_fetcher.rb +0 -43
- data/bundler/lib/bundler/ssl_certs/certificate_manager.rb +0 -66
- data/bundler/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
- data/bundler/lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
- data/bundler/lib/bundler/templates/newgem/test/test_helper.rb.tt +0 -4
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb +0 -27
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/ssl_reuse.rb +0 -129
- data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/io_binary_read.rb +0 -12
- data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/ordered_hash.rb +0 -129
- data/lib/rubygems/source_local.rb +0 -7
- data/lib/rubygems/source_specific_file.rb +0 -6
- data/lib/rubygems/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem +0 -21
- data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
- data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
- data/lib/ubygems.rb +0 -14
- data/util/CL2notes +0 -55
- data/util/ci +0 -82
- 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 -61
- data/util/patch_with_prs.rb +0 -77
- data/util/rubocop +0 -8
- data/util/update_bundled_ca_certificates.rb +0 -139
- data/util/update_changelog.rb +0 -67
@@ -25,12 +25,12 @@ module Gem::InstallUpdateOptions
|
|
25
25
|
end
|
26
26
|
|
27
27
|
add_option(:"Install/Update", '-n', '--bindir DIR',
|
28
|
-
'Directory where executables
|
29
|
-
'
|
28
|
+
'Directory where executables will be',
|
29
|
+
'placed when the gem is installed') do |value, options|
|
30
30
|
options[:bin_dir] = File.expand_path(value)
|
31
31
|
end
|
32
32
|
|
33
|
-
add_option(:"Install/Update",
|
33
|
+
add_option(:"Install/Update", '--document [TYPES]', Array,
|
34
34
|
'Generate documentation for installed gems',
|
35
35
|
'List the documentation types you wish to',
|
36
36
|
'generate. For example: rdoc,ri') do |value, options|
|
@@ -88,7 +88,7 @@ module Gem::InstallUpdateOptions
|
|
88
88
|
options[:ignore_dependencies] = value
|
89
89
|
end
|
90
90
|
|
91
|
-
add_option(:"Install/Update",
|
91
|
+
add_option(:"Install/Update", '--[no-]format-executable',
|
92
92
|
'Make installed executable names match Ruby.',
|
93
93
|
'If Ruby is ruby18, foo_exec will be',
|
94
94
|
'foo_exec18') do |value, options|
|
@@ -122,10 +122,10 @@ module Gem::InstallUpdateOptions
|
|
122
122
|
options[:minimal_deps] = true
|
123
123
|
end
|
124
124
|
|
125
|
-
add_option(:"Install/Update", "--minimal-deps",
|
125
|
+
add_option(:"Install/Update", "--[no-]minimal-deps",
|
126
126
|
"Don't upgrade any dependencies that already",
|
127
127
|
"meet version requirements") do |value, options|
|
128
|
-
options[:minimal_deps] =
|
128
|
+
options[:minimal_deps] = value
|
129
129
|
end
|
130
130
|
|
131
131
|
add_option(:"Install/Update", "--[no-]post-install-message",
|
@@ -154,7 +154,7 @@ module Gem::InstallUpdateOptions
|
|
154
154
|
'Omit the named groups (comma separated)',
|
155
155
|
'when installing from a gem dependencies',
|
156
156
|
'file') do |v,o|
|
157
|
-
options[:without_groups].concat v.map {
|
157
|
+
options[:without_groups].concat v.map {|without| without.intern }
|
158
158
|
end
|
159
159
|
|
160
160
|
add_option(:"Install/Update", '--default',
|
data/lib/rubygems/installer.rb
CHANGED
@@ -6,12 +6,12 @@
|
|
6
6
|
#++
|
7
7
|
|
8
8
|
require 'rubygems/command'
|
9
|
+
require 'rubygems/installer_uninstaller_utils'
|
9
10
|
require 'rubygems/exceptions'
|
10
11
|
require 'rubygems/deprecate'
|
11
12
|
require 'rubygems/package'
|
12
13
|
require 'rubygems/ext'
|
13
14
|
require 'rubygems/user_interaction'
|
14
|
-
require 'fileutils'
|
15
15
|
|
16
16
|
##
|
17
17
|
# The installer installs the files contained in the .gem into the Gem.home.
|
@@ -27,7 +27,6 @@ require 'fileutils'
|
|
27
27
|
# file. See Gem.pre_install and Gem.post_install for details.
|
28
28
|
|
29
29
|
class Gem::Installer
|
30
|
-
|
31
30
|
extend Gem::Deprecate
|
32
31
|
|
33
32
|
##
|
@@ -43,10 +42,7 @@ class Gem::Installer
|
|
43
42
|
|
44
43
|
include Gem::UserInteraction
|
45
44
|
|
46
|
-
|
47
|
-
# Filename of the gem being installed.
|
48
|
-
|
49
|
-
attr_reader :gem
|
45
|
+
include Gem::InstallerUninstallerUtils
|
50
46
|
|
51
47
|
##
|
52
48
|
# The directory a gem's executables will be installed into
|
@@ -65,12 +61,16 @@ class Gem::Installer
|
|
65
61
|
|
66
62
|
attr_reader :options
|
67
63
|
|
64
|
+
##
|
65
|
+
# The gem package instance.
|
66
|
+
|
67
|
+
attr_reader :package
|
68
|
+
|
68
69
|
@path_warning = false
|
69
70
|
|
70
71
|
@install_lock = Mutex.new
|
71
72
|
|
72
73
|
class << self
|
73
|
-
|
74
74
|
##
|
75
75
|
# True if we've warned about PATH not including Gem.bindir
|
76
76
|
|
@@ -95,7 +95,6 @@ class Gem::Installer
|
|
95
95
|
def exec_format
|
96
96
|
@exec_format ||= Gem.default_exec_format
|
97
97
|
end
|
98
|
-
|
99
98
|
end
|
100
99
|
|
101
100
|
##
|
@@ -125,7 +124,9 @@ class Gem::Installer
|
|
125
124
|
file = File.join destination_dir, file
|
126
125
|
next if File.exist? file
|
127
126
|
FileUtils.mkdir_p File.dirname(file)
|
128
|
-
File.open file, 'w' do |fp|
|
127
|
+
File.open file, 'w' do |fp|
|
128
|
+
fp.puts "# #{file}"
|
129
|
+
end
|
129
130
|
end
|
130
131
|
end
|
131
132
|
|
@@ -171,15 +172,7 @@ class Gem::Installer
|
|
171
172
|
require 'fileutils'
|
172
173
|
|
173
174
|
@options = options
|
174
|
-
|
175
|
-
security_policy = options[:security_policy]
|
176
|
-
@package = Gem::Package.new package, security_policy
|
177
|
-
if $VERBOSE
|
178
|
-
warn "constructing an Installer object with a string is deprecated. Please use Gem::Installer.at (called from: #{caller.first})"
|
179
|
-
end
|
180
|
-
else
|
181
|
-
@package = package
|
182
|
-
end
|
175
|
+
@package = package
|
183
176
|
|
184
177
|
process_options
|
185
178
|
|
@@ -187,11 +180,10 @@ class Gem::Installer
|
|
187
180
|
@package.prog_mode = options[:prog_mode]
|
188
181
|
@package.data_mode = options[:data_mode]
|
189
182
|
|
190
|
-
|
191
|
-
|
192
|
-
if options[:user_install] and not options[:unpack]
|
183
|
+
if options[:user_install]
|
193
184
|
@gem_home = Gem.user_dir
|
194
185
|
@bin_dir = Gem.bindir gem_home unless options[:bin_dir]
|
186
|
+
@plugins_dir = Gem.plugindir(gem_home)
|
195
187
|
check_that_user_bin_dir_is_in_path
|
196
188
|
end
|
197
189
|
end
|
@@ -320,8 +312,12 @@ class Gem::Installer
|
|
320
312
|
build_extensions
|
321
313
|
write_build_info_file
|
322
314
|
run_post_build_hooks
|
315
|
+
end
|
323
316
|
|
324
|
-
|
317
|
+
generate_bin
|
318
|
+
generate_plugins
|
319
|
+
|
320
|
+
unless @options[:install_as_default]
|
325
321
|
write_spec
|
326
322
|
write_cache_file
|
327
323
|
end
|
@@ -345,7 +341,7 @@ class Gem::Installer
|
|
345
341
|
def run_pre_install_hooks # :nodoc:
|
346
342
|
Gem.pre_install_hooks.each do |hook|
|
347
343
|
if hook.call(self) == false
|
348
|
-
location = " at #{$1}" if hook.inspect =~
|
344
|
+
location = " at #{$1}" if hook.inspect =~ /[ @](.*:\d+)/
|
349
345
|
|
350
346
|
message = "pre-install hook#{location} failed for #{spec.full_name}"
|
351
347
|
raise Gem::InstallError, message
|
@@ -358,7 +354,7 @@ class Gem::Installer
|
|
358
354
|
if hook.call(self) == false
|
359
355
|
FileUtils.rm_rf gem_dir
|
360
356
|
|
361
|
-
location = " at #{$1}" if hook.inspect =~
|
357
|
+
location = " at #{$1}" if hook.inspect =~ /[ @](.*:\d+)/
|
362
358
|
|
363
359
|
message = "post-build hook#{location} failed for #{spec.full_name}"
|
364
360
|
raise Gem::InstallError, message
|
@@ -382,7 +378,7 @@ class Gem::Installer
|
|
382
378
|
specs = []
|
383
379
|
|
384
380
|
Gem::Util.glob_files_in_dir("*.gemspec", File.join(gem_home, "specifications")).each do |path|
|
385
|
-
spec = Gem::Specification.load path.
|
381
|
+
spec = Gem::Specification.load path.tap(&Gem::UNTAINT)
|
386
382
|
specs << spec if spec
|
387
383
|
end
|
388
384
|
|
@@ -409,7 +405,7 @@ class Gem::Installer
|
|
409
405
|
|
410
406
|
def installation_satisfies_dependency?(dependency)
|
411
407
|
return true if @options[:development] and dependency.type == :development
|
412
|
-
return true if installed_specs.detect {
|
408
|
+
return true if installed_specs.detect {|s| dependency.matches_spec? s }
|
413
409
|
return false if @only_install_dir
|
414
410
|
not dependency.matching_specs.empty?
|
415
411
|
end
|
@@ -421,6 +417,7 @@ class Gem::Installer
|
|
421
417
|
@gem_dir = directory
|
422
418
|
extract_files
|
423
419
|
end
|
420
|
+
rubygems_deprecate :unpack
|
424
421
|
|
425
422
|
##
|
426
423
|
# The location of the spec file that is installed.
|
@@ -435,7 +432,7 @@ class Gem::Installer
|
|
435
432
|
#
|
436
433
|
|
437
434
|
def default_spec_file
|
438
|
-
File.join
|
435
|
+
File.join gem_home, "specifications", "default", "#{spec.full_name}.gemspec"
|
439
436
|
end
|
440
437
|
|
441
438
|
##
|
@@ -467,7 +464,7 @@ class Gem::Installer
|
|
467
464
|
|
468
465
|
def generate_windows_script(filename, bindir)
|
469
466
|
if Gem.win_platform?
|
470
|
-
script_name = filename + ".bat"
|
467
|
+
script_name = formatted_program_filename(filename) + ".bat"
|
471
468
|
script_path = File.join bindir, File.basename(script_name)
|
472
469
|
File.open script_path, 'w' do |file|
|
473
470
|
file.puts windows_stub_script(bindir, filename)
|
@@ -480,16 +477,10 @@ class Gem::Installer
|
|
480
477
|
def generate_bin # :nodoc:
|
481
478
|
return if spec.executables.nil? or spec.executables.empty?
|
482
479
|
|
483
|
-
|
484
|
-
Dir.mkdir @bin_dir, *[options[:dir_mode] && 0755].compact
|
485
|
-
rescue SystemCallError
|
486
|
-
raise unless File.directory? @bin_dir
|
487
|
-
end
|
488
|
-
|
489
|
-
raise Gem::FilePermissionError.new(@bin_dir) unless File.writable? @bin_dir
|
480
|
+
ensure_writable_dir @bin_dir
|
490
481
|
|
491
482
|
spec.executables.each do |filename|
|
492
|
-
filename.
|
483
|
+
filename.tap(&Gem::UNTAINT)
|
493
484
|
bin_path = File.join gem_dir, spec.bindir, filename
|
494
485
|
|
495
486
|
unless File.exist? bin_path
|
@@ -500,7 +491,11 @@ class Gem::Installer
|
|
500
491
|
|
501
492
|
mode = File.stat(bin_path).mode
|
502
493
|
dir_mode = options[:prog_mode] || (mode | 0111)
|
503
|
-
|
494
|
+
|
495
|
+
unless dir_mode == mode
|
496
|
+
require 'fileutils'
|
497
|
+
FileUtils.chmod dir_mode, bin_path
|
498
|
+
end
|
504
499
|
|
505
500
|
check_executable_overwrite filename
|
506
501
|
|
@@ -509,7 +504,19 @@ class Gem::Installer
|
|
509
504
|
else
|
510
505
|
generate_bin_symlink filename, @bin_dir
|
511
506
|
end
|
507
|
+
end
|
508
|
+
end
|
509
|
+
|
510
|
+
def generate_plugins # :nodoc:
|
511
|
+
latest = Gem::Installer.install_lock.synchronize { Gem::Specification.latest_spec_for(spec.name) }
|
512
|
+
return if latest && latest.version > spec.version
|
512
513
|
|
514
|
+
ensure_writable_dir @plugins_dir
|
515
|
+
|
516
|
+
if spec.plugins.empty?
|
517
|
+
remove_plugins_for(spec, @plugins_dir)
|
518
|
+
else
|
519
|
+
regenerate_plugins_for(spec, @plugins_dir)
|
513
520
|
end
|
514
521
|
end
|
515
522
|
|
@@ -523,6 +530,7 @@ class Gem::Installer
|
|
523
530
|
def generate_bin_script(filename, bindir)
|
524
531
|
bin_script_path = File.join bindir, formatted_program_filename(filename)
|
525
532
|
|
533
|
+
require 'fileutils'
|
526
534
|
FileUtils.rm_f bin_script_path # prior install may have been --no-wrappers
|
527
535
|
|
528
536
|
File.open bin_script_path, 'wb', 0755 do |file|
|
@@ -576,9 +584,9 @@ class Gem::Installer
|
|
576
584
|
def shebang(bin_file_name)
|
577
585
|
ruby_name = RbConfig::CONFIG['ruby_install_name'] if @env_shebang
|
578
586
|
path = File.join gem_dir, spec.bindir, bin_file_name
|
579
|
-
first_line = File.open(path, "rb") {|file| file.gets}
|
587
|
+
first_line = File.open(path, "rb") {|file| file.gets } || ""
|
580
588
|
|
581
|
-
if
|
589
|
+
if first_line.start_with?("#!")
|
582
590
|
# Preserve extra words on shebang line, like "-w". Thanks RPA.
|
583
591
|
shebang = first_line.sub(/\A\#!.*?ruby\S*((\s+\S+)+)/, "#!#{Gem.ruby}")
|
584
592
|
opts = $1
|
@@ -620,7 +628,7 @@ class Gem::Installer
|
|
620
628
|
|
621
629
|
def ensure_loadable_spec
|
622
630
|
ruby = spec.to_ruby_for_cache
|
623
|
-
ruby.
|
631
|
+
ruby.tap(&Gem::UNTAINT)
|
624
632
|
|
625
633
|
begin
|
626
634
|
eval ruby
|
@@ -630,27 +638,6 @@ class Gem::Installer
|
|
630
638
|
end
|
631
639
|
end
|
632
640
|
|
633
|
-
def ensure_required_ruby_version_met # :nodoc:
|
634
|
-
if rrv = spec.required_ruby_version
|
635
|
-
ruby_version = Gem.ruby_version
|
636
|
-
unless rrv.satisfied_by? ruby_version
|
637
|
-
raise Gem::RuntimeRequirementNotMetError,
|
638
|
-
"#{spec.name} requires Ruby version #{rrv}. The current ruby version is #{ruby_version}."
|
639
|
-
end
|
640
|
-
end
|
641
|
-
end
|
642
|
-
|
643
|
-
def ensure_required_rubygems_version_met # :nodoc:
|
644
|
-
if rrgv = spec.required_rubygems_version
|
645
|
-
unless rrgv.satisfied_by? Gem.rubygems_version
|
646
|
-
rg_version = Gem::VERSION
|
647
|
-
raise Gem::RuntimeRequirementNotMetError,
|
648
|
-
"#{spec.name} requires RubyGems version #{rrgv}. The current RubyGems version is #{rg_version}. " +
|
649
|
-
"Try 'gem update --system' to update RubyGems itself."
|
650
|
-
end
|
651
|
-
end
|
652
|
-
end
|
653
|
-
|
654
641
|
def ensure_dependencies_met # :nodoc:
|
655
642
|
deps = spec.runtime_dependencies
|
656
643
|
deps |= spec.development_dependencies if @development
|
@@ -666,13 +653,14 @@ class Gem::Installer
|
|
666
653
|
:env_shebang => false,
|
667
654
|
:force => false,
|
668
655
|
:only_install_dir => false,
|
669
|
-
:post_install_message => true
|
656
|
+
:post_install_message => true,
|
670
657
|
}.merge options
|
671
658
|
|
672
659
|
@env_shebang = options[:env_shebang]
|
673
660
|
@force = options[:force]
|
674
661
|
@install_dir = options[:install_dir]
|
675
662
|
@gem_home = options[:install_dir] || Gem.dir
|
663
|
+
@plugins_dir = Gem.plugindir(@gem_home)
|
676
664
|
@ignore_dependencies = options[:ignore_dependencies]
|
677
665
|
@format_executable = options[:format_executable]
|
678
666
|
@wrappers = options[:wrappers]
|
@@ -685,23 +673,25 @@ class Gem::Installer
|
|
685
673
|
@development = options[:development]
|
686
674
|
@build_root = options[:build_root]
|
687
675
|
|
688
|
-
@build_args
|
676
|
+
@build_args = options[:build_args] || Gem::Command.build_args
|
689
677
|
|
690
678
|
unless @build_root.nil?
|
691
|
-
|
692
|
-
@
|
693
|
-
@
|
694
|
-
|
695
|
-
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}"
|
696
683
|
end
|
697
684
|
end
|
698
685
|
|
699
686
|
def check_that_user_bin_dir_is_in_path # :nodoc:
|
687
|
+
return if self.class.path_warning
|
688
|
+
|
700
689
|
user_bin_dir = @bin_dir || Gem.bindir(gem_home)
|
701
|
-
user_bin_dir = user_bin_dir.
|
702
|
-
File::ALT_SEPARATOR
|
690
|
+
user_bin_dir = user_bin_dir.tr(File::ALT_SEPARATOR, File::SEPARATOR) if File::ALT_SEPARATOR
|
703
691
|
|
704
692
|
path = ENV['PATH']
|
693
|
+
path = path.tr(File::ALT_SEPARATOR, File::SEPARATOR) if File::ALT_SEPARATOR
|
694
|
+
|
705
695
|
if Gem.win_platform?
|
706
696
|
path = path.downcase
|
707
697
|
user_bin_dir = user_bin_dir.downcase
|
@@ -711,18 +701,15 @@ class Gem::Installer
|
|
711
701
|
|
712
702
|
unless path.include? user_bin_dir
|
713
703
|
unless !Gem.win_platform? && (path.include? user_bin_dir.sub(ENV['HOME'], '~'))
|
714
|
-
|
715
|
-
|
716
|
-
self.class.path_warning = true
|
717
|
-
end
|
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
|
718
706
|
end
|
719
707
|
end
|
720
708
|
end
|
721
709
|
|
722
|
-
def verify_gem_home
|
710
|
+
def verify_gem_home # :nodoc:
|
723
711
|
FileUtils.mkdir_p gem_home, :mode => options[:dir_mode] && 0755
|
724
|
-
raise Gem::FilePermissionError, gem_home unless
|
725
|
-
unpack or File.writable?(gem_home)
|
712
|
+
raise Gem::FilePermissionError, gem_home unless File.writable?(gem_home)
|
726
713
|
end
|
727
714
|
|
728
715
|
def verify_spec
|
@@ -742,7 +729,11 @@ class Gem::Installer
|
|
742
729
|
raise Gem::InstallError, "#{spec} has an invalid specification_version"
|
743
730
|
end
|
744
731
|
|
745
|
-
if spec.dependencies.any? {|dep| dep.type
|
732
|
+
if spec.dependencies.any? {|dep| dep.type != :runtime && dep.type != :development }
|
733
|
+
raise Gem::InstallError, "#{spec} has an invalid dependencies"
|
734
|
+
end
|
735
|
+
|
736
|
+
if spec.dependencies.any? {|dep| dep.name =~ /(?:\R|[<>])/ }
|
746
737
|
raise Gem::InstallError, "#{spec} has an invalid dependencies"
|
747
738
|
end
|
748
739
|
end
|
@@ -764,7 +755,7 @@ class Gem::Installer
|
|
764
755
|
|
765
756
|
require 'rubygems'
|
766
757
|
|
767
|
-
version = "#{Gem::Requirement.
|
758
|
+
version = "#{Gem::Requirement.default_prerelease}"
|
768
759
|
|
769
760
|
str = ARGV.first
|
770
761
|
if str
|
@@ -796,10 +787,10 @@ TEXT
|
|
796
787
|
ruby_exe = "ruby.exe" if ruby_exe.empty?
|
797
788
|
|
798
789
|
if File.exist?(File.join bindir, ruby_exe)
|
799
|
-
# stub & ruby.exe
|
790
|
+
# stub & ruby.exe within same folder. Portable
|
800
791
|
<<-TEXT
|
801
792
|
@ECHO OFF
|
802
|
-
@"%~
|
793
|
+
@"%~dp0#{ruby_exe}" "%~dpn0" %*
|
803
794
|
TEXT
|
804
795
|
elsif bindir.downcase.start_with? rb_topdir.downcase
|
805
796
|
# stub within ruby folder, but not standard bin. Portable
|
@@ -809,14 +800,14 @@ TEXT
|
|
809
800
|
rel = to.relative_path_from from
|
810
801
|
<<-TEXT
|
811
802
|
@ECHO OFF
|
812
|
-
@"%~dp0#{rel}
|
803
|
+
@"%~dp0#{rel}/#{ruby_exe}" "%~dpn0" %*
|
813
804
|
TEXT
|
814
805
|
else
|
815
806
|
# outside ruby folder, maybe -user-install or bundler. Portable, but ruby
|
816
807
|
# is dependent on PATH
|
817
808
|
<<-TEXT
|
818
809
|
@ECHO OFF
|
819
|
-
|
810
|
+
@#{ruby_exe} "%~dpn0" %*
|
820
811
|
TEXT
|
821
812
|
end
|
822
813
|
end
|
@@ -830,18 +821,6 @@ TEXT
|
|
830
821
|
builder.build_extensions
|
831
822
|
end
|
832
823
|
|
833
|
-
##
|
834
|
-
# Logs the build +output+ in +build_dir+, then raises Gem::Ext::BuildError.
|
835
|
-
#
|
836
|
-
# TODO: Delete this for RubyGems 4. It remains for API compatibility
|
837
|
-
|
838
|
-
def extension_build_error(build_dir, output, backtrace = nil) # :nodoc:
|
839
|
-
builder = Gem::Ext::Builder.new spec, @build_args
|
840
|
-
|
841
|
-
builder.build_error build_dir, output, backtrace
|
842
|
-
end
|
843
|
-
deprecate :extension_build_error, :none, 2018, 12
|
844
|
-
|
845
824
|
##
|
846
825
|
# Reads the file index and extracts each file into the gem directory.
|
847
826
|
#
|
@@ -881,6 +860,13 @@ TEXT
|
|
881
860
|
gem_dir.to_s
|
882
861
|
end
|
883
862
|
|
863
|
+
##
|
864
|
+
# Filename of the gem being installed.
|
865
|
+
|
866
|
+
def gem
|
867
|
+
@package.gem.path
|
868
|
+
end
|
869
|
+
|
884
870
|
##
|
885
871
|
# Performs various checks before installing the gem such as the install
|
886
872
|
# repository is writable and its directories exist, required Ruby and
|
@@ -891,7 +877,7 @@ TEXT
|
|
891
877
|
# The dependent check will be skipped if the install is ignoring dependencies.
|
892
878
|
|
893
879
|
def pre_install_checks
|
894
|
-
verify_gem_home
|
880
|
+
verify_gem_home
|
895
881
|
|
896
882
|
# The name and require_paths must be verified first, since it could contain
|
897
883
|
# ruby code that would be eval'ed in #ensure_loadable_spec
|
@@ -907,8 +893,6 @@ TEXT
|
|
907
893
|
|
908
894
|
return true if @force
|
909
895
|
|
910
|
-
ensure_required_ruby_version_met
|
911
|
-
ensure_required_rubygems_version_met
|
912
896
|
ensure_dependencies_met unless @ignore_dependencies
|
913
897
|
|
914
898
|
true
|
@@ -945,4 +929,13 @@ TEXT
|
|
945
929
|
@package.copy_to cache_file
|
946
930
|
end
|
947
931
|
|
932
|
+
def ensure_writable_dir(dir) # :nodoc:
|
933
|
+
begin
|
934
|
+
Dir.mkdir dir, *[options[:dir_mode] && 0755].compact
|
935
|
+
rescue SystemCallError
|
936
|
+
raise unless File.directory? dir
|
937
|
+
end
|
938
|
+
|
939
|
+
raise Gem::FilePermissionError.new(dir) unless File.writable? dir
|
940
|
+
end
|
948
941
|
end
|