rubygems-update 3.2.30 → 3.4.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +1666 -994
- data/CONTRIBUTING.md +71 -15
- data/Manifest.txt +93 -37
- data/POLICIES.md +65 -16
- data/README.md +28 -13
- data/UPGRADING.md +5 -81
- data/bin/gem +2 -10
- data/bin/update_rubygems +5 -5
- data/bundler/CHANGELOG.md +647 -1
- data/bundler/README.md +3 -6
- data/bundler/UPGRADING.md +11 -4
- data/bundler/bundler.gemspec +8 -10
- data/bundler/exe/bundle +7 -11
- data/bundler/exe/bundler +1 -1
- data/bundler/lib/bundler/.document +1 -0
- data/bundler/lib/bundler/build_metadata.rb +3 -3
- data/bundler/lib/bundler/cli/add.rb +1 -1
- data/bundler/lib/bundler/cli/binstubs.rb +5 -1
- data/bundler/lib/bundler/cli/check.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +4 -2
- data/bundler/lib/bundler/cli/config.rb +10 -1
- data/bundler/lib/bundler/cli/console.rb +2 -2
- data/bundler/lib/bundler/cli/doctor.rb +10 -3
- data/bundler/lib/bundler/cli/gem.rb +136 -42
- data/bundler/lib/bundler/cli/info.rb +17 -3
- data/bundler/lib/bundler/cli/init.rb +6 -2
- data/bundler/lib/bundler/cli/install.rb +15 -33
- data/bundler/lib/bundler/cli/lock.rb +8 -5
- data/bundler/lib/bundler/cli/open.rb +6 -4
- data/bundler/lib/bundler/cli/outdated.rb +13 -6
- data/bundler/lib/bundler/cli/platform.rb +2 -2
- data/bundler/lib/bundler/cli/show.rb +1 -1
- data/bundler/lib/bundler/cli/update.rb +8 -4
- data/bundler/lib/bundler/cli/viz.rb +1 -1
- data/bundler/lib/bundler/cli.rb +67 -21
- data/bundler/lib/bundler/compact_index_client/cache.rb +1 -10
- data/bundler/lib/bundler/compact_index_client/updater.rb +53 -44
- data/bundler/lib/bundler/compact_index_client.rb +0 -6
- data/bundler/lib/bundler/constants.rb +1 -1
- data/bundler/lib/bundler/current_ruby.rb +18 -6
- data/bundler/lib/bundler/definition.rb +259 -242
- data/bundler/lib/bundler/dependency.rb +24 -71
- data/bundler/lib/bundler/digest.rb +1 -1
- data/bundler/lib/bundler/dsl.rb +29 -46
- data/bundler/lib/bundler/endpoint_specification.rb +15 -13
- data/bundler/lib/bundler/env.rb +2 -2
- data/bundler/lib/bundler/environment_preserver.rb +7 -3
- data/bundler/lib/bundler/errors.rb +15 -15
- data/bundler/lib/bundler/feature_flag.rb +0 -1
- data/bundler/lib/bundler/fetcher/base.rb +6 -8
- data/bundler/lib/bundler/fetcher/compact_index.rb +18 -25
- data/bundler/lib/bundler/fetcher/dependency.rb +2 -6
- data/bundler/lib/bundler/fetcher/downloader.rb +2 -5
- data/bundler/lib/bundler/fetcher/index.rb +0 -26
- data/bundler/lib/bundler/fetcher.rb +22 -29
- data/bundler/lib/bundler/force_platform.rb +18 -0
- data/bundler/lib/bundler/friendly_errors.rb +21 -7
- data/bundler/lib/bundler/gem_helper.rb +4 -4
- data/bundler/lib/bundler/gem_helpers.rb +9 -2
- data/bundler/lib/bundler/gem_version_promoter.rb +53 -98
- data/bundler/lib/bundler/graph.rb +3 -3
- data/bundler/lib/bundler/index.rb +13 -51
- data/bundler/lib/bundler/injector.rb +18 -4
- data/bundler/lib/bundler/inline.rb +9 -21
- data/bundler/lib/bundler/installer/gem_installer.rb +13 -5
- data/bundler/lib/bundler/installer/parallel_installer.rb +3 -33
- data/bundler/lib/bundler/installer/standalone.rb +42 -11
- data/bundler/lib/bundler/installer.rb +20 -44
- data/bundler/lib/bundler/lazy_specification.rb +72 -55
- data/bundler/lib/bundler/lockfile_generator.rb +3 -3
- data/bundler/lib/bundler/lockfile_parser.rb +28 -26
- data/bundler/lib/bundler/man/bundle-add.1 +21 -5
- data/bundler/lib/bundler/man/bundle-add.1.ronn +16 -4
- data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
- data/bundler/lib/bundler/man/bundle-cache.1 +7 -1
- data/bundler/lib/bundler/man/bundle-cache.1.ronn +7 -0
- data/bundler/lib/bundler/man/bundle-check.1 +1 -1
- data/bundler/lib/bundler/man/bundle-clean.1 +2 -2
- data/bundler/lib/bundler/man/bundle-clean.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-config.1 +34 -15
- data/bundler/lib/bundler/man/bundle-config.1.ronn +31 -19
- data/bundler/lib/bundler/man/bundle-console.1 +53 -0
- data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
- data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
- data/bundler/lib/bundler/man/bundle-exec.1 +6 -6
- data/bundler/lib/bundler/man/bundle-exec.1.ronn +6 -6
- data/bundler/lib/bundler/man/bundle-gem.1 +37 -34
- data/bundler/lib/bundler/man/bundle-gem.1.ronn +21 -5
- data/bundler/lib/bundler/man/bundle-help.1 +13 -0
- data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
- data/bundler/lib/bundler/man/bundle-info.1 +1 -1
- data/bundler/lib/bundler/man/bundle-init.1 +5 -1
- data/bundler/lib/bundler/man/bundle-init.1.ronn +2 -0
- data/bundler/lib/bundler/man/bundle-inject.1 +5 -2
- data/bundler/lib/bundler/man/bundle-inject.1.ronn +3 -1
- data/bundler/lib/bundler/man/bundle-install.1 +6 -31
- data/bundler/lib/bundler/man/bundle-install.1.ronn +8 -31
- data/bundler/lib/bundler/man/bundle-list.1 +1 -1
- data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
- data/bundler/lib/bundler/man/bundle-open.1 +22 -2
- data/bundler/lib/bundler/man/bundle-open.1.ronn +9 -1
- data/bundler/lib/bundler/man/bundle-outdated.1 +3 -10
- data/bundler/lib/bundler/man/bundle-outdated.1.ronn +1 -10
- data/bundler/lib/bundler/man/bundle-platform.1 +16 -6
- data/bundler/lib/bundler/man/bundle-platform.1.ronn +14 -7
- data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
- data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
- data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
- data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
- data/bundler/lib/bundler/man/bundle-show.1 +1 -1
- data/bundler/lib/bundler/man/bundle-update.1 +2 -2
- data/bundler/lib/bundler/man/bundle-update.1.ronn +2 -1
- data/bundler/lib/bundler/man/bundle-version.1 +35 -0
- data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
- data/bundler/lib/bundler/man/bundle-viz.1 +4 -1
- data/bundler/lib/bundler/man/bundle-viz.1.ronn +2 -0
- data/bundler/lib/bundler/man/bundle.1 +15 -10
- data/bundler/lib/bundler/man/bundle.1.ronn +12 -7
- data/bundler/lib/bundler/man/gemfile.5 +117 -80
- data/bundler/lib/bundler/man/gemfile.5.ronn +105 -84
- data/bundler/lib/bundler/man/index.txt +4 -0
- data/bundler/lib/bundler/match_metadata.rb +13 -0
- data/bundler/lib/bundler/match_platform.rb +0 -1
- data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
- data/bundler/lib/bundler/mirror.rb +5 -7
- data/bundler/lib/bundler/plugin/api/source.rb +4 -9
- data/bundler/lib/bundler/plugin/index.rb +4 -4
- data/bundler/lib/bundler/plugin/installer/git.rb +0 -4
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +0 -8
- data/bundler/lib/bundler/plugin/installer.rb +6 -3
- data/bundler/lib/bundler/plugin.rb +3 -1
- data/bundler/lib/bundler/process_lock.rb +1 -1
- data/bundler/lib/bundler/remote_specification.rb +7 -5
- data/bundler/lib/bundler/resolver/base.rb +109 -0
- data/bundler/lib/bundler/resolver/candidate.rb +94 -0
- data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
- data/bundler/lib/bundler/resolver/package.rb +72 -0
- data/bundler/lib/bundler/resolver/root.rb +25 -0
- data/bundler/lib/bundler/resolver/spec_group.rb +43 -71
- data/bundler/lib/bundler/resolver.rb +332 -308
- data/bundler/lib/bundler/ruby_dsl.rb +1 -1
- data/bundler/lib/bundler/ruby_version.rb +5 -18
- data/bundler/lib/bundler/rubygems_ext.rb +144 -25
- data/bundler/lib/bundler/rubygems_gem_installer.rb +32 -20
- data/bundler/lib/bundler/rubygems_integration.rb +24 -95
- data/bundler/lib/bundler/runtime.rb +2 -7
- data/bundler/lib/bundler/self_manager.rb +168 -0
- data/bundler/lib/bundler/settings.rb +5 -10
- data/bundler/lib/bundler/setup.rb +4 -1
- data/bundler/lib/bundler/shared_helpers.rb +17 -25
- data/bundler/lib/bundler/source/git/git_proxy.rb +219 -71
- data/bundler/lib/bundler/source/git.rb +23 -26
- data/bundler/lib/bundler/source/metadata.rb +3 -4
- data/bundler/lib/bundler/source/path/installer.rb +1 -22
- data/bundler/lib/bundler/source/path.rb +7 -7
- data/bundler/lib/bundler/source/rubygems.rb +91 -130
- data/bundler/lib/bundler/source/rubygems_aggregate.rb +1 -1
- data/bundler/lib/bundler/source.rb +4 -5
- data/bundler/lib/bundler/source_list.rb +19 -31
- data/bundler/lib/bundler/source_map.rb +15 -2
- data/bundler/lib/bundler/spec_set.rb +63 -35
- data/bundler/lib/bundler/stub_specification.rb +5 -3
- data/bundler/lib/bundler/templates/Executable +3 -5
- data/bundler/lib/bundler/templates/Executable.bundler +6 -11
- data/bundler/lib/bundler/templates/Executable.standalone +4 -4
- data/bundler/lib/bundler/templates/Gemfile +0 -2
- data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +8 -2
- data/bundler/lib/bundler/templates/newgem/README.md.tt +7 -11
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +27 -3
- data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +13 -3
- data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +13 -4
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +22 -16
- data/bundler/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
- data/bundler/lib/bundler/templates/newgem/standard.yml.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/test/minitest/{newgem_test.rb.tt → test_newgem.rb.tt} +1 -1
- data/bundler/lib/bundler/ui/shell.rb +36 -13
- data/bundler/lib/bundler/ui/silent.rb +21 -5
- data/bundler/lib/bundler/uri_normalizer.rb +23 -0
- data/bundler/lib/bundler/vendor/.document +1 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1350 -408
- data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
- data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +243 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +6 -6
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +1 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +6 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +6 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +9 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +19 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +23 -5
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/bundler/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
- data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +452 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +76 -91
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +32 -13
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +40 -3
- data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +2 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +2 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -3
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +14 -21
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +11 -17
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +83 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +23 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +3 -3
- data/bundler/lib/bundler/vendored_persistent.rb +1 -33
- data/bundler/lib/bundler/{vendored_molinillo.rb → vendored_pub_grub.rb} +1 -1
- data/bundler/lib/bundler/{vendored_tmpdir.rb → vendored_tsort.rb} +1 -1
- data/bundler/lib/bundler/version.rb +5 -1
- data/bundler/lib/bundler/worker.rb +5 -7
- data/bundler/lib/bundler.rb +50 -77
- data/hide_lib_for_update/note.txt +0 -4
- data/lib/rubygems/available_set.rb +3 -3
- data/lib/rubygems/basic_specification.rb +12 -12
- data/lib/rubygems/bundler_version_finder.rb +14 -46
- data/lib/rubygems/command.rb +47 -39
- data/lib/rubygems/command_manager.rb +34 -13
- data/lib/rubygems/commands/build_command.rb +11 -8
- data/lib/rubygems/commands/cert_command.rb +39 -39
- data/lib/rubygems/commands/check_command.rb +20 -20
- data/lib/rubygems/commands/cleanup_command.rb +23 -23
- data/lib/rubygems/commands/contents_command.rb +13 -13
- data/lib/rubygems/commands/dependency_command.rb +35 -45
- data/lib/rubygems/commands/environment_command.rb +10 -7
- data/lib/rubygems/commands/exec_command.rb +248 -0
- data/lib/rubygems/commands/fetch_command.rb +32 -13
- data/lib/rubygems/commands/generate_index_command.rb +17 -17
- data/lib/rubygems/commands/help_command.rb +6 -6
- data/lib/rubygems/commands/info_command.rb +3 -3
- data/lib/rubygems/commands/install_command.rb +31 -24
- data/lib/rubygems/commands/list_command.rb +4 -4
- data/lib/rubygems/commands/lock_command.rb +4 -4
- data/lib/rubygems/commands/mirror_command.rb +3 -3
- data/lib/rubygems/commands/open_command.rb +9 -9
- data/lib/rubygems/commands/outdated_command.rb +5 -5
- data/lib/rubygems/commands/owner_command.rb +17 -12
- data/lib/rubygems/commands/pristine_command.rb +64 -49
- data/lib/rubygems/commands/push_command.rb +16 -16
- data/lib/rubygems/commands/query_command.rb +9 -9
- data/lib/rubygems/commands/rdoc_command.rb +26 -25
- data/lib/rubygems/commands/search_command.rb +4 -4
- data/lib/rubygems/commands/server_command.rb +16 -79
- data/lib/rubygems/commands/setup_command.rb +172 -173
- data/lib/rubygems/commands/signin_command.rb +9 -9
- data/lib/rubygems/commands/signout_command.rb +7 -7
- data/lib/rubygems/commands/sources_command.rb +22 -22
- data/lib/rubygems/commands/specification_command.rb +18 -18
- data/lib/rubygems/commands/stale_command.rb +2 -2
- data/lib/rubygems/commands/uninstall_command.rb +43 -40
- data/lib/rubygems/commands/unpack_command.rb +13 -13
- data/lib/rubygems/commands/update_command.rb +61 -72
- data/lib/rubygems/commands/which_command.rb +7 -7
- data/lib/rubygems/commands/yank_command.rb +11 -11
- data/lib/rubygems/compatibility.rb +4 -2
- data/lib/rubygems/config_file.rb +58 -25
- data/lib/rubygems/core_ext/kernel_gem.rb +1 -6
- data/lib/rubygems/core_ext/kernel_require.rb +108 -115
- data/lib/rubygems/core_ext/kernel_warn.rb +33 -37
- data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
- data/lib/rubygems/defaults.rb +32 -36
- data/lib/rubygems/dependency.rb +20 -17
- data/lib/rubygems/dependency_installer.rb +37 -37
- data/lib/rubygems/dependency_list.rb +7 -7
- data/lib/rubygems/deprecate.rb +55 -8
- data/lib/rubygems/doctor.rb +21 -21
- data/lib/rubygems/errors.rb +3 -6
- data/lib/rubygems/exceptions.rb +35 -7
- data/lib/rubygems/ext/build_error.rb +1 -1
- data/lib/rubygems/ext/builder.rb +51 -22
- data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +27 -0
- data/lib/rubygems/ext/cargo_builder.rb +360 -0
- data/lib/rubygems/ext/cmake_builder.rb +2 -2
- data/lib/rubygems/ext/configure_builder.rb +1 -1
- data/lib/rubygems/ext/ext_conf_builder.rb +35 -59
- data/lib/rubygems/ext/rake_builder.rb +3 -3
- data/lib/rubygems/ext.rb +7 -6
- data/lib/rubygems/gem_runner.rb +12 -16
- data/lib/rubygems/gemcutter_utilities.rb +60 -21
- data/lib/rubygems/indexer.rb +30 -28
- data/lib/rubygems/install_default_message.rb +2 -2
- data/lib/rubygems/install_message.rb +2 -2
- data/lib/rubygems/install_update_options.rb +70 -61
- data/lib/rubygems/installer.rb +135 -87
- data/lib/rubygems/installer_uninstaller_utils.rb +2 -2
- data/lib/rubygems/local_remote_options.rb +22 -24
- data/lib/rubygems/mock_gem_ui.rb +2 -2
- data/lib/rubygems/name_tuple.rb +6 -7
- data/lib/rubygems/optparse/.document +1 -0
- data/lib/rubygems/optparse/COPYING +56 -0
- data/lib/rubygems/optparse/lib/optionparser.rb +2 -0
- data/lib/rubygems/optparse/lib/optparse/ac.rb +54 -0
- data/lib/rubygems/optparse/lib/optparse/date.rb +18 -0
- data/lib/rubygems/optparse/lib/optparse/kwargs.rb +22 -0
- data/lib/rubygems/optparse/lib/optparse/shellwords.rb +7 -0
- data/lib/rubygems/optparse/lib/optparse/time.rb +11 -0
- data/lib/rubygems/optparse/lib/optparse/uri.rb +7 -0
- data/lib/rubygems/optparse/lib/optparse/version.rb +71 -0
- data/lib/rubygems/optparse/lib/optparse.rb +2308 -0
- data/lib/rubygems/optparse.rb +3 -0
- data/lib/rubygems/package/file_source.rb +2 -2
- data/lib/rubygems/package/old.rb +9 -9
- data/lib/rubygems/package/tar_header.rb +62 -62
- data/lib/rubygems/package/tar_reader/entry.rb +90 -9
- data/lib/rubygems/package/tar_reader.rb +1 -29
- data/lib/rubygems/package/tar_writer.rb +7 -7
- data/lib/rubygems/package.rb +77 -60
- data/lib/rubygems/package_task.rb +4 -4
- data/lib/rubygems/path_support.rb +1 -6
- data/lib/rubygems/platform.rb +94 -61
- data/lib/rubygems/psych_tree.rb +1 -1
- data/lib/rubygems/query_utils.rb +49 -51
- data/lib/rubygems/rdoc.rb +2 -2
- data/lib/rubygems/remote_fetcher.rb +27 -27
- data/lib/rubygems/request/connection_pools.rb +4 -4
- data/lib/rubygems/request/http_pool.rb +1 -1
- data/lib/rubygems/request.rb +24 -24
- data/lib/rubygems/request_set/gem_dependency_api.rb +122 -123
- data/lib/rubygems/request_set/lockfile/parser.rb +26 -26
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +4 -4
- data/lib/rubygems/request_set/lockfile.rb +9 -9
- data/lib/rubygems/request_set.rb +18 -18
- data/lib/rubygems/requirement.rb +15 -15
- data/lib/rubygems/resolver/activation_request.rb +3 -3
- data/lib/rubygems/resolver/api_set.rb +4 -4
- data/lib/rubygems/resolver/api_specification.rb +6 -6
- data/lib/rubygems/resolver/best_set.rb +5 -5
- data/lib/rubygems/resolver/conflict.rb +10 -10
- data/lib/rubygems/resolver/dependency_request.rb +2 -2
- data/lib/rubygems/resolver/git_set.rb +2 -2
- data/lib/rubygems/resolver/git_specification.rb +6 -6
- data/lib/rubygems/resolver/index_set.rb +3 -3
- data/lib/rubygems/resolver/index_specification.rb +6 -5
- data/lib/rubygems/resolver/installed_specification.rb +4 -4
- data/lib/rubygems/resolver/installer_set.rb +21 -26
- data/lib/rubygems/resolver/local_specification.rb +2 -2
- data/lib/rubygems/resolver/lock_set.rb +4 -4
- data/lib/rubygems/resolver/lock_specification.rb +4 -4
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +3 -3
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +32 -26
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/lib/rubygems/resolver/molinillo.rb +1 -1
- data/lib/rubygems/resolver/specification.rb +1 -1
- data/lib/rubygems/resolver/stats.rb +1 -1
- data/lib/rubygems/resolver/vendor_set.rb +1 -1
- data/lib/rubygems/resolver/vendor_specification.rb +3 -3
- data/lib/rubygems/resolver.rb +40 -40
- data/lib/rubygems/s3_uri_signer.rb +6 -6
- data/lib/rubygems/safe_yaml.rb +10 -10
- data/lib/rubygems/security/policies.rb +47 -47
- data/lib/rubygems/security/policy.rb +19 -21
- data/lib/rubygems/security/signer.rb +5 -5
- data/lib/rubygems/security/trust_dir.rb +4 -4
- data/lib/rubygems/security.rb +37 -43
- data/lib/rubygems/security_option.rb +7 -7
- data/lib/rubygems/source/git.rb +25 -24
- data/lib/rubygems/source/installed.rb +1 -1
- data/lib/rubygems/source/local.rb +2 -2
- data/lib/rubygems/source/specific_file.rb +1 -1
- data/lib/rubygems/source.rb +27 -32
- data/lib/rubygems/source_list.rb +5 -9
- data/lib/rubygems/spec_fetcher.rb +37 -37
- data/lib/rubygems/specification.rb +265 -211
- data/lib/rubygems/specification_policy.rb +49 -30
- data/lib/rubygems/stub_specification.rb +24 -27
- data/lib/rubygems/text.rb +22 -21
- data/lib/rubygems/tsort/.document +1 -0
- data/lib/rubygems/tsort/LICENSE.txt +22 -0
- data/lib/rubygems/tsort/lib/tsort.rb +452 -0
- data/lib/rubygems/tsort.rb +3 -0
- data/lib/rubygems/uninstaller.rb +29 -26
- data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
- data/lib/rubygems/update_suggestion.rb +69 -0
- data/lib/rubygems/uri.rb +45 -30
- data/lib/rubygems/uri_formatter.rb +1 -1
- data/lib/rubygems/user_interaction.rb +42 -28
- data/lib/rubygems/util/licenses.rb +4 -2
- data/lib/rubygems/util.rb +12 -16
- data/lib/rubygems/validator.rb +6 -6
- data/lib/rubygems/version.rb +28 -17
- data/lib/rubygems/version_option.rb +5 -5
- data/lib/rubygems.rb +129 -117
- data/rubygems-update.gemspec +3 -3
- data/setup.rb +11 -16
- data/test/rubygems/alternate_cert.pem +14 -14
- data/test/rubygems/alternate_cert_32.pem +15 -15
- data/test/rubygems/alternate_key.pem +25 -25
- data/test/rubygems/bundler_test_gem.rb +419 -0
- data/test/rubygems/child_cert.pem +15 -16
- data/test/rubygems/child_cert_32.pem +15 -16
- data/test/rubygems/child_key.pem +25 -25
- data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
- data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
- data/test/rubygems/encrypted_private_key.pem +26 -26
- data/test/rubygems/expired_cert.pem +15 -15
- data/test/rubygems/future_cert.pem +15 -15
- data/test/rubygems/future_cert_32.pem +15 -15
- data/test/rubygems/grandchild_cert.pem +15 -16
- data/test/rubygems/grandchild_cert_32.pem +15 -16
- data/test/rubygems/grandchild_key.pem +25 -25
- data/test/rubygems/helper.rb +237 -207
- data/test/rubygems/installer_test_case.rb +13 -13
- data/test/rubygems/invalid_issuer_cert.pem +16 -16
- data/test/rubygems/invalid_issuer_cert_32.pem +16 -16
- data/test/rubygems/invalid_key.pem +25 -25
- data/test/rubygems/invalid_signer_cert.pem +15 -15
- data/test/rubygems/invalid_signer_cert_32.pem +15 -15
- data/test/rubygems/invalidchild_cert.pem +15 -16
- data/test/rubygems/invalidchild_cert_32.pem +15 -16
- data/test/rubygems/invalidchild_key.pem +25 -25
- data/test/rubygems/package/tar_test_case.rb +52 -17
- data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
- data/test/rubygems/plugin/exception/rubygems_plugin.rb +1 -1
- data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +1 -1
- data/test/rubygems/private_key.pem +25 -25
- data/test/rubygems/public_cert.pem +16 -16
- data/test/rubygems/public_cert_32.pem +15 -15
- data/test/rubygems/public_key.pem +7 -7
- data/test/rubygems/rubygems_plugin.rb +2 -2
- data/test/rubygems/simple_gem.rb +1 -1
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +4 -4
- data/test/rubygems/test_bundled_ca.rb +11 -11
- data/test/rubygems/test_config.rb +5 -5
- data/test/rubygems/test_deprecate.rb +3 -3
- data/test/rubygems/test_exit.rb +17 -0
- data/test/rubygems/test_gem.rb +367 -757
- data/test/rubygems/test_gem_available_set.rb +21 -21
- data/test/rubygems/test_gem_bundler_version_finder.rb +27 -47
- data/test/rubygems/test_gem_command.rb +45 -45
- data/test/rubygems/test_gem_command_manager.rb +124 -27
- data/test/rubygems/test_gem_commands_build_command.rb +73 -63
- data/test/rubygems/test_gem_commands_cert_command.rb +105 -107
- data/test/rubygems/test_gem_commands_check_command.rb +4 -4
- data/test/rubygems/test_gem_commands_cleanup_command.rb +40 -40
- data/test/rubygems/test_gem_commands_contents_command.rb +28 -28
- data/test/rubygems/test_gem_commands_dependency_command.rb +36 -36
- data/test/rubygems/test_gem_commands_environment_command.rb +38 -14
- data/test/rubygems/test_gem_commands_exec_command.rb +851 -0
- data/test/rubygems/test_gem_commands_fetch_command.rb +159 -26
- data/test/rubygems/test_gem_commands_generate_index_command.rb +7 -7
- data/test/rubygems/test_gem_commands_help_command.rb +13 -13
- data/test/rubygems/test_gem_commands_info_command.rb +28 -2
- data/test/rubygems/test_gem_commands_install_command.rb +200 -132
- data/test/rubygems/test_gem_commands_list_command.rb +4 -4
- data/test/rubygems/test_gem_commands_lock_command.rb +10 -10
- data/test/rubygems/test_gem_commands_mirror.rb +2 -2
- data/test/rubygems/test_gem_commands_open_command.rb +5 -5
- data/test/rubygems/test_gem_commands_outdated_command.rb +9 -9
- data/test/rubygems/test_gem_commands_owner_command.rb +126 -45
- data/test/rubygems/test_gem_commands_pristine_command.rb +141 -92
- data/test/rubygems/test_gem_commands_push_command.rb +85 -59
- data/test/rubygems/test_gem_commands_query_command.rb +73 -73
- data/test/rubygems/test_gem_commands_search_command.rb +2 -2
- data/test/rubygems/test_gem_commands_server_command.rb +6 -48
- data/test/rubygems/test_gem_commands_setup_command.rb +169 -92
- data/test/rubygems/test_gem_commands_signin_command.rb +154 -26
- data/test/rubygems/test_gem_commands_signout_command.rb +3 -3
- data/test/rubygems/test_gem_commands_sources_command.rb +74 -25
- data/test/rubygems/test_gem_commands_specification_command.rb +32 -32
- data/test/rubygems/test_gem_commands_stale_command.rb +4 -4
- data/test/rubygems/test_gem_commands_uninstall_command.rb +99 -82
- data/test/rubygems/test_gem_commands_unpack_command.rb +31 -31
- data/test/rubygems/test_gem_commands_update_command.rb +202 -91
- data/test/rubygems/test_gem_commands_which_command.rb +6 -6
- data/test/rubygems/test_gem_commands_yank_command.rb +43 -43
- data/test/rubygems/test_gem_config_file.rb +93 -81
- data/test/rubygems/test_gem_dependency.rb +78 -80
- data/test/rubygems/test_gem_dependency_installer.rb +165 -165
- data/test/rubygems/test_gem_dependency_list.rb +47 -47
- data/test/rubygems/test_gem_dependency_resolution_error.rb +4 -4
- data/test/rubygems/test_gem_doctor.rb +26 -26
- data/test/rubygems/test_gem_ext_builder.rb +60 -62
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +1 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +8 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +233 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +10 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +27 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +1 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +1 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +247 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +10 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +8 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +51 -0
- data/test/rubygems/test_gem_ext_cargo_builder.rb +166 -0
- data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +33 -0
- data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +60 -0
- data/test/rubygems/test_gem_ext_cmake_builder.rb +17 -15
- data/test/rubygems/test_gem_ext_configure_builder.rb +13 -13
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +53 -50
- data/test/rubygems/test_gem_ext_rake_builder.rb +15 -15
- data/test/rubygems/test_gem_gem_runner.rb +13 -8
- data/test/rubygems/test_gem_gemcutter_utilities.rb +71 -65
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +4 -4
- data/test/rubygems/test_gem_indexer.rb +90 -67
- data/test/rubygems/test_gem_install_update_options.rb +18 -18
- data/test/rubygems/test_gem_installer.rb +511 -327
- data/test/rubygems/test_gem_local_remote_options.rb +10 -10
- data/test/rubygems/test_gem_name_tuple.rb +4 -4
- data/test/rubygems/test_gem_package.rb +246 -236
- data/test/rubygems/test_gem_package_old.rb +13 -13
- data/test/rubygems/test_gem_package_tar_header.rb +47 -47
- data/test/rubygems/test_gem_package_tar_reader.rb +55 -8
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +161 -16
- data/test/rubygems/test_gem_package_tar_writer.rb +76 -76
- data/test/rubygems/test_gem_package_task.rb +18 -18
- data/test/rubygems/test_gem_path_support.rb +15 -19
- data/test/rubygems/test_gem_platform.rb +335 -214
- data/test/rubygems/test_gem_rdoc.rb +14 -14
- data/test/rubygems/test_gem_remote_fetcher.rb +169 -154
- data/test/rubygems/test_gem_request.rb +65 -59
- data/test/rubygems/test_gem_request_connection_pools.rb +29 -29
- data/test/rubygems/test_gem_request_set.rb +100 -100
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +209 -211
- data/test/rubygems/test_gem_request_set_lockfile.rb +86 -86
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +58 -58
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +62 -62
- data/test/rubygems/test_gem_requirement.rb +47 -42
- data/test/rubygems/test_gem_resolver.rb +173 -106
- data/test/rubygems/test_gem_resolver_activation_request.rb +6 -6
- data/test/rubygems/test_gem_resolver_api_set.rb +33 -33
- data/test/rubygems/test_gem_resolver_api_specification.rb +47 -47
- data/test/rubygems/test_gem_resolver_best_set.rb +22 -22
- data/test/rubygems/test_gem_resolver_composed_set.rb +1 -1
- data/test/rubygems/test_gem_resolver_conflict.rb +12 -12
- data/test/rubygems/test_gem_resolver_dependency_request.rb +15 -15
- data/test/rubygems/test_gem_resolver_git_set.rb +21 -21
- data/test/rubygems/test_gem_resolver_git_specification.rb +21 -21
- data/test/rubygems/test_gem_resolver_index_set.rb +12 -12
- data/test/rubygems/test_gem_resolver_index_specification.rb +16 -16
- data/test/rubygems/test_gem_resolver_installed_specification.rb +5 -5
- data/test/rubygems/test_gem_resolver_installer_set.rb +79 -35
- data/test/rubygems/test_gem_resolver_local_specification.rb +7 -7
- data/test/rubygems/test_gem_resolver_lock_set.rb +12 -12
- data/test/rubygems/test_gem_resolver_lock_specification.rb +17 -17
- data/test/rubygems/test_gem_resolver_requirement_list.rb +1 -1
- data/test/rubygems/test_gem_resolver_specification.rb +8 -8
- data/test/rubygems/test_gem_resolver_vendor_set.rb +6 -6
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +10 -10
- data/test/rubygems/test_gem_security.rb +69 -69
- data/test/rubygems/test_gem_security_policy.rb +72 -72
- data/test/rubygems/test_gem_security_signer.rb +34 -34
- data/test/rubygems/test_gem_security_trust_dir.rb +6 -6
- data/test/rubygems/test_gem_silent_ui.rb +38 -32
- data/test/rubygems/test_gem_source.rb +44 -44
- data/test/rubygems/test_gem_source_fetch_problem.rb +9 -9
- data/test/rubygems/test_gem_source_git.rb +69 -62
- data/test/rubygems/test_gem_source_installed.rb +16 -16
- data/test/rubygems/test_gem_source_list.rb +5 -5
- data/test/rubygems/test_gem_source_local.rb +14 -14
- data/test/rubygems/test_gem_source_lock.rb +31 -31
- data/test/rubygems/test_gem_source_specific_file.rb +17 -17
- data/test/rubygems/test_gem_source_subpath_problem.rb +7 -7
- data/test/rubygems/test_gem_source_vendor.rb +13 -13
- data/test/rubygems/test_gem_spec_fetcher.rb +72 -72
- data/test/rubygems/test_gem_specification.rb +560 -493
- data/test/rubygems/test_gem_stream_ui.rb +20 -20
- data/test/rubygems/test_gem_stub_specification.rb +32 -48
- data/test/rubygems/test_gem_text.rb +7 -1
- data/test/rubygems/test_gem_uninstaller.rb +113 -113
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +3 -3
- data/test/rubygems/test_gem_update_suggestion.rb +208 -0
- data/test/rubygems/test_gem_uri.rb +4 -4
- data/test/rubygems/test_gem_uri_formatter.rb +14 -14
- data/test/rubygems/test_gem_util.rb +23 -23
- data/test/rubygems/test_gem_validator.rb +8 -8
- data/test/rubygems/test_gem_version.rb +27 -16
- data/test/rubygems/test_gem_version_option.rb +15 -15
- data/test/rubygems/test_kernel.rb +42 -60
- data/test/rubygems/test_project_sanity.rb +2 -2
- data/test/rubygems/test_remote_fetch_error.rb +6 -6
- data/test/rubygems/test_require.rb +132 -174
- data/test/rubygems/test_rubygems.rb +42 -12
- data/test/rubygems/utilities.rb +59 -37
- data/test/rubygems/wrong_key_cert.pem +15 -15
- data/test/rubygems/wrong_key_cert_32.pem +15 -15
- data/test/test_changelog_generator.rb +1 -0
- metadata +97 -41
- data/bundler/lib/bundler/dep_proxy.rb +0 -55
- data/bundler/lib/bundler/gemdeps.rb +0 -29
- data/bundler/lib/bundler/psyched_yaml.rb +0 -22
- data/bundler/lib/bundler/templates/gems.rb +0 -8
- data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -6
- data/bundler/lib/bundler/vendor/molinillo/LICENSE +0 -9
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -143
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
- data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
- data/bundler/lib/bundler/version_ranges.rb +0 -122
- data/lib/rubygems/psych_additions.rb +0 -10
- data/lib/rubygems/server.rb +0 -882
- data/test/rubygems/bogussources.rb +0 -9
- data/test/rubygems/data/null-type.gemspec.rz +0 -0
- data/test/rubygems/test_gem_server.rb +0 -608
- /data/bundler/lib/bundler/templates/newgem/ext/newgem/{extconf.rb.tt → extconf-c.rb.tt} +0 -0
data/bundler/lib/bundler.rb
CHANGED
|
@@ -19,7 +19,7 @@ require_relative "bundler/build_metadata"
|
|
|
19
19
|
#
|
|
20
20
|
# Since Ruby 2.6, Bundler is a part of Ruby's standard library.
|
|
21
21
|
#
|
|
22
|
-
#
|
|
22
|
+
# Bundler is used by creating _gemfiles_ listing all the project dependencies
|
|
23
23
|
# and (optionally) their versions and then using
|
|
24
24
|
#
|
|
25
25
|
# require 'bundler/setup'
|
|
@@ -39,9 +39,18 @@ module Bundler
|
|
|
39
39
|
environment_preserver.replace_with_backup
|
|
40
40
|
SUDO_MUTEX = Thread::Mutex.new
|
|
41
41
|
|
|
42
|
+
SAFE_MARSHAL_CLASSES = [Symbol, TrueClass, String, Array, Hash, Gem::Version, Gem::Specification].freeze
|
|
43
|
+
SAFE_MARSHAL_ERROR = "Unexpected class %s present in marshaled data. Only %s are allowed."
|
|
44
|
+
SAFE_MARSHAL_PROC = proc do |object|
|
|
45
|
+
object.tap do
|
|
46
|
+
unless SAFE_MARSHAL_CLASSES.include?(object.class)
|
|
47
|
+
raise TypeError, format(SAFE_MARSHAL_ERROR, object.class, SAFE_MARSHAL_CLASSES.join(", "))
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
42
52
|
autoload :Definition, File.expand_path("bundler/definition", __dir__)
|
|
43
53
|
autoload :Dependency, File.expand_path("bundler/dependency", __dir__)
|
|
44
|
-
autoload :DepProxy, File.expand_path("bundler/dep_proxy", __dir__)
|
|
45
54
|
autoload :Deprecate, File.expand_path("bundler/deprecate", __dir__)
|
|
46
55
|
autoload :Digest, File.expand_path("bundler/digest", __dir__)
|
|
47
56
|
autoload :Dsl, File.expand_path("bundler/dsl", __dir__)
|
|
@@ -58,7 +67,7 @@ module Bundler
|
|
|
58
67
|
autoload :Installer, File.expand_path("bundler/installer", __dir__)
|
|
59
68
|
autoload :LazySpecification, File.expand_path("bundler/lazy_specification", __dir__)
|
|
60
69
|
autoload :LockfileParser, File.expand_path("bundler/lockfile_parser", __dir__)
|
|
61
|
-
autoload :
|
|
70
|
+
autoload :MatchRemoteMetadata, File.expand_path("bundler/match_remote_metadata", __dir__)
|
|
62
71
|
autoload :ProcessLock, File.expand_path("bundler/process_lock", __dir__)
|
|
63
72
|
autoload :RemoteSpecification, File.expand_path("bundler/remote_specification", __dir__)
|
|
64
73
|
autoload :Resolver, File.expand_path("bundler/resolver", __dir__)
|
|
@@ -66,6 +75,7 @@ module Bundler
|
|
|
66
75
|
autoload :RubyDsl, File.expand_path("bundler/ruby_dsl", __dir__)
|
|
67
76
|
autoload :RubyVersion, File.expand_path("bundler/ruby_version", __dir__)
|
|
68
77
|
autoload :Runtime, File.expand_path("bundler/runtime", __dir__)
|
|
78
|
+
autoload :SelfManager, File.expand_path("bundler/self_manager", __dir__)
|
|
69
79
|
autoload :Settings, File.expand_path("bundler/settings", __dir__)
|
|
70
80
|
autoload :SharedHelpers, File.expand_path("bundler/shared_helpers", __dir__)
|
|
71
81
|
autoload :Source, File.expand_path("bundler/source", __dir__)
|
|
@@ -75,7 +85,7 @@ module Bundler
|
|
|
75
85
|
autoload :StubSpecification, File.expand_path("bundler/stub_specification", __dir__)
|
|
76
86
|
autoload :UI, File.expand_path("bundler/ui", __dir__)
|
|
77
87
|
autoload :URICredentialsFilter, File.expand_path("bundler/uri_credentials_filter", __dir__)
|
|
78
|
-
autoload :
|
|
88
|
+
autoload :URINormalizer, File.expand_path("bundler/uri_normalizer", __dir__)
|
|
79
89
|
|
|
80
90
|
class << self
|
|
81
91
|
def configure
|
|
@@ -96,6 +106,17 @@ module Bundler
|
|
|
96
106
|
@bundle_path ||= Pathname.new(configured_bundle_path.path).expand_path(root)
|
|
97
107
|
end
|
|
98
108
|
|
|
109
|
+
def create_bundle_path
|
|
110
|
+
SharedHelpers.filesystem_access(bundle_path.to_s) do |p|
|
|
111
|
+
mkdir_p(p)
|
|
112
|
+
end unless bundle_path.exist?
|
|
113
|
+
|
|
114
|
+
@bundle_path = bundle_path.realpath
|
|
115
|
+
rescue Errno::EEXIST
|
|
116
|
+
raise PathError, "Could not install to path `#{bundle_path}` " \
|
|
117
|
+
"because a file already exists at that path. Either remove or rename the file so the directory can be created."
|
|
118
|
+
end
|
|
119
|
+
|
|
99
120
|
def configured_bundle_path
|
|
100
121
|
@configured_bundle_path ||= settings.path.tap(&:validate!)
|
|
101
122
|
end
|
|
@@ -319,9 +340,9 @@ module Bundler
|
|
|
319
340
|
FileUtils.remove_entry_secure(path) if path && File.exist?(path)
|
|
320
341
|
rescue ArgumentError
|
|
321
342
|
message = <<EOF
|
|
322
|
-
It is a security vulnerability to allow your home directory to be world-writable, and bundler
|
|
343
|
+
It is a security vulnerability to allow your home directory to be world-writable, and bundler cannot continue.
|
|
323
344
|
You should probably consider fixing this issue by running `chmod o-w ~` on *nix.
|
|
324
|
-
Please refer to https://ruby-doc.org/stdlib-
|
|
345
|
+
Please refer to https://ruby-doc.org/stdlib-3.1.2/libdoc/fileutils/rdoc/FileUtils.html#method-c-remove_entry_secure for details.
|
|
325
346
|
EOF
|
|
326
347
|
File.world_writable?(path) ? Bundler.ui.warn(message) : raise
|
|
327
348
|
raise PathError, "Please fix the world-writable issue with your #{path} directory"
|
|
@@ -369,7 +390,7 @@ EOF
|
|
|
369
390
|
|
|
370
391
|
if env.key?("RUBYLIB")
|
|
371
392
|
rubylib = env["RUBYLIB"].split(File::PATH_SEPARATOR)
|
|
372
|
-
rubylib.delete(
|
|
393
|
+
rubylib.delete(__dir__)
|
|
373
394
|
env["RUBYLIB"] = rubylib.join(File::PATH_SEPARATOR)
|
|
374
395
|
end
|
|
375
396
|
|
|
@@ -443,7 +464,7 @@ EOF
|
|
|
443
464
|
end
|
|
444
465
|
|
|
445
466
|
def local_platform
|
|
446
|
-
return Gem::Platform::RUBY if settings[:force_ruby_platform]
|
|
467
|
+
return Gem::Platform::RUBY if settings[:force_ruby_platform]
|
|
447
468
|
Gem::Platform.local
|
|
448
469
|
end
|
|
449
470
|
|
|
@@ -476,41 +497,9 @@ EOF
|
|
|
476
497
|
configured_bundle_path.use_system_gems?
|
|
477
498
|
end
|
|
478
499
|
|
|
479
|
-
def requires_sudo?
|
|
480
|
-
return @requires_sudo if defined?(@requires_sudo_ran)
|
|
481
|
-
|
|
482
|
-
sudo_present = which "sudo" if settings.allow_sudo?
|
|
483
|
-
|
|
484
|
-
if sudo_present
|
|
485
|
-
# the bundle path and subdirectories need to be writable for RubyGems
|
|
486
|
-
# to be able to unpack and install gems without exploding
|
|
487
|
-
path = bundle_path
|
|
488
|
-
path = path.parent until path.exist?
|
|
489
|
-
|
|
490
|
-
# bins are written to a different location on OS X
|
|
491
|
-
bin_dir = Pathname.new(Bundler.system_bindir)
|
|
492
|
-
bin_dir = bin_dir.parent until bin_dir.exist?
|
|
493
|
-
|
|
494
|
-
# if any directory is not writable, we need sudo
|
|
495
|
-
files = [path, bin_dir] | Dir[bundle_path.join("build_info/*").to_s] | Dir[bundle_path.join("*").to_s]
|
|
496
|
-
unwritable_files = files.reject {|f| File.writable?(f) }
|
|
497
|
-
sudo_needed = !unwritable_files.empty?
|
|
498
|
-
if sudo_needed
|
|
499
|
-
Bundler.ui.warn "Following files may not be writable, so sudo is needed:\n #{unwritable_files.map(&:to_s).sort.join("\n ")}"
|
|
500
|
-
end
|
|
501
|
-
end
|
|
502
|
-
|
|
503
|
-
@requires_sudo_ran = true
|
|
504
|
-
@requires_sudo = settings.allow_sudo? && sudo_present && sudo_needed
|
|
505
|
-
end
|
|
506
|
-
|
|
507
500
|
def mkdir_p(path, options = {})
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
else
|
|
511
|
-
SharedHelpers.filesystem_access(path, :write) do |p|
|
|
512
|
-
FileUtils.mkdir_p(p)
|
|
513
|
-
end
|
|
501
|
+
SharedHelpers.filesystem_access(path, :write) do |p|
|
|
502
|
+
FileUtils.mkdir_p(p)
|
|
514
503
|
end
|
|
515
504
|
end
|
|
516
505
|
|
|
@@ -518,7 +507,7 @@ EOF
|
|
|
518
507
|
if File.file?(executable) && File.executable?(executable)
|
|
519
508
|
executable
|
|
520
509
|
elsif paths = ENV["PATH"]
|
|
521
|
-
quote = '"'
|
|
510
|
+
quote = '"'
|
|
522
511
|
paths.split(File::PATH_SEPARATOR).find do |path|
|
|
523
512
|
path = path[1..-2] if path.start_with?(quote) && path.end_with?(quote)
|
|
524
513
|
executable_path = File.expand_path(executable, path)
|
|
@@ -527,41 +516,14 @@ EOF
|
|
|
527
516
|
end
|
|
528
517
|
end
|
|
529
518
|
|
|
530
|
-
def sudo(str)
|
|
531
|
-
SUDO_MUTEX.synchronize do
|
|
532
|
-
prompt = "\n\n" + <<-PROMPT.gsub(/^ {6}/, "").strip + " "
|
|
533
|
-
Your user account isn't allowed to install to the system RubyGems.
|
|
534
|
-
You can cancel this installation and run:
|
|
535
|
-
|
|
536
|
-
bundle config set --local path 'vendor/bundle'
|
|
537
|
-
bundle install
|
|
538
|
-
|
|
539
|
-
to install the gems into ./vendor/bundle/, or you can enter your password
|
|
540
|
-
and install the bundled gems to RubyGems using sudo.
|
|
541
|
-
|
|
542
|
-
Password:
|
|
543
|
-
PROMPT
|
|
544
|
-
|
|
545
|
-
unless @prompted_for_sudo ||= system(%(sudo -k -p "#{prompt}" true))
|
|
546
|
-
raise SudoNotPermittedError,
|
|
547
|
-
"Bundler requires sudo access to install at the moment. " \
|
|
548
|
-
"Try installing again, granting Bundler sudo access when prompted, or installing into a different path."
|
|
549
|
-
end
|
|
550
|
-
|
|
551
|
-
`sudo -p "#{prompt}" #{str}`
|
|
552
|
-
end
|
|
553
|
-
end
|
|
554
|
-
|
|
555
519
|
def read_file(file)
|
|
556
520
|
SharedHelpers.filesystem_access(file, :read) do
|
|
557
521
|
File.open(file, "r:UTF-8", &:read)
|
|
558
522
|
end
|
|
559
523
|
end
|
|
560
524
|
|
|
561
|
-
def
|
|
562
|
-
|
|
563
|
-
rescue StandardError => e
|
|
564
|
-
raise MarshalError, "#{e.class}: #{e.message}"
|
|
525
|
+
def safe_load_marshal(data)
|
|
526
|
+
load_marshal(data, :marshal_proc => SAFE_MARSHAL_PROC)
|
|
565
527
|
end
|
|
566
528
|
|
|
567
529
|
def load_gemspec(file, validate = false)
|
|
@@ -597,7 +559,7 @@ EOF
|
|
|
597
559
|
|
|
598
560
|
def git_present?
|
|
599
561
|
return @git_present if defined?(@git_present)
|
|
600
|
-
@git_present = Bundler.which("git"
|
|
562
|
+
@git_present = Bundler.which("git#{RbConfig::CONFIG["EXEEXT"]}")
|
|
601
563
|
end
|
|
602
564
|
|
|
603
565
|
def feature_flag
|
|
@@ -643,15 +605,26 @@ EOF
|
|
|
643
605
|
Bundler.rubygems.clear_paths
|
|
644
606
|
end
|
|
645
607
|
|
|
608
|
+
def self_manager
|
|
609
|
+
@self_manager ||= begin
|
|
610
|
+
require_relative "bundler/self_manager"
|
|
611
|
+
Bundler::SelfManager.new
|
|
612
|
+
end
|
|
613
|
+
end
|
|
614
|
+
|
|
646
615
|
private
|
|
647
616
|
|
|
617
|
+
def load_marshal(data, marshal_proc: nil)
|
|
618
|
+
Marshal.load(data, marshal_proc)
|
|
619
|
+
rescue TypeError => e
|
|
620
|
+
raise MarshalError, "#{e.class}: #{e.message}"
|
|
621
|
+
end
|
|
622
|
+
|
|
648
623
|
def eval_yaml_gemspec(path, contents)
|
|
649
|
-
|
|
624
|
+
Kernel.require "psych"
|
|
650
625
|
|
|
651
|
-
# If the YAML is invalid, Syck raises an ArgumentError, and Psych
|
|
652
|
-
# raises a Psych::SyntaxError. See psyched_yaml.rb for more info.
|
|
653
626
|
Gem::Specification.from_yaml(contents)
|
|
654
|
-
rescue
|
|
627
|
+
rescue ::Psych::SyntaxError, ArgumentError, Gem::EndOfYAMLException, Gem::Exception
|
|
655
628
|
eval_gemspec(path, contents)
|
|
656
629
|
end
|
|
657
630
|
|
|
@@ -26,7 +26,7 @@ class Gem::AvailableSet
|
|
|
26
26
|
s = o.set
|
|
27
27
|
when Array
|
|
28
28
|
s = o.map do |sp,so|
|
|
29
|
-
if !sp.kind_of?(Gem::Specification)
|
|
29
|
+
if !sp.kind_of?(Gem::Specification) || !so.kind_of?(Gem::Source)
|
|
30
30
|
raise TypeError, "Array must be in [[spec, source], ...] form"
|
|
31
31
|
end
|
|
32
32
|
|
|
@@ -149,8 +149,8 @@ class Gem::AvailableSet
|
|
|
149
149
|
@set.reject! do |t|
|
|
150
150
|
# already locally installed
|
|
151
151
|
Gem::Specification.any? do |installed_spec|
|
|
152
|
-
dep.name == installed_spec.name
|
|
153
|
-
dep.requirement.satisfied_by?
|
|
152
|
+
dep.name == installed_spec.name &&
|
|
153
|
+
dep.requirement.satisfied_by?(installed_spec.version)
|
|
154
154
|
end
|
|
155
155
|
end
|
|
156
156
|
|
|
@@ -47,7 +47,7 @@ class Gem::BasicSpecification
|
|
|
47
47
|
# directory.
|
|
48
48
|
|
|
49
49
|
def gem_build_complete_path # :nodoc:
|
|
50
|
-
File.join extension_dir,
|
|
50
|
+
File.join extension_dir, "gem.build_complete"
|
|
51
51
|
end
|
|
52
52
|
|
|
53
53
|
##
|
|
@@ -77,7 +77,7 @@ class Gem::BasicSpecification
|
|
|
77
77
|
|
|
78
78
|
if Gem::Platform::RUBY == platform || Gem::Platform.local === platform
|
|
79
79
|
warn "Ignoring #{full_name} because its extensions are not built. " +
|
|
80
|
-
|
|
80
|
+
"Try: gem pristine #{name} --version #{version}"
|
|
81
81
|
end
|
|
82
82
|
|
|
83
83
|
return false
|
|
@@ -103,7 +103,7 @@ class Gem::BasicSpecification
|
|
|
103
103
|
|
|
104
104
|
def extensions_dir
|
|
105
105
|
Gem.default_ext_dir_for(base_dir) ||
|
|
106
|
-
File.join(base_dir,
|
|
106
|
+
File.join(base_dir, "extensions", Gem::Platform.local.to_s,
|
|
107
107
|
Gem.extension_api_version)
|
|
108
108
|
end
|
|
109
109
|
|
|
@@ -131,7 +131,7 @@ class Gem::BasicSpecification
|
|
|
131
131
|
# default Ruby platform.
|
|
132
132
|
|
|
133
133
|
def full_name
|
|
134
|
-
if platform == Gem::Platform::RUBY
|
|
134
|
+
if platform == Gem::Platform::RUBY || platform.nil?
|
|
135
135
|
"#{name}-#{version}".dup.tap(&Gem::UNTAINT)
|
|
136
136
|
else
|
|
137
137
|
"#{name}-#{version}-#{platform}".dup.tap(&Gem::UNTAINT)
|
|
@@ -289,14 +289,14 @@ class Gem::BasicSpecification
|
|
|
289
289
|
|
|
290
290
|
def lib_dirs_glob
|
|
291
291
|
dirs = if self.raw_require_paths
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
292
|
+
if self.raw_require_paths.size > 1
|
|
293
|
+
"{#{self.raw_require_paths.join(',')}}"
|
|
294
|
+
else
|
|
295
|
+
self.raw_require_paths.first
|
|
296
|
+
end
|
|
297
|
+
else
|
|
298
|
+
"lib" # default value for require_paths for bundler/inline
|
|
299
|
+
end
|
|
300
300
|
|
|
301
301
|
"#{self.full_gem_path}/#{dirs}".dup.tap(&Gem::UNTAINT)
|
|
302
302
|
end
|
|
@@ -2,48 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
module Gem::BundlerVersionFinder
|
|
4
4
|
def self.bundler_version
|
|
5
|
-
|
|
5
|
+
v = ENV["BUNDLER_VERSION"]
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
v ||= bundle_update_bundler_version
|
|
8
|
+
return if v == true
|
|
8
9
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
def self.bundler_version_with_reason
|
|
13
|
-
if v = ENV["BUNDLER_VERSION"]
|
|
14
|
-
return [v, "`$BUNDLER_VERSION`"]
|
|
15
|
-
end
|
|
16
|
-
if v = bundle_update_bundler_version
|
|
17
|
-
return if v == true
|
|
18
|
-
return [v, "`bundle update --bundler`"]
|
|
19
|
-
end
|
|
20
|
-
v, lockfile = lockfile_version
|
|
21
|
-
if v
|
|
22
|
-
return [v, "your #{lockfile}"]
|
|
23
|
-
end
|
|
24
|
-
end
|
|
10
|
+
v ||= lockfile_version
|
|
11
|
+
return unless v
|
|
25
12
|
|
|
26
|
-
|
|
27
|
-
return unless vr = bundler_version_with_reason
|
|
28
|
-
<<-EOS
|
|
29
|
-
Could not find 'bundler' (#{vr.first}) required by #{vr.last}.
|
|
30
|
-
To update to the latest version installed on your system, run `bundle update --bundler`.
|
|
31
|
-
To install the missing version, run `gem install bundler:#{vr.first}`
|
|
32
|
-
EOS
|
|
13
|
+
Gem::Version.new(v)
|
|
33
14
|
end
|
|
34
15
|
|
|
35
|
-
def self.
|
|
36
|
-
return true unless spec.name == "bundler".freeze
|
|
37
|
-
return true unless bundler_version = self.bundler_version
|
|
38
|
-
|
|
39
|
-
spec.version.segments.first == bundler_version.segments.first
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def self.filter!(specs)
|
|
43
|
-
return unless bundler_version = self.bundler_version
|
|
44
|
-
|
|
45
|
-
specs.reject! {|spec| spec.version.segments.first != bundler_version.segments.first }
|
|
46
|
-
|
|
16
|
+
def self.prioritize!(specs)
|
|
47
17
|
exact_match_index = specs.find_index {|spec| spec.version == bundler_version }
|
|
48
18
|
return unless exact_match_index
|
|
49
19
|
|
|
@@ -51,7 +21,7 @@ To install the missing version, run `gem install bundler:#{vr.first}`
|
|
|
51
21
|
end
|
|
52
22
|
|
|
53
23
|
def self.bundle_update_bundler_version
|
|
54
|
-
return unless File.basename($0) == "bundle"
|
|
24
|
+
return unless File.basename($0) == "bundle"
|
|
55
25
|
return unless "update".start_with?(ARGV.first || " ")
|
|
56
26
|
bundler_version = nil
|
|
57
27
|
update_index = nil
|
|
@@ -68,12 +38,10 @@ To install the missing version, run `gem install bundler:#{vr.first}`
|
|
|
68
38
|
private_class_method :bundle_update_bundler_version
|
|
69
39
|
|
|
70
40
|
def self.lockfile_version
|
|
71
|
-
return unless
|
|
72
|
-
lockfile, contents = lockfile
|
|
73
|
-
lockfile ||= "lockfile"
|
|
41
|
+
return unless contents = lockfile_contents
|
|
74
42
|
regexp = /\n\nBUNDLED WITH\n\s{2,}(#{Gem::Version::VERSION_PATTERN})\n/
|
|
75
43
|
return unless contents =~ regexp
|
|
76
|
-
|
|
44
|
+
$1
|
|
77
45
|
end
|
|
78
46
|
private_class_method :lockfile_version
|
|
79
47
|
|
|
@@ -97,13 +65,13 @@ To install the missing version, run `gem install bundler:#{vr.first}`
|
|
|
97
65
|
return unless gemfile
|
|
98
66
|
|
|
99
67
|
lockfile = case gemfile
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
68
|
+
when "gems.rb" then "gems.locked"
|
|
69
|
+
else "#{gemfile}.lock"
|
|
70
|
+
end.dup.tap(&Gem::UNTAINT)
|
|
103
71
|
|
|
104
72
|
return unless File.file?(lockfile)
|
|
105
73
|
|
|
106
|
-
|
|
74
|
+
File.read(lockfile)
|
|
107
75
|
end
|
|
108
76
|
private_class_method :lockfile_contents
|
|
109
77
|
end
|
data/lib/rubygems/command.rb
CHANGED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
# See LICENSE.txt for permissions.
|
|
6
6
|
#++
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
require_relative
|
|
10
|
-
require_relative
|
|
8
|
+
require_relative "optparse"
|
|
9
|
+
require_relative "requirement"
|
|
10
|
+
require_relative "user_interaction"
|
|
11
11
|
|
|
12
12
|
##
|
|
13
13
|
# Base class for all Gem commands. When creating a new gem command, define
|
|
@@ -19,7 +19,7 @@ require_relative 'user_interaction'
|
|
|
19
19
|
class Gem::Command
|
|
20
20
|
include Gem::UserInteraction
|
|
21
21
|
|
|
22
|
-
OptionParser.accept Symbol do |value|
|
|
22
|
+
Gem::OptionParser.accept Symbol do |value|
|
|
23
23
|
value.to_sym
|
|
24
24
|
end
|
|
25
25
|
|
|
@@ -76,7 +76,7 @@ class Gem::Command
|
|
|
76
76
|
when Array
|
|
77
77
|
@extra_args = value
|
|
78
78
|
when String
|
|
79
|
-
@extra_args = value.split(
|
|
79
|
+
@extra_args = value.split(" ")
|
|
80
80
|
end
|
|
81
81
|
end
|
|
82
82
|
|
|
@@ -159,11 +159,11 @@ class Gem::Command
|
|
|
159
159
|
gem = "'#{gem_name}' (#{version})"
|
|
160
160
|
msg = String.new "Could not find a valid gem #{gem}"
|
|
161
161
|
|
|
162
|
-
if errors
|
|
162
|
+
if errors && !errors.empty?
|
|
163
163
|
msg << ", here is why:\n"
|
|
164
164
|
errors.each {|x| msg << " #{x.wordy}\n" }
|
|
165
165
|
else
|
|
166
|
-
if required_by
|
|
166
|
+
if required_by && gem != required_by
|
|
167
167
|
msg << " (required by #{required_by}) in any repository"
|
|
168
168
|
else
|
|
169
169
|
msg << " in any repository"
|
|
@@ -186,7 +186,7 @@ class Gem::Command
|
|
|
186
186
|
def get_all_gem_names
|
|
187
187
|
args = options[:args]
|
|
188
188
|
|
|
189
|
-
if args.nil?
|
|
189
|
+
if args.nil? || args.empty?
|
|
190
190
|
raise Gem::CommandLineError,
|
|
191
191
|
"Please specify at least one gem name (e.g. gem build GEMNAME)"
|
|
192
192
|
end
|
|
@@ -201,11 +201,15 @@ class Gem::Command
|
|
|
201
201
|
# respectively.
|
|
202
202
|
def get_all_gem_names_and_versions
|
|
203
203
|
get_all_gem_names.map do |name|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
204
|
+
extract_gem_name_and_version(name)
|
|
205
|
+
end
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
def extract_gem_name_and_version(name) # :nodoc:
|
|
209
|
+
if /\A(.*):(#{Gem::Requirement::PATTERN_RAW})\z/ =~ name
|
|
210
|
+
[$1, $2]
|
|
211
|
+
else
|
|
212
|
+
[name]
|
|
209
213
|
end
|
|
210
214
|
end
|
|
211
215
|
|
|
@@ -216,7 +220,7 @@ class Gem::Command
|
|
|
216
220
|
def get_one_gem_name
|
|
217
221
|
args = options[:args]
|
|
218
222
|
|
|
219
|
-
if args.nil?
|
|
223
|
+
if args.nil? || args.empty?
|
|
220
224
|
raise Gem::CommandLineError,
|
|
221
225
|
"Please specify a gem name on the command line (e.g. gem build GEMNAME)"
|
|
222
226
|
end
|
|
@@ -344,7 +348,7 @@ class Gem::Command
|
|
|
344
348
|
##
|
|
345
349
|
# Add a command-line option and handler to the command.
|
|
346
350
|
#
|
|
347
|
-
# See OptionParser#make_switch for an explanation of +opts+.
|
|
351
|
+
# See Gem::OptionParser#make_switch for an explanation of +opts+.
|
|
348
352
|
#
|
|
349
353
|
# +handler+ will be called with two values, the value of the argument and
|
|
350
354
|
# the options hash.
|
|
@@ -398,10 +402,10 @@ class Gem::Command
|
|
|
398
402
|
version_to_expire = deprecation["rg_version_to_expire"]
|
|
399
403
|
|
|
400
404
|
deprecate_option_msg = if version_to_expire
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
+
"The \"#{option}\" option has been deprecated and will be removed in Rubygems #{version_to_expire}."
|
|
406
|
+
else
|
|
407
|
+
"The \"#{option}\" option has been deprecated and will be removed in future versions of Rubygems."
|
|
408
|
+
end
|
|
405
409
|
|
|
406
410
|
extra_msg = deprecation["extra_msg"]
|
|
407
411
|
|
|
@@ -540,7 +544,7 @@ class Gem::Command
|
|
|
540
544
|
# command.
|
|
541
545
|
|
|
542
546
|
def create_option_parser
|
|
543
|
-
@parser = OptionParser.new
|
|
547
|
+
@parser = Gem::OptionParser.new
|
|
544
548
|
|
|
545
549
|
add_parser_options
|
|
546
550
|
|
|
@@ -554,9 +558,9 @@ class Gem::Command
|
|
|
554
558
|
end
|
|
555
559
|
|
|
556
560
|
def configure_options(header, option_list)
|
|
557
|
-
return if option_list.nil?
|
|
561
|
+
return if option_list.nil? || option_list.empty?
|
|
558
562
|
|
|
559
|
-
header = header.to_s.empty? ?
|
|
563
|
+
header = header.to_s.empty? ? "" : "#{header} "
|
|
560
564
|
@parser.separator " #{header}Options:"
|
|
561
565
|
|
|
562
566
|
option_list.each do |args, handler|
|
|
@@ -565,7 +569,7 @@ class Gem::Command
|
|
|
565
569
|
end
|
|
566
570
|
end
|
|
567
571
|
|
|
568
|
-
@parser.separator
|
|
572
|
+
@parser.separator ""
|
|
569
573
|
end
|
|
570
574
|
|
|
571
575
|
##
|
|
@@ -578,22 +582,22 @@ class Gem::Command
|
|
|
578
582
|
# ----------------------------------------------------------------
|
|
579
583
|
# Add the options common to all commands.
|
|
580
584
|
|
|
581
|
-
add_common_option(
|
|
582
|
-
|
|
585
|
+
add_common_option("-h", "--help",
|
|
586
|
+
"Get help on this command") do |value, options|
|
|
583
587
|
options[:help] = true
|
|
584
588
|
end
|
|
585
589
|
|
|
586
|
-
add_common_option(
|
|
587
|
-
|
|
590
|
+
add_common_option("-V", "--[no-]verbose",
|
|
591
|
+
"Set the verbose level of output") do |value, options|
|
|
588
592
|
# Set us to "really verbose" so the progress meter works
|
|
589
|
-
if Gem.configuration.verbose
|
|
593
|
+
if Gem.configuration.verbose && value
|
|
590
594
|
Gem.configuration.verbose = 1
|
|
591
595
|
else
|
|
592
596
|
Gem.configuration.verbose = value
|
|
593
597
|
end
|
|
594
598
|
end
|
|
595
599
|
|
|
596
|
-
add_common_option(
|
|
600
|
+
add_common_option("-q", "--quiet", "Silence command progress meter") do |value, options|
|
|
597
601
|
Gem.configuration.verbose = false
|
|
598
602
|
end
|
|
599
603
|
|
|
@@ -606,31 +610,35 @@ class Gem::Command
|
|
|
606
610
|
# commands. Both options are actually handled before the other
|
|
607
611
|
# options get parsed.
|
|
608
612
|
|
|
609
|
-
add_common_option(
|
|
610
|
-
|
|
613
|
+
add_common_option("--config-file FILE",
|
|
614
|
+
"Use this config file instead of default") do
|
|
611
615
|
end
|
|
612
616
|
|
|
613
|
-
add_common_option(
|
|
614
|
-
|
|
617
|
+
add_common_option("--backtrace",
|
|
618
|
+
"Show stack backtrace on errors") do
|
|
615
619
|
end
|
|
616
620
|
|
|
617
|
-
add_common_option(
|
|
618
|
-
|
|
621
|
+
add_common_option("--debug",
|
|
622
|
+
"Turn on Ruby debugging") do
|
|
619
623
|
end
|
|
620
624
|
|
|
621
|
-
add_common_option(
|
|
622
|
-
|
|
625
|
+
add_common_option("--norc",
|
|
626
|
+
"Avoid loading any .gemrc file") do
|
|
623
627
|
end
|
|
624
628
|
|
|
625
629
|
# :stopdoc:
|
|
626
630
|
|
|
627
|
-
HELP = <<-HELP
|
|
631
|
+
HELP = <<-HELP
|
|
628
632
|
RubyGems is a package manager for Ruby.
|
|
629
633
|
|
|
630
634
|
Usage:
|
|
631
635
|
gem -h/--help
|
|
632
636
|
gem -v/--version
|
|
633
|
-
gem command [arguments...] [options...]
|
|
637
|
+
gem [global options...] command [arguments...] [options...]
|
|
638
|
+
|
|
639
|
+
Global options:
|
|
640
|
+
-C PATH run as if gem was started in <PATH>
|
|
641
|
+
instead of the current working directory
|
|
634
642
|
|
|
635
643
|
Examples:
|
|
636
644
|
gem install rake
|