rubygems-update 3.0.3 → 3.4.7
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 +5556 -0
- data/CODE_OF_CONDUCT.md +62 -24
- data/CONTRIBUTING.md +111 -21
- data/MAINTAINERS.txt +1 -6
- data/Manifest.txt +209 -101
- data/POLICIES.md +65 -22
- data/README.md +23 -15
- data/UPGRADING.md +5 -81
- data/bin/gem +2 -16
- data/bin/update_rubygems +5 -5
- data/bundler/CHANGELOG.md +2619 -1256
- data/bundler/LICENSE.md +18 -19
- data/bundler/README.md +11 -12
- data/bundler/UPGRADING.md +222 -0
- data/bundler/bundler.gemspec +13 -33
- data/bundler/exe/bundle +26 -11
- data/bundler/exe/bundler +1 -1
- data/bundler/lib/bundler/.document +1 -0
- data/bundler/lib/bundler/build_metadata.rb +5 -13
- data/bundler/lib/bundler/capistrano.rb +4 -4
- data/bundler/lib/bundler/cli/add.rb +28 -16
- data/bundler/lib/bundler/cli/binstubs.rb +11 -3
- data/bundler/lib/bundler/cli/cache.rb +24 -17
- data/bundler/lib/bundler/cli/check.rb +5 -3
- data/bundler/lib/bundler/cli/clean.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +41 -13
- data/bundler/lib/bundler/cli/config.rb +170 -86
- data/bundler/lib/bundler/cli/console.rb +3 -3
- data/bundler/lib/bundler/cli/doctor.rb +27 -10
- data/bundler/lib/bundler/cli/exec.rb +8 -25
- data/bundler/lib/bundler/cli/fund.rb +36 -0
- data/bundler/lib/bundler/cli/gem.rb +261 -48
- data/bundler/lib/bundler/cli/info.rb +52 -8
- data/bundler/lib/bundler/cli/init.rb +7 -3
- data/bundler/lib/bundler/cli/inject.rb +1 -1
- data/bundler/lib/bundler/cli/install.rb +38 -66
- data/bundler/lib/bundler/cli/issue.rb +8 -7
- data/bundler/lib/bundler/cli/list.rb +19 -11
- data/bundler/lib/bundler/cli/lock.rb +11 -4
- data/bundler/lib/bundler/cli/open.rb +14 -9
- data/bundler/lib/bundler/cli/outdated.rb +152 -121
- data/bundler/lib/bundler/cli/platform.rb +2 -2
- data/bundler/lib/bundler/cli/plugin.rb +19 -2
- data/bundler/lib/bundler/cli/pristine.rb +6 -1
- data/bundler/lib/bundler/cli/remove.rb +1 -2
- data/bundler/lib/bundler/cli/show.rb +3 -3
- data/bundler/lib/bundler/cli/update.rb +49 -18
- data/bundler/lib/bundler/cli/viz.rb +1 -1
- data/bundler/lib/bundler/cli.rb +269 -165
- data/bundler/lib/bundler/compact_index_client/cache.rb +7 -24
- data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
- data/bundler/lib/bundler/compact_index_client/updater.rb +58 -57
- data/bundler/lib/bundler/compact_index_client.rb +28 -18
- data/bundler/lib/bundler/constants.rb +1 -1
- data/bundler/lib/bundler/current_ruby.rb +26 -11
- data/bundler/lib/bundler/definition.rb +359 -441
- data/bundler/lib/bundler/dependency.rb +29 -71
- data/bundler/lib/bundler/deployment.rb +1 -1
- data/bundler/lib/bundler/digest.rb +71 -0
- data/bundler/lib/bundler/dsl.rb +84 -116
- data/bundler/lib/bundler/endpoint_specification.rb +20 -14
- data/bundler/lib/bundler/env.rb +10 -15
- data/bundler/lib/bundler/environment_preserver.rb +30 -3
- data/bundler/lib/bundler/errors.rb +31 -14
- data/bundler/lib/bundler/feature_flag.rb +13 -33
- data/bundler/lib/bundler/fetcher/base.rb +7 -9
- data/bundler/lib/bundler/fetcher/compact_index.rb +46 -39
- data/bundler/lib/bundler/fetcher/dependency.rb +2 -2
- data/bundler/lib/bundler/fetcher/downloader.rb +15 -12
- data/bundler/lib/bundler/fetcher/index.rb +4 -30
- data/bundler/lib/bundler/fetcher.rb +39 -41
- data/bundler/lib/bundler/force_platform.rb +18 -0
- data/bundler/lib/bundler/friendly_errors.rb +49 -54
- data/bundler/lib/bundler/gem_helper.rb +79 -43
- data/bundler/lib/bundler/gem_helpers.rb +44 -28
- data/bundler/lib/bundler/gem_tasks.rb +1 -1
- data/bundler/lib/bundler/gem_version_promoter.rb +54 -99
- data/bundler/lib/bundler/graph.rb +5 -5
- data/bundler/lib/bundler/index.rb +14 -52
- data/bundler/lib/bundler/injector.rb +50 -16
- data/bundler/lib/bundler/inline.rb +28 -29
- data/bundler/lib/bundler/installer/gem_installer.rb +22 -23
- data/bundler/lib/bundler/installer/parallel_installer.rb +51 -51
- data/bundler/lib/bundler/installer/standalone.rb +62 -12
- data/bundler/lib/bundler/installer.rb +46 -97
- data/bundler/lib/bundler/lazy_specification.rb +88 -48
- data/bundler/lib/bundler/lockfile_generator.rb +3 -3
- data/bundler/lib/bundler/lockfile_parser.rb +30 -62
- data/bundler/{man → lib/bundler/man}/bundle-add.1 +29 -5
- data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +22 -4
- data/bundler/{man → lib/bundler/man}/bundle-binstubs.1 +6 -4
- data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +3 -5
- data/bundler/lib/bundler/man/bundle-cache.1 +61 -0
- data/bundler/{man/bundle-package.ronn → lib/bundler/man/bundle-cache.1.ronn} +22 -15
- data/bundler/{man → lib/bundler/man}/bundle-check.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-clean.1 +2 -2
- data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-config.1 +78 -60
- data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +96 -85
- data/bundler/lib/bundler/man/bundle-console.1 +53 -0
- data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
- data/bundler/{man → lib/bundler/man}/bundle-doctor.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-exec.1 +6 -6
- data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +6 -6
- data/bundler/lib/bundler/man/bundle-gem.1 +105 -0
- data/bundler/lib/bundler/man/bundle-gem.1.ronn +117 -0
- data/bundler/lib/bundler/man/bundle-help.1 +13 -0
- data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
- data/bundler/{man → lib/bundler/man}/bundle-info.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-init.1 +6 -2
- data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +3 -1
- data/bundler/{man → lib/bundler/man}/bundle-inject.1 +5 -2
- data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +3 -1
- data/bundler/{man → lib/bundler/man}/bundle-install.1 +42 -37
- data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +42 -38
- data/bundler/{man → lib/bundler/man}/bundle-list.1 +7 -7
- data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
- data/bundler/{man → lib/bundler/man}/bundle-lock.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-open.1 +22 -2
- data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +9 -1
- data/bundler/{man → lib/bundler/man}/bundle-outdated.1 +3 -10
- data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +1 -10
- data/bundler/{man → lib/bundler/man}/bundle-platform.1 +16 -6
- data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +14 -7
- data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
- data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
- data/bundler/{man → lib/bundler/man}/bundle-pristine.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-remove.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-show.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-update.1 +8 -8
- data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +8 -7
- data/bundler/lib/bundler/man/bundle-version.1 +35 -0
- data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
- data/bundler/{man → lib/bundler/man}/bundle-viz.1 +4 -1
- data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +2 -0
- data/bundler/{man → lib/bundler/man}/bundle.1 +17 -12
- data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +14 -9
- data/bundler/lib/bundler/man/gemfile.5 +723 -0
- data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +112 -95
- data/bundler/lib/bundler/man/index.txt +29 -0
- data/bundler/lib/bundler/match_metadata.rb +13 -0
- data/bundler/lib/bundler/match_platform.rb +1 -2
- data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
- data/bundler/lib/bundler/mirror.rb +10 -12
- data/bundler/lib/bundler/plugin/api/source.rb +29 -15
- data/bundler/lib/bundler/plugin/api.rb +1 -1
- data/bundler/lib/bundler/plugin/dsl.rb +1 -1
- data/bundler/lib/bundler/plugin/index.rb +31 -8
- data/bundler/lib/bundler/plugin/installer/git.rb +0 -4
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -9
- data/bundler/lib/bundler/plugin/installer.rb +35 -22
- data/bundler/lib/bundler/plugin/source_list.rb +5 -1
- data/bundler/lib/bundler/plugin.rb +102 -42
- data/bundler/lib/bundler/process_lock.rb +1 -1
- data/bundler/lib/bundler/remote_specification.rb +15 -8
- data/bundler/lib/bundler/resolver/base.rb +77 -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 +49 -73
- data/bundler/lib/bundler/resolver.rb +343 -300
- data/bundler/lib/bundler/retry.rb +4 -4
- data/bundler/lib/bundler/ruby_dsl.rb +1 -1
- data/bundler/lib/bundler/ruby_version.rb +9 -37
- data/bundler/lib/bundler/rubygems_ext.rb +235 -92
- data/bundler/lib/bundler/rubygems_gem_installer.rb +87 -21
- data/bundler/lib/bundler/rubygems_integration.rb +179 -515
- data/bundler/lib/bundler/runtime.rb +25 -40
- data/bundler/lib/bundler/self_manager.rb +168 -0
- data/bundler/lib/bundler/settings.rb +162 -118
- data/bundler/lib/bundler/setup.rb +11 -12
- data/bundler/lib/bundler/shared_helpers.rb +61 -102
- data/bundler/lib/bundler/similarity_detector.rb +3 -3
- data/bundler/lib/bundler/source/git/git_proxy.rb +257 -128
- data/bundler/lib/bundler/source/git.rb +84 -61
- data/bundler/lib/bundler/source/metadata.rb +9 -9
- data/bundler/lib/bundler/source/path/installer.rb +11 -32
- data/bundler/lib/bundler/source/path.rb +28 -17
- data/bundler/lib/bundler/source/rubygems/remote.rb +3 -4
- data/bundler/lib/bundler/source/rubygems.rb +171 -197
- data/bundler/lib/bundler/source/rubygems_aggregate.rb +68 -0
- data/bundler/lib/bundler/source.rb +30 -10
- data/bundler/lib/bundler/source_list.rb +112 -67
- data/bundler/lib/bundler/source_map.rb +71 -0
- data/bundler/lib/bundler/spec_set.rb +86 -72
- data/bundler/lib/bundler/stub_specification.rb +45 -37
- data/bundler/lib/bundler/templates/Executable +3 -5
- data/bundler/lib/bundler/templates/Executable.bundler +21 -17
- data/bundler/lib/bundler/templates/Executable.standalone +4 -4
- data/bundler/lib/bundler/templates/Gemfile +0 -2
- 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/Cargo.toml.tt +7 -0
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +22 -2
- data/bundler/lib/bundler/templates/newgem/README.md.tt +13 -15
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +33 -5
- data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
- data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +25 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/{extconf.rb.tt → extconf-c.rb.tt} +2 -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 +37 -0
- data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +18 -0
- data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +36 -41
- data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
- data/bundler/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
- data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
- data/bundler/lib/bundler/templates/newgem/standard.yml.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/test/minitest/test_helper.rb.tt +6 -0
- data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/test_newgem.rb.tt} +3 -1
- data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
- data/bundler/lib/bundler/ui/rg_proxy.rb +1 -1
- data/bundler/lib/bundler/ui/shell.rb +39 -20
- data/bundler/lib/bundler/ui/silent.rb +21 -5
- data/bundler/lib/bundler/ui.rb +3 -3
- data/bundler/lib/bundler/uri_credentials_filter.rb +10 -4
- data/bundler/lib/bundler/vendor/.document +1 -0
- data/bundler/lib/bundler/vendor/connection_pool/LICENSE +20 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +174 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +56 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +128 -0
- data/bundler/lib/bundler/vendor/fileutils/LICENSE.txt +22 -0
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1493 -425
- data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +82 -0
- 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/net-http-persistent/lib/net/http/persistent.rb +302 -462
- 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 +155 -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/LICENSE.md +20 -0
- 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 +25 -14
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +20 -10
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +34 -15
- 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/core_ext/hash_with_indifferent_access.rb +6 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +83 -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/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/line_editor.rb +2 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/nested_context.rb +29 -0
- 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 +40 -6
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -4
- 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/basic.rb +88 -13
- 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/shell.rb +5 -5
- 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/thor/lib/thor.rb +16 -9
- data/bundler/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
- data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +452 -0
- data/bundler/lib/bundler/vendor/uri/LICENSE.txt +22 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +729 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +100 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +267 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1587 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +125 -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 +22 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +293 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +539 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +119 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +6 -0
- 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 +104 -0
- data/bundler/lib/bundler/vendored_fileutils.rb +1 -6
- data/bundler/lib/bundler/vendored_persistent.rb +2 -39
- data/bundler/lib/bundler/{vendored_molinillo.rb → vendored_pub_grub.rb} +1 -1
- data/bundler/lib/bundler/vendored_thor.rb +2 -2
- data/bundler/lib/bundler/vendored_tsort.rb +4 -0
- data/bundler/lib/bundler/vendored_uri.rb +4 -0
- data/bundler/lib/bundler/version.rb +5 -20
- data/bundler/lib/bundler/vlad.rb +2 -2
- data/bundler/lib/bundler/worker.rb +26 -15
- data/bundler/lib/bundler/yaml_serializer.rb +3 -4
- data/bundler/lib/bundler.rb +285 -183
- data/hide_lib_for_update/note.txt +0 -4
- data/lib/rubygems/available_set.rb +7 -8
- data/lib/rubygems/basic_specification.rb +44 -31
- data/lib/rubygems/bundler_version_finder.rb +28 -50
- data/lib/rubygems/command.rb +104 -46
- data/lib/rubygems/command_manager.rb +35 -16
- data/lib/rubygems/commands/build_command.rb +77 -26
- data/lib/rubygems/commands/cert_command.rb +78 -76
- data/lib/rubygems/commands/check_command.rb +20 -22
- data/lib/rubygems/commands/cleanup_command.rb +36 -32
- data/lib/rubygems/commands/contents_command.rb +16 -18
- data/lib/rubygems/commands/dependency_command.rb +39 -50
- data/lib/rubygems/commands/environment_command.rb +11 -13
- data/lib/rubygems/commands/fetch_command.rb +33 -16
- data/lib/rubygems/commands/generate_index_command.rb +18 -17
- data/lib/rubygems/commands/help_command.rb +7 -7
- data/lib/rubygems/commands/info_command.rb +11 -6
- data/lib/rubygems/commands/install_command.rb +45 -79
- data/lib/rubygems/commands/list_command.rb +9 -8
- data/lib/rubygems/commands/lock_command.rb +7 -9
- data/lib/rubygems/commands/mirror_command.rb +3 -4
- data/lib/rubygems/commands/open_command.rb +11 -14
- data/lib/rubygems/commands/outdated_command.rb +5 -6
- data/lib/rubygems/commands/owner_command.rb +29 -22
- data/lib/rubygems/commands/pristine_command.rb +61 -51
- data/lib/rubygems/commands/push_command.rb +26 -63
- data/lib/rubygems/commands/query_command.rb +21 -337
- data/lib/rubygems/commands/rdoc_command.rb +26 -26
- data/lib/rubygems/commands/search_command.rb +8 -8
- data/lib/rubygems/commands/server_command.rb +16 -77
- data/lib/rubygems/commands/setup_command.rb +282 -241
- data/lib/rubygems/commands/signin_command.rb +9 -10
- data/lib/rubygems/commands/signout_command.rb +7 -9
- data/lib/rubygems/commands/sources_command.rb +42 -26
- data/lib/rubygems/commands/specification_command.rb +25 -20
- data/lib/rubygems/commands/stale_command.rb +3 -3
- data/lib/rubygems/commands/uninstall_command.rb +58 -49
- data/lib/rubygems/commands/unpack_command.rb +15 -44
- data/lib/rubygems/commands/update_command.rb +133 -81
- data/lib/rubygems/commands/which_command.rb +8 -11
- data/lib/rubygems/commands/yank_command.rb +22 -19
- data/lib/rubygems/compatibility.rb +7 -5
- data/lib/rubygems/config_file.rb +101 -47
- data/lib/rubygems/core_ext/kernel_gem.rb +8 -12
- data/lib/rubygems/core_ext/kernel_require.rb +124 -83
- data/lib/rubygems/core_ext/kernel_warn.rb +35 -30
- data/lib/rubygems/core_ext/tcpsocket_init.rb +52 -0
- data/lib/rubygems/defaults.rb +131 -55
- data/lib/rubygems/dependency.rb +44 -27
- data/lib/rubygems/dependency_installer.rb +49 -205
- data/lib/rubygems/dependency_list.rb +24 -25
- data/lib/rubygems/deprecate.rb +106 -12
- data/lib/rubygems/doctor.rb +22 -22
- data/lib/rubygems/errors.rb +8 -14
- data/lib/rubygems/exceptions.rb +35 -33
- data/lib/rubygems/ext/build_error.rb +2 -0
- data/lib/rubygems/ext/builder.rb +71 -95
- 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 +6 -7
- data/lib/rubygems/ext/configure_builder.rb +5 -8
- data/lib/rubygems/ext/ext_conf_builder.rb +45 -65
- data/lib/rubygems/ext/rake_builder.rb +7 -10
- data/lib/rubygems/ext.rb +7 -6
- data/lib/rubygems/gem_runner.rb +15 -26
- data/lib/rubygems/gemcutter_utilities.rb +179 -54
- data/lib/rubygems/indexer.rb +38 -53
- data/lib/rubygems/install_default_message.rb +2 -2
- data/lib/rubygems/install_message.rb +2 -2
- data/lib/rubygems/install_update_options.rb +73 -64
- data/lib/rubygems/installer.rb +230 -173
- data/lib/rubygems/installer_uninstaller_utils.rb +29 -0
- data/lib/rubygems/local_remote_options.rb +22 -24
- data/lib/rubygems/mock_gem_ui.rb +2 -5
- data/lib/rubygems/name_tuple.rb +10 -14
- data/lib/rubygems/openssl.rb +7 -0
- data/lib/rubygems/optparse/.document +1 -0
- data/lib/rubygems/optparse/COPYING +56 -0
- data/lib/rubygems/optparse/lib/optionparser.rb +2 -0
- data/lib/rubygems/optparse/lib/optparse/ac.rb +54 -0
- data/lib/rubygems/optparse/lib/optparse/date.rb +18 -0
- data/lib/rubygems/optparse/lib/optparse/kwargs.rb +22 -0
- data/lib/rubygems/optparse/lib/optparse/shellwords.rb +7 -0
- data/lib/rubygems/optparse/lib/optparse/time.rb +11 -0
- data/lib/rubygems/optparse/lib/optparse/uri.rb +7 -0
- data/lib/rubygems/optparse/lib/optparse/version.rb +71 -0
- data/lib/rubygems/optparse/lib/optparse.rb +2308 -0
- data/lib/rubygems/optparse.rb +3 -0
- data/lib/rubygems/package/digest_io.rb +0 -2
- data/lib/rubygems/package/file_source.rb +2 -4
- data/lib/rubygems/package/io_source.rb +4 -2
- data/lib/rubygems/package/old.rb +9 -11
- data/lib/rubygems/package/tar_header.rb +73 -66
- data/lib/rubygems/package/tar_reader/entry.rb +8 -9
- data/lib/rubygems/package/tar_reader.rb +16 -13
- data/lib/rubygems/package/tar_writer.rb +12 -22
- data/lib/rubygems/package.rb +142 -125
- data/lib/rubygems/package_task.rb +5 -11
- data/lib/rubygems/path_support.rb +3 -8
- data/lib/rubygems/platform.rb +113 -73
- data/lib/rubygems/psych_tree.rb +1 -1
- data/lib/rubygems/query_utils.rb +351 -0
- data/lib/rubygems/rdoc.rb +4 -16
- data/lib/rubygems/remote_fetcher.rb +64 -136
- data/lib/rubygems/request/connection_pools.rb +7 -11
- data/lib/rubygems/request/http_pool.rb +2 -3
- data/lib/rubygems/request.rb +31 -32
- data/lib/rubygems/request_set/gem_dependency_api.rb +135 -136
- data/lib/rubygems/request_set/lockfile/parser.rb +28 -28
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +5 -5
- data/lib/rubygems/request_set/lockfile.rb +21 -20
- data/lib/rubygems/request_set.rb +30 -43
- data/lib/rubygems/requirement.rb +42 -64
- data/lib/rubygems/resolver/activation_request.rb +29 -53
- data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
- data/lib/rubygems/resolver/api_set.rb +33 -26
- data/lib/rubygems/resolver/api_specification.rb +30 -16
- data/lib/rubygems/resolver/best_set.rb +9 -11
- data/lib/rubygems/resolver/composed_set.rb +3 -5
- data/lib/rubygems/resolver/conflict.rb +12 -19
- data/lib/rubygems/resolver/current_set.rb +0 -2
- data/lib/rubygems/resolver/dependency_request.rb +3 -5
- data/lib/rubygems/resolver/git_set.rb +2 -4
- data/lib/rubygems/resolver/git_specification.rb +6 -8
- data/lib/rubygems/resolver/index_set.rb +4 -6
- data/lib/rubygems/resolver/index_specification.rb +38 -7
- data/lib/rubygems/resolver/installed_specification.rb +4 -6
- data/lib/rubygems/resolver/installer_set.rb +69 -27
- data/lib/rubygems/resolver/local_specification.rb +2 -4
- data/lib/rubygems/resolver/lock_set.rb +7 -9
- data/lib/rubygems/resolver/lock_specification.rb +6 -8
- data/lib/rubygems/resolver/molinillo/LICENSE +9 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +8 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +51 -12
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +42 -9
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +82 -8
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +13 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +510 -165
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
- data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
- data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
- data/lib/rubygems/resolver/molinillo.rb +1 -1
- data/lib/rubygems/resolver/requirement_list.rb +0 -1
- data/lib/rubygems/resolver/set.rb +0 -3
- data/lib/rubygems/resolver/source_set.rb +0 -2
- data/lib/rubygems/resolver/spec_specification.rb +14 -2
- data/lib/rubygems/resolver/specification.rb +14 -3
- data/lib/rubygems/resolver/vendor_set.rb +1 -3
- data/lib/rubygems/resolver/vendor_specification.rb +3 -5
- data/lib/rubygems/resolver.rb +58 -54
- data/lib/rubygems/s3_uri_signer.rb +175 -0
- data/lib/rubygems/safe_yaml.rb +14 -16
- data/lib/rubygems/security/policies.rb +47 -47
- data/lib/rubygems/security/policy.rb +25 -29
- data/lib/rubygems/security/signer.rb +16 -18
- data/lib/rubygems/security/trust_dir.rb +5 -6
- data/lib/rubygems/security.rb +90 -69
- data/lib/rubygems/security_option.rb +7 -8
- data/lib/rubygems/source/git.rb +30 -30
- data/lib/rubygems/source/installed.rb +1 -3
- data/lib/rubygems/source/local.rb +4 -6
- data/lib/rubygems/source/lock.rb +0 -2
- data/lib/rubygems/source/specific_file.rb +1 -3
- data/lib/rubygems/source/vendor.rb +0 -2
- data/lib/rubygems/source.rb +50 -38
- data/lib/rubygems/source_list.rb +9 -13
- data/lib/rubygems/spec_fetcher.rb +52 -64
- data/lib/rubygems/specification.rb +432 -463
- data/lib/rubygems/specification_policy.rb +185 -87
- data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
- data/lib/rubygems/stub_specification.rb +24 -29
- data/lib/rubygems/text.rb +21 -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 +110 -57
- data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
- data/lib/rubygems/update_suggestion.rb +69 -0
- data/lib/rubygems/uri.rb +126 -0
- data/lib/rubygems/uri_formatter.rb +2 -4
- data/lib/rubygems/user_interaction.rb +46 -49
- data/lib/rubygems/util/licenses.rb +511 -404
- data/lib/rubygems/util.rb +40 -56
- data/lib/rubygems/validator.rb +15 -37
- data/lib/rubygems/version.rb +48 -29
- data/lib/rubygems/version_option.rb +11 -5
- data/lib/rubygems.rb +305 -332
- data/rubygems-update.gemspec +6 -13
- data/setup.rb +11 -22
- 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/ca_cert.pem +74 -65
- 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/client.pem +103 -45
- data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
- data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
- data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
- data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
- data/test/rubygems/encrypted_private_key.pem +26 -26
- data/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/{lib/rubygems/test_case.rb → test/rubygems/helper.rb} +505 -507
- data/{lib → test}/rubygems/installer_test_case.rb +115 -53
- 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/{lib → test}/rubygems/package/tar_test_case.rb +4 -6
- data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
- data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
- data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
- data/test/rubygems/plugin/exception/rubygems_plugin.rb +1 -1
- data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +1 -1
- data/test/rubygems/private_ec_key.pem +9 -0
- 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/commands/crash_command.rb +0 -2
- data/test/rubygems/rubygems_plugin.rb +2 -4
- data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +12 -0
- data/test/rubygems/ssl_cert.pem +78 -17
- data/test/rubygems/ssl_key.pem +25 -13
- data/test/rubygems/test_bundled_ca.rb +44 -47
- data/test/rubygems/test_config.rb +5 -7
- data/test/rubygems/test_deprecate.rb +90 -10
- data/test/rubygems/test_exit.rb +17 -0
- data/test/rubygems/test_gem.rb +679 -885
- data/test/rubygems/test_gem_available_set.rb +24 -25
- data/test/rubygems/test_gem_bundler_version_finder.rb +42 -42
- data/test/rubygems/test_gem_command.rb +186 -39
- data/test/rubygems/test_gem_command_manager.rb +166 -36
- data/test/rubygems/test_gem_commands_build_command.rb +436 -52
- data/test/rubygems/test_gem_commands_cert_command.rb +193 -124
- data/test/rubygems/test_gem_commands_check_command.rb +9 -11
- data/test/rubygems/test_gem_commands_cleanup_command.rb +87 -62
- data/test/rubygems/test_gem_commands_contents_command.rb +73 -42
- data/test/rubygems/test_gem_commands_dependency_command.rb +39 -41
- data/test/rubygems/test_gem_commands_environment_command.rb +60 -48
- data/test/rubygems/test_gem_commands_fetch_command.rb +163 -32
- data/test/rubygems/test_gem_commands_generate_index_command.rb +39 -9
- data/test/rubygems/test_gem_commands_help_command.rb +34 -19
- data/test/rubygems/test_gem_commands_info_command.rb +34 -9
- data/test/rubygems/test_gem_commands_install_command.rb +600 -173
- data/test/rubygems/test_gem_commands_list_command.rb +5 -7
- data/test/rubygems/test_gem_commands_lock_command.rb +11 -13
- data/test/rubygems/test_gem_commands_mirror.rb +3 -4
- data/test/rubygems/test_gem_commands_open_command.rb +16 -19
- data/test/rubygems/test_gem_commands_outdated_command.rb +24 -7
- data/test/rubygems/test_gem_commands_owner_command.rb +183 -49
- data/test/rubygems/test_gem_commands_pristine_command.rb +222 -89
- data/test/rubygems/test_gem_commands_push_command.rb +178 -69
- data/test/rubygems/test_gem_commands_query_command.rb +114 -89
- data/test/rubygems/test_gem_commands_search_command.rb +2 -4
- data/test/rubygems/test_gem_commands_server_command.rb +6 -46
- data/test/rubygems/test_gem_commands_setup_command.rb +334 -157
- data/test/rubygems/test_gem_commands_signin_command.rb +187 -27
- data/test/rubygems/test_gem_commands_signout_command.rb +3 -10
- data/test/rubygems/test_gem_commands_sources_command.rb +266 -33
- data/test/rubygems/test_gem_commands_specification_command.rb +81 -55
- data/test/rubygems/test_gem_commands_stale_command.rb +4 -6
- data/test/rubygems/test_gem_commands_uninstall_command.rb +230 -95
- data/test/rubygems/test_gem_commands_unpack_command.rb +32 -34
- data/test/rubygems/test_gem_commands_update_command.rb +412 -102
- data/test/rubygems/test_gem_commands_which_command.rb +12 -14
- data/test/rubygems/test_gem_commands_yank_command.rb +107 -26
- data/test/rubygems/test_gem_config_file.rb +120 -96
- data/test/rubygems/test_gem_dependency.rb +94 -86
- data/test/rubygems/test_gem_dependency_installer.rb +305 -388
- data/test/rubygems/test_gem_dependency_list.rb +66 -61
- data/test/rubygems/test_gem_dependency_resolution_error.rb +5 -7
- data/test/rubygems/test_gem_doctor.rb +73 -47
- data/test/rubygems/test_gem_ext_builder.rb +116 -106
- 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 +233 -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 +32 -37
- data/test/rubygems/test_gem_ext_configure_builder.rb +23 -31
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +75 -79
- data/test/rubygems/test_gem_ext_rake_builder.rb +49 -30
- data/test/rubygems/test_gem_gem_runner.rb +52 -7
- data/test/rubygems/test_gem_gemcutter_utilities.rb +91 -76
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +4 -6
- data/test/rubygems/test_gem_indexer.rb +120 -105
- data/test/rubygems/test_gem_install_update_options.rb +57 -33
- data/test/rubygems/test_gem_installer.rb +1230 -644
- data/test/rubygems/test_gem_local_remote_options.rb +11 -13
- data/test/rubygems/test_gem_name_tuple.rb +4 -6
- data/test/rubygems/test_gem_package.rb +396 -266
- data/test/rubygems/test_gem_package_old.rb +57 -56
- data/test/rubygems/test_gem_package_tar_header.rb +108 -50
- data/test/rubygems/test_gem_package_tar_reader.rb +8 -10
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +77 -20
- data/test/rubygems/test_gem_package_tar_writer.rb +107 -101
- data/test/rubygems/test_gem_package_task.rb +58 -25
- data/test/rubygems/test_gem_path_support.rb +29 -29
- data/test/rubygems/test_gem_platform.rb +388 -199
- data/test/rubygems/test_gem_rdoc.rb +20 -155
- data/test/rubygems/test_gem_remote_fetcher.rb +474 -303
- data/test/rubygems/test_gem_request.rb +128 -85
- data/test/rubygems/test_gem_request_connection_pools.rb +32 -32
- data/test/rubygems/test_gem_request_set.rb +186 -110
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +280 -261
- data/test/rubygems/test_gem_request_set_lockfile.rb +93 -94
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +68 -69
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +136 -136
- data/test/rubygems/test_gem_requirement.rb +140 -55
- data/test/rubygems/test_gem_resolver.rb +224 -115
- data/test/rubygems/test_gem_resolver_activation_request.rb +9 -40
- data/test/rubygems/test_gem_resolver_api_set.rb +79 -78
- data/test/rubygems/test_gem_resolver_api_specification.rb +47 -49
- data/test/rubygems/test_gem_resolver_best_set.rb +43 -22
- data/test/rubygems/test_gem_resolver_composed_set.rb +1 -3
- data/test/rubygems/test_gem_resolver_conflict.rb +12 -18
- data/test/rubygems/test_gem_resolver_dependency_request.rb +15 -17
- data/test/rubygems/test_gem_resolver_git_set.rb +22 -24
- data/test/rubygems/test_gem_resolver_git_specification.rb +22 -22
- data/test/rubygems/test_gem_resolver_index_set.rb +14 -16
- data/test/rubygems/test_gem_resolver_index_specification.rb +21 -18
- data/test/rubygems/test_gem_resolver_installed_specification.rb +5 -8
- data/test/rubygems/test_gem_resolver_installer_set.rb +106 -44
- data/test/rubygems/test_gem_resolver_local_specification.rb +7 -9
- data/test/rubygems/test_gem_resolver_lock_set.rb +15 -17
- data/test/rubygems/test_gem_resolver_lock_specification.rb +17 -19
- data/test/rubygems/test_gem_resolver_requirement_list.rb +1 -3
- data/test/rubygems/test_gem_resolver_specification.rb +8 -10
- data/test/rubygems/test_gem_resolver_vendor_set.rb +9 -11
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +10 -12
- data/test/rubygems/test_gem_security.rb +109 -79
- data/test/rubygems/test_gem_security_policy.rb +102 -107
- data/test/rubygems/test_gem_security_signer.rb +51 -52
- data/test/rubygems/test_gem_security_trust_dir.rb +14 -16
- data/test/rubygems/test_gem_silent_ui.rb +47 -42
- data/test/rubygems/test_gem_source.rb +66 -51
- data/test/rubygems/test_gem_source_fetch_problem.rb +17 -8
- data/test/rubygems/test_gem_source_git.rb +74 -74
- data/test/rubygems/test_gem_source_installed.rb +16 -18
- data/test/rubygems/test_gem_source_list.rb +5 -5
- data/test/rubygems/test_gem_source_local.rb +15 -16
- data/test/rubygems/test_gem_source_lock.rb +31 -33
- data/test/rubygems/test_gem_source_specific_file.rb +18 -19
- data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
- data/test/rubygems/test_gem_source_vendor.rb +13 -15
- data/test/rubygems/test_gem_spec_fetcher.rb +74 -67
- data/test/rubygems/test_gem_specification.rb +1051 -1071
- data/test/rubygems/test_gem_stream_ui.rb +25 -23
- data/test/rubygems/test_gem_stub_specification.rb +39 -56
- data/test/rubygems/test_gem_text.rb +8 -3
- data/test/rubygems/test_gem_uninstaller.rb +269 -100
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +3 -5
- data/test/rubygems/test_gem_update_suggestion.rb +208 -0
- data/test/rubygems/test_gem_uri.rb +39 -0
- data/test/rubygems/test_gem_uri_formatter.rb +14 -16
- data/test/rubygems/test_gem_util.rb +46 -34
- data/test/rubygems/test_gem_validator.rb +12 -15
- data/test/rubygems/test_gem_version.rb +49 -34
- data/test/rubygems/test_gem_version_option.rb +16 -18
- data/test/rubygems/test_kernel.rb +61 -53
- data/test/rubygems/test_project_sanity.rb +20 -0
- data/test/rubygems/test_remote_fetch_error.rb +7 -8
- data/test/rubygems/test_require.rb +415 -121
- data/test/rubygems/test_rubygems.rb +74 -0
- data/{lib/rubygems/test_utilities.rb → test/rubygems/utilities.rb} +74 -50
- 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 +17 -0
- metadata +218 -244
- data/.rubocop.yml +0 -66
- data/.travis.yml +0 -38
- data/History.txt +0 -3965
- data/Rakefile +0 -372
- 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/dep_proxy.rb +0 -48
- data/bundler/lib/bundler/gem_remote_fetcher.rb +0 -43
- data/bundler/lib/bundler/gemdeps.rb +0 -29
- data/bundler/lib/bundler/psyched_yaml.rb +0 -37
- 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/gems.rb +0 -8
- data/bundler/lib/bundler/templates/newgem/test/test_helper.rb.tt +0 -4
- data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -7
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
- 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 -81
- 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 -136
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -223
- 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 -101
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -837
- 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 -12
- 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/bundler/lib/bundler/version_ranges.rb +0 -76
- data/bundler/man/bundle-gem.1 +0 -80
- data/bundler/man/bundle-gem.ronn +0 -78
- data/bundler/man/bundle-package.1 +0 -55
- data/lib/rubygems/psych_additions.rb +0 -10
- data/lib/rubygems/server.rb +0 -878
- 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/rubygems/syck_hack.rb +0 -77
- data/lib/ubygems.rb +0 -14
- data/test/rubygems/bogussources.rb +0 -9
- data/test/rubygems/data/null-type.gemspec.rz +0 -0
- data/test/rubygems/test_gem_server.rb +0 -607
- data/util/CL2notes +0 -55
- data/util/ci +0 -77
- data/util/create_certs.rb +0 -171
- 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
- /data/bundler/lib/bundler/{ssl_certs → man}/.document +0 -0
- /data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
- /data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
- /data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
- /data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
- /data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
- /data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
- /data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
- /data/{bundler/lib/bundler/ssl_certs/index.rubygems.org → lib/rubygems/ssl_certs/rubygems.org}/GlobalSignRootCA.pem +0 -0
data/lib/rubygems/installer.rb
CHANGED
@@ -5,13 +5,12 @@
|
|
5
5
|
# See LICENSE.txt for permissions.
|
6
6
|
#++
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
require 'fileutils'
|
8
|
+
require_relative "installer_uninstaller_utils"
|
9
|
+
require_relative "exceptions"
|
10
|
+
require_relative "deprecate"
|
11
|
+
require_relative "package"
|
12
|
+
require_relative "ext"
|
13
|
+
require_relative "user_interaction"
|
15
14
|
|
16
15
|
##
|
17
16
|
# The installer installs the files contained in the .gem into the Gem.home.
|
@@ -27,7 +26,6 @@ require 'fileutils'
|
|
27
26
|
# file. See Gem.pre_install and Gem.post_install for details.
|
28
27
|
|
29
28
|
class Gem::Installer
|
30
|
-
|
31
29
|
extend Gem::Deprecate
|
32
30
|
|
33
31
|
##
|
@@ -43,10 +41,7 @@ class Gem::Installer
|
|
43
41
|
|
44
42
|
include Gem::UserInteraction
|
45
43
|
|
46
|
-
|
47
|
-
# Filename of the gem being installed.
|
48
|
-
|
49
|
-
attr_reader :gem
|
44
|
+
include Gem::InstallerUninstallerUtils
|
50
45
|
|
51
46
|
##
|
52
47
|
# The directory a gem's executables will be installed into
|
@@ -65,22 +60,35 @@ class Gem::Installer
|
|
65
60
|
|
66
61
|
attr_reader :options
|
67
62
|
|
68
|
-
|
63
|
+
##
|
64
|
+
# The gem package instance.
|
65
|
+
|
66
|
+
attr_reader :package
|
69
67
|
|
70
|
-
@
|
68
|
+
@path_warning = false
|
71
69
|
|
72
70
|
class << self
|
71
|
+
#
|
72
|
+
# Changes in rubygems to lazily loading `rubygems/command` (in order to
|
73
|
+
# lazily load `optparse` as a side effect) affect bundler's custom installer
|
74
|
+
# which uses `Gem::Command` without requiring it (up until bundler 2.2.29).
|
75
|
+
# This hook is to compensate for that missing require.
|
76
|
+
#
|
77
|
+
# TODO: Remove when rubygems no longer supports running on bundler older
|
78
|
+
# than 2.2.29.
|
73
79
|
|
74
|
-
|
75
|
-
|
80
|
+
def inherited(klass)
|
81
|
+
if klass.name == "Bundler::RubyGemsGemInstaller"
|
82
|
+
require "rubygems/command"
|
83
|
+
end
|
76
84
|
|
77
|
-
|
85
|
+
super(klass)
|
86
|
+
end
|
78
87
|
|
79
88
|
##
|
80
|
-
#
|
81
|
-
# used to allow multiple threads to install Gems at the same time.
|
89
|
+
# True if we've warned about PATH not including Gem.bindir
|
82
90
|
|
83
|
-
|
91
|
+
attr_accessor :path_warning
|
84
92
|
|
85
93
|
##
|
86
94
|
# Overrides the executable format.
|
@@ -95,7 +103,6 @@ class Gem::Installer
|
|
95
103
|
def exec_format
|
96
104
|
@exec_format ||= Gem.default_exec_format
|
97
105
|
end
|
98
|
-
|
99
106
|
end
|
100
107
|
|
101
108
|
##
|
@@ -118,14 +125,16 @@ class Gem::Installer
|
|
118
125
|
@spec = spec
|
119
126
|
end
|
120
127
|
|
121
|
-
def extract_files(destination_dir, pattern =
|
128
|
+
def extract_files(destination_dir, pattern = "*")
|
122
129
|
FileUtils.mkdir_p destination_dir
|
123
130
|
|
124
131
|
spec.files.each do |file|
|
125
132
|
file = File.join destination_dir, file
|
126
133
|
next if File.exist? file
|
127
134
|
FileUtils.mkdir_p File.dirname(file)
|
128
|
-
File.open file,
|
135
|
+
File.open file, "w" do |fp|
|
136
|
+
fp.puts "# #{file}"
|
137
|
+
end
|
129
138
|
end
|
130
139
|
end
|
131
140
|
|
@@ -168,18 +177,10 @@ class Gem::Installer
|
|
168
177
|
# :post_install_message:: Print gem post install message if true
|
169
178
|
|
170
179
|
def initialize(package, options={})
|
171
|
-
require
|
180
|
+
require "fileutils"
|
172
181
|
|
173
182
|
@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
|
183
|
+
@package = package
|
183
184
|
|
184
185
|
process_options
|
185
186
|
|
@@ -187,11 +188,10 @@ class Gem::Installer
|
|
187
188
|
@package.prog_mode = options[:prog_mode]
|
188
189
|
@package.data_mode = options[:data_mode]
|
189
190
|
|
190
|
-
|
191
|
-
|
192
|
-
if options[:user_install] and not options[:unpack]
|
191
|
+
if options[:user_install]
|
193
192
|
@gem_home = Gem.user_dir
|
194
193
|
@bin_dir = Gem.bindir gem_home unless options[:bin_dir]
|
194
|
+
@plugins_dir = Gem.plugindir(gem_home)
|
195
195
|
check_that_user_bin_dir_is_in_path
|
196
196
|
end
|
197
197
|
end
|
@@ -201,8 +201,8 @@ class Gem::Installer
|
|
201
201
|
#
|
202
202
|
# If +@force+ is set +filename+ is overwritten.
|
203
203
|
#
|
204
|
-
# If +filename+ exists and is a RubyGems wrapper for different gem
|
205
|
-
# is consulted.
|
204
|
+
# If +filename+ exists and it is a RubyGems wrapper for a different gem, then
|
205
|
+
# the user is consulted.
|
206
206
|
#
|
207
207
|
# If +filename+ exists and +@bin_dir+ is Gem.default_bindir (/usr/local) the
|
208
208
|
# user is consulted.
|
@@ -219,13 +219,23 @@ class Gem::Installer
|
|
219
219
|
ruby_executable = false
|
220
220
|
existing = nil
|
221
221
|
|
222
|
-
File.open generated_bin,
|
223
|
-
|
222
|
+
File.open generated_bin, "rb" do |io|
|
223
|
+
line = io.gets
|
224
|
+
shebang = /^#!.*ruby/
|
225
|
+
|
226
|
+
if load_relative_enabled?
|
227
|
+
until line.nil? || line =~ shebang do
|
228
|
+
line = io.gets
|
229
|
+
end
|
230
|
+
end
|
231
|
+
|
232
|
+
next unless line =~ shebang
|
233
|
+
|
224
234
|
io.gets # blankline
|
225
235
|
|
226
236
|
# TODO detect a specially formatted comment instead of trying
|
227
|
-
# to
|
228
|
-
next unless io.gets
|
237
|
+
# to find a string inside Ruby code.
|
238
|
+
next unless io.gets.to_s.include?("This file was generated by RubyGems")
|
229
239
|
|
230
240
|
ruby_executable = true
|
231
241
|
existing = io.read.slice(%r{
|
@@ -241,12 +251,12 @@ class Gem::Installer
|
|
241
251
|
return if spec.name == existing
|
242
252
|
|
243
253
|
# somebody has written to RubyGems' directory, overwrite, too bad
|
244
|
-
return if Gem.default_bindir != @bin_dir
|
254
|
+
return if Gem.default_bindir != @bin_dir && !ruby_executable
|
245
255
|
|
246
256
|
question = "#{spec.name}'s executable \"#{filename}\" conflicts with ".dup
|
247
257
|
|
248
258
|
if ruby_executable
|
249
|
-
question << (existing ||
|
259
|
+
question << (existing || "an unknown executable")
|
250
260
|
|
251
261
|
return if ask_yes_no "#{question}\nOverwrite the executable?", false
|
252
262
|
|
@@ -275,8 +285,6 @@ class Gem::Installer
|
|
275
285
|
|
276
286
|
def spec
|
277
287
|
@package.spec
|
278
|
-
rescue Gem::Package::Error => e
|
279
|
-
raise Gem::InstallError, "invalid gem: #{e.message}"
|
280
288
|
end
|
281
289
|
|
282
290
|
##
|
@@ -293,8 +301,6 @@ class Gem::Installer
|
|
293
301
|
def install
|
294
302
|
pre_install_checks
|
295
303
|
|
296
|
-
FileUtils.rm_f File.join gem_home, 'specifications', spec.spec_name
|
297
|
-
|
298
304
|
run_pre_install_hooks
|
299
305
|
|
300
306
|
# Set loaded_from to ensure extension_dir is correct
|
@@ -320,8 +326,12 @@ class Gem::Installer
|
|
320
326
|
build_extensions
|
321
327
|
write_build_info_file
|
322
328
|
run_post_build_hooks
|
329
|
+
end
|
330
|
+
|
331
|
+
generate_bin
|
332
|
+
generate_plugins
|
323
333
|
|
324
|
-
|
334
|
+
unless @options[:install_as_default]
|
325
335
|
write_spec
|
326
336
|
write_cache_file
|
327
337
|
end
|
@@ -330,7 +340,7 @@ class Gem::Installer
|
|
330
340
|
|
331
341
|
say spec.post_install_message if options[:post_install_message] && !spec.post_install_message.nil?
|
332
342
|
|
333
|
-
Gem::
|
343
|
+
Gem::Specification.add_spec(spec)
|
334
344
|
|
335
345
|
run_post_install_hooks
|
336
346
|
|
@@ -345,7 +355,7 @@ class Gem::Installer
|
|
345
355
|
def run_pre_install_hooks # :nodoc:
|
346
356
|
Gem.pre_install_hooks.each do |hook|
|
347
357
|
if hook.call(self) == false
|
348
|
-
location = " at #{$1}" if hook.inspect =~
|
358
|
+
location = " at #{$1}" if hook.inspect =~ /[ @](.*:\d+)/
|
349
359
|
|
350
360
|
message = "pre-install hook#{location} failed for #{spec.full_name}"
|
351
361
|
raise Gem::InstallError, message
|
@@ -358,7 +368,7 @@ class Gem::Installer
|
|
358
368
|
if hook.call(self) == false
|
359
369
|
FileUtils.rm_rf gem_dir
|
360
370
|
|
361
|
-
location = " at #{$1}" if hook.inspect =~
|
371
|
+
location = " at #{$1}" if hook.inspect =~ /[ @](.*:\d+)/
|
362
372
|
|
363
373
|
message = "post-build hook#{location} failed for #{spec.full_name}"
|
364
374
|
raise Gem::InstallError, message
|
@@ -382,7 +392,7 @@ class Gem::Installer
|
|
382
392
|
specs = []
|
383
393
|
|
384
394
|
Gem::Util.glob_files_in_dir("*.gemspec", File.join(gem_home, "specifications")).each do |path|
|
385
|
-
spec = Gem::Specification.load path.
|
395
|
+
spec = Gem::Specification.load path.tap(&Gem::UNTAINT)
|
386
396
|
specs << spec if spec
|
387
397
|
end
|
388
398
|
|
@@ -408,10 +418,10 @@ class Gem::Installer
|
|
408
418
|
# True if the gems in the system satisfy +dependency+.
|
409
419
|
|
410
420
|
def installation_satisfies_dependency?(dependency)
|
411
|
-
return true if @options[:development]
|
412
|
-
return true if installed_specs.detect {
|
421
|
+
return true if @options[:development] && dependency.type == :development
|
422
|
+
return true if installed_specs.detect {|s| dependency.matches_spec? s }
|
413
423
|
return false if @only_install_dir
|
414
|
-
|
424
|
+
!dependency.matching_specs.empty?
|
415
425
|
end
|
416
426
|
|
417
427
|
##
|
@@ -421,6 +431,7 @@ class Gem::Installer
|
|
421
431
|
@gem_dir = directory
|
422
432
|
extract_files
|
423
433
|
end
|
434
|
+
rubygems_deprecate :unpack
|
424
435
|
|
425
436
|
##
|
426
437
|
# The location of the spec file that is installed.
|
@@ -435,7 +446,7 @@ class Gem::Installer
|
|
435
446
|
#
|
436
447
|
|
437
448
|
def default_spec_file
|
438
|
-
File.join
|
449
|
+
File.join gem_home, "specifications", "default", "#{spec.full_name}.gemspec"
|
439
450
|
end
|
440
451
|
|
441
452
|
##
|
@@ -443,13 +454,9 @@ class Gem::Installer
|
|
443
454
|
# specifications directory.
|
444
455
|
|
445
456
|
def write_spec
|
446
|
-
|
447
|
-
spec.installed_by_version = Gem.rubygems_version
|
457
|
+
spec.installed_by_version = Gem.rubygems_version
|
448
458
|
|
449
|
-
|
450
|
-
|
451
|
-
file.fsync rescue nil # for filesystems without fsync(2)
|
452
|
-
end
|
459
|
+
Gem.write_binary(spec_file, spec.to_ruby_for_cache)
|
453
460
|
end
|
454
461
|
|
455
462
|
##
|
@@ -457,9 +464,7 @@ class Gem::Installer
|
|
457
464
|
# specifications/default directory.
|
458
465
|
|
459
466
|
def write_default_spec
|
460
|
-
|
461
|
-
file.puts spec.to_ruby
|
462
|
-
end
|
467
|
+
Gem.write_binary(default_spec_file, spec.to_ruby)
|
463
468
|
end
|
464
469
|
|
465
470
|
##
|
@@ -467,9 +472,9 @@ class Gem::Installer
|
|
467
472
|
|
468
473
|
def generate_windows_script(filename, bindir)
|
469
474
|
if Gem.win_platform?
|
470
|
-
script_name = filename + ".bat"
|
475
|
+
script_name = formatted_program_filename(filename) + ".bat"
|
471
476
|
script_path = File.join bindir, File.basename(script_name)
|
472
|
-
File.open script_path,
|
477
|
+
File.open script_path, "w" do |file|
|
473
478
|
file.puts windows_stub_script(bindir, filename)
|
474
479
|
end
|
475
480
|
|
@@ -478,29 +483,22 @@ class Gem::Installer
|
|
478
483
|
end
|
479
484
|
|
480
485
|
def generate_bin # :nodoc:
|
481
|
-
return if spec.executables.nil?
|
486
|
+
return if spec.executables.nil? || spec.executables.empty?
|
482
487
|
|
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
|
488
|
+
ensure_writable_dir @bin_dir
|
490
489
|
|
491
490
|
spec.executables.each do |filename|
|
492
|
-
filename.
|
491
|
+
filename.tap(&Gem::UNTAINT)
|
493
492
|
bin_path = File.join gem_dir, spec.bindir, filename
|
494
|
-
|
495
|
-
unless File.exist? bin_path
|
496
|
-
# TODO change this to a more useful warning
|
497
|
-
warn "`#{bin_path}` does not exist, maybe `gem pristine #{spec.name}` will fix it?"
|
498
|
-
next
|
499
|
-
end
|
493
|
+
next unless File.exist? bin_path
|
500
494
|
|
501
495
|
mode = File.stat(bin_path).mode
|
502
496
|
dir_mode = options[:prog_mode] || (mode | 0111)
|
503
|
-
|
497
|
+
|
498
|
+
unless dir_mode == mode
|
499
|
+
require "fileutils"
|
500
|
+
FileUtils.chmod dir_mode, bin_path
|
501
|
+
end
|
504
502
|
|
505
503
|
check_executable_overwrite filename
|
506
504
|
|
@@ -509,7 +507,19 @@ class Gem::Installer
|
|
509
507
|
else
|
510
508
|
generate_bin_symlink filename, @bin_dir
|
511
509
|
end
|
510
|
+
end
|
511
|
+
end
|
512
|
+
|
513
|
+
def generate_plugins # :nodoc:
|
514
|
+
latest = Gem::Specification.latest_spec_for(spec.name)
|
515
|
+
return if latest && latest.version > spec.version
|
512
516
|
|
517
|
+
ensure_writable_dir @plugins_dir
|
518
|
+
|
519
|
+
if spec.plugins.empty?
|
520
|
+
remove_plugins_for(spec, @plugins_dir)
|
521
|
+
else
|
522
|
+
regenerate_plugins_for(spec, @plugins_dir)
|
513
523
|
end
|
514
524
|
end
|
515
525
|
|
@@ -523,9 +533,10 @@ class Gem::Installer
|
|
523
533
|
def generate_bin_script(filename, bindir)
|
524
534
|
bin_script_path = File.join bindir, formatted_program_filename(filename)
|
525
535
|
|
536
|
+
require "fileutils"
|
526
537
|
FileUtils.rm_f bin_script_path # prior install may have been --no-wrappers
|
527
538
|
|
528
|
-
File.open bin_script_path,
|
539
|
+
File.open bin_script_path, "wb", 0755 do |file|
|
529
540
|
file.print app_script_text(filename)
|
530
541
|
file.chmod(options[:prog_mode] || 0755)
|
531
542
|
end
|
@@ -546,7 +557,7 @@ class Gem::Installer
|
|
546
557
|
if File.exist? dst
|
547
558
|
if File.symlink? dst
|
548
559
|
link = File.readlink(dst).split File::SEPARATOR
|
549
|
-
cur_version = Gem::Version.create(link[-3].sub(/^.*-/,
|
560
|
+
cur_version = Gem::Version.create(link[-3].sub(/^.*-/, ""))
|
550
561
|
return if spec.version < cur_version
|
551
562
|
end
|
552
563
|
File.unlink dst
|
@@ -574,11 +585,10 @@ class Gem::Installer
|
|
574
585
|
#
|
575
586
|
|
576
587
|
def shebang(bin_file_name)
|
577
|
-
ruby_name = RbConfig::CONFIG['ruby_install_name'] if @env_shebang
|
578
588
|
path = File.join gem_dir, spec.bindir, bin_file_name
|
579
|
-
first_line = File.open(path, "rb") {|file| file.gets}
|
589
|
+
first_line = File.open(path, "rb") {|file| file.gets } || ""
|
580
590
|
|
581
|
-
if
|
591
|
+
if first_line.start_with?("#!")
|
582
592
|
# Preserve extra words on shebang line, like "-w". Thanks RPA.
|
583
593
|
shebang = first_line.sub(/\A\#!.*?ruby\S*((\s+\S+)+)/, "#!#{Gem.ruby}")
|
584
594
|
opts = $1
|
@@ -587,7 +597,7 @@ class Gem::Installer
|
|
587
597
|
|
588
598
|
if which = Gem.configuration[:custom_shebang]
|
589
599
|
# replace bin_file_name with "ruby" to avoid endless loops
|
590
|
-
which = which.gsub(/ #{bin_file_name}$/," #{
|
600
|
+
which = which.gsub(/ #{bin_file_name}$/," #{ruby_install_name}")
|
591
601
|
|
592
602
|
which = which.gsub(/\$(\w+)/) do
|
593
603
|
case $1
|
@@ -603,14 +613,12 @@ class Gem::Installer
|
|
603
613
|
end
|
604
614
|
|
605
615
|
"#!#{which}"
|
606
|
-
elsif
|
607
|
-
"#!#{Gem.ruby}#{opts}"
|
608
|
-
elsif opts
|
609
|
-
"#!/bin/sh\n'exec' #{ruby_name.dump} '-x' \"$0\" \"$@\"\n#{shebang}"
|
610
|
-
else
|
616
|
+
elsif @env_shebang
|
611
617
|
# Create a plain shebang line.
|
612
618
|
@env_path ||= ENV_PATHS.find {|env_path| File.executable? env_path }
|
613
|
-
"#!#{@env_path} #{
|
619
|
+
"#!#{@env_path} #{ruby_install_name}"
|
620
|
+
else
|
621
|
+
"#{bash_prolog_script}#!#{Gem.ruby}#{opts}"
|
614
622
|
end
|
615
623
|
end
|
616
624
|
|
@@ -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
|
@@ -662,17 +649,18 @@ class Gem::Installer
|
|
662
649
|
|
663
650
|
def process_options # :nodoc:
|
664
651
|
@options = {
|
665
|
-
:bin_dir
|
666
|
-
:env_shebang
|
667
|
-
:force
|
652
|
+
:bin_dir => nil,
|
653
|
+
:env_shebang => false,
|
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]
|
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
|
-
|
690
|
+
user_bin_dir = user_bin_dir.tr(File::ALT_SEPARATOR, File::SEPARATOR) if File::ALT_SEPARATOR
|
691
|
+
|
692
|
+
path = ENV["PATH"]
|
693
|
+
path = path.tr(File::ALT_SEPARATOR, File::SEPARATOR) if File::ALT_SEPARATOR
|
703
694
|
|
704
|
-
path = ENV['PATH']
|
705
695
|
if Gem.win_platform?
|
706
696
|
path = path.downcase
|
707
697
|
user_bin_dir = user_bin_dir.downcase
|
@@ -710,19 +700,16 @@ class Gem::Installer
|
|
710
700
|
path = path.split(File::PATH_SEPARATOR)
|
711
701
|
|
712
702
|
unless path.include? user_bin_dir
|
713
|
-
unless !Gem.win_platform? && (path.include? user_bin_dir.sub(ENV[
|
714
|
-
|
715
|
-
|
716
|
-
self.class.path_warning = true
|
717
|
-
end
|
703
|
+
unless !Gem.win_platform? && (path.include? user_bin_dir.sub(ENV["HOME"], "~"))
|
704
|
+
alert_warning "You don't have #{user_bin_dir} in your PATH,\n\t gem executables will not run."
|
705
|
+
self.class.path_warning = true
|
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
|
@@ -730,19 +717,27 @@ class Gem::Installer
|
|
730
717
|
raise Gem::InstallError, "#{spec} has an invalid name"
|
731
718
|
end
|
732
719
|
|
733
|
-
if spec.raw_require_paths.any?{|path| path =~ /\R/ }
|
720
|
+
if spec.raw_require_paths.any? {|path| path =~ /\R/ }
|
734
721
|
raise Gem::InstallError, "#{spec} has an invalid require_paths"
|
735
722
|
end
|
736
723
|
|
737
|
-
if spec.extensions.any?{|ext| ext =~ /\R/ }
|
724
|
+
if spec.extensions.any? {|ext| ext =~ /\R/ }
|
738
725
|
raise Gem::InstallError, "#{spec} has an invalid extensions"
|
739
726
|
end
|
740
727
|
|
728
|
+
if spec.platform.to_s =~ /\R/
|
729
|
+
raise Gem::InstallError, "#{spec.platform} is an invalid platform"
|
730
|
+
end
|
731
|
+
|
741
732
|
unless spec.specification_version.to_s =~ /\A\d+\z/
|
742
733
|
raise Gem::InstallError, "#{spec} has an invalid specification_version"
|
743
734
|
end
|
744
735
|
|
745
|
-
if spec.dependencies.any? {|dep| dep.type
|
736
|
+
if spec.dependencies.any? {|dep| dep.type != :runtime && dep.type != :development }
|
737
|
+
raise Gem::InstallError, "#{spec} has an invalid dependencies"
|
738
|
+
end
|
739
|
+
|
740
|
+
if spec.dependencies.any? {|dep| dep.name =~ /(?:\R|[<>])/ }
|
746
741
|
raise Gem::InstallError, "#{spec} has an invalid dependencies"
|
747
742
|
end
|
748
743
|
end
|
@@ -763,14 +758,14 @@ class Gem::Installer
|
|
763
758
|
#
|
764
759
|
|
765
760
|
require 'rubygems'
|
766
|
-
|
767
|
-
version = "#{Gem::Requirement.
|
761
|
+
#{gemdeps_load(spec.name)}
|
762
|
+
version = "#{Gem::Requirement.default_prerelease}"
|
768
763
|
|
769
764
|
str = ARGV.first
|
770
765
|
if str
|
771
766
|
str = str.b[/\\A_(.*)_\\z/, 1]
|
772
767
|
if str and Gem::Version.correct?(str)
|
773
|
-
|
768
|
+
#{explicit_version_requirement(spec.name)}
|
774
769
|
ARGV.shift
|
775
770
|
end
|
776
771
|
end
|
@@ -784,11 +779,29 @@ end
|
|
784
779
|
TEXT
|
785
780
|
end
|
786
781
|
|
782
|
+
def gemdeps_load(name)
|
783
|
+
return "" if name == "bundler"
|
784
|
+
|
785
|
+
<<-TEXT
|
786
|
+
|
787
|
+
Gem.use_gemdeps
|
788
|
+
TEXT
|
789
|
+
end
|
790
|
+
|
791
|
+
def explicit_version_requirement(name)
|
792
|
+
code = "version = str"
|
793
|
+
return code unless name == "bundler"
|
794
|
+
|
795
|
+
code += <<-TEXT
|
796
|
+
|
797
|
+
ENV['BUNDLER_VERSION'] = str
|
798
|
+
TEXT
|
799
|
+
end
|
800
|
+
|
787
801
|
##
|
788
802
|
# return the stub script text used to launch the true Ruby script
|
789
803
|
|
790
804
|
def windows_stub_script(bindir, bin_file_name)
|
791
|
-
rb_config = RbConfig::CONFIG
|
792
805
|
rb_topdir = RbConfig::TOPDIR || File.dirname(rb_config["bindir"])
|
793
806
|
|
794
807
|
# get ruby executable file name from RbConfig
|
@@ -796,27 +809,27 @@ TEXT
|
|
796
809
|
ruby_exe = "ruby.exe" if ruby_exe.empty?
|
797
810
|
|
798
811
|
if File.exist?(File.join bindir, ruby_exe)
|
799
|
-
# stub & ruby.exe
|
812
|
+
# stub & ruby.exe within same folder. Portable
|
800
813
|
<<-TEXT
|
801
814
|
@ECHO OFF
|
802
|
-
@"%~
|
815
|
+
@"%~dp0#{ruby_exe}" "%~dpn0" %*
|
803
816
|
TEXT
|
804
817
|
elsif bindir.downcase.start_with? rb_topdir.downcase
|
805
818
|
# stub within ruby folder, but not standard bin. Portable
|
806
|
-
require
|
819
|
+
require "pathname"
|
807
820
|
from = Pathname.new bindir
|
808
821
|
to = Pathname.new "#{rb_topdir}/bin"
|
809
822
|
rel = to.relative_path_from from
|
810
823
|
<<-TEXT
|
811
824
|
@ECHO OFF
|
812
|
-
@"%~dp0#{rel}
|
825
|
+
@"%~dp0#{rel}/#{ruby_exe}" "%~dpn0" %*
|
813
826
|
TEXT
|
814
827
|
else
|
815
828
|
# outside ruby folder, maybe -user-install or bundler. Portable, but ruby
|
816
829
|
# is dependent on PATH
|
817
830
|
<<-TEXT
|
818
831
|
@ECHO OFF
|
819
|
-
|
832
|
+
@#{ruby_exe} "%~dpn0" %*
|
820
833
|
TEXT
|
821
834
|
end
|
822
835
|
end
|
@@ -825,23 +838,11 @@ TEXT
|
|
825
838
|
# configure scripts and rakefiles or mkrf_conf files.
|
826
839
|
|
827
840
|
def build_extensions
|
828
|
-
builder = Gem::Ext::Builder.new spec,
|
841
|
+
builder = Gem::Ext::Builder.new spec, build_args
|
829
842
|
|
830
843
|
builder.build_extensions
|
831
844
|
end
|
832
845
|
|
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
846
|
##
|
846
847
|
# Reads the file index and extracts each file into the gem directory.
|
847
848
|
#
|
@@ -857,7 +858,7 @@ TEXT
|
|
857
858
|
# without the full gem installed.
|
858
859
|
|
859
860
|
def extract_bin
|
860
|
-
@package.extract_files gem_dir, "
|
861
|
+
@package.extract_files gem_dir, "#{spec.bindir}/*"
|
861
862
|
end
|
862
863
|
|
863
864
|
##
|
@@ -881,6 +882,13 @@ TEXT
|
|
881
882
|
gem_dir.to_s
|
882
883
|
end
|
883
884
|
|
885
|
+
##
|
886
|
+
# Filename of the gem being installed.
|
887
|
+
|
888
|
+
def gem
|
889
|
+
@package.gem.path
|
890
|
+
end
|
891
|
+
|
884
892
|
##
|
885
893
|
# Performs various checks before installing the gem such as the install
|
886
894
|
# repository is writable and its directories exist, required Ruby and
|
@@ -891,7 +899,7 @@ TEXT
|
|
891
899
|
# The dependent check will be skipped if the install is ignoring dependencies.
|
892
900
|
|
893
901
|
def pre_install_checks
|
894
|
-
verify_gem_home
|
902
|
+
verify_gem_home
|
895
903
|
|
896
904
|
# The name and require_paths must be verified first, since it could contain
|
897
905
|
# ruby code that would be eval'ed in #ensure_loadable_spec
|
@@ -907,8 +915,6 @@ TEXT
|
|
907
915
|
|
908
916
|
return true if @force
|
909
917
|
|
910
|
-
ensure_required_ruby_version_met
|
911
|
-
ensure_required_rubygems_version_met
|
912
918
|
ensure_dependencies_met unless @ignore_dependencies
|
913
919
|
|
914
920
|
true
|
@@ -919,17 +925,17 @@ TEXT
|
|
919
925
|
# extensions.
|
920
926
|
|
921
927
|
def write_build_info_file
|
922
|
-
return if
|
928
|
+
return if build_args.empty?
|
923
929
|
|
924
|
-
build_info_dir = File.join gem_home,
|
930
|
+
build_info_dir = File.join gem_home, "build_info"
|
925
931
|
|
926
932
|
dir_mode = options[:dir_mode]
|
927
933
|
FileUtils.mkdir_p build_info_dir, :mode => dir_mode && 0755
|
928
934
|
|
929
935
|
build_info_file = File.join build_info_dir, "#{spec.full_name}.info"
|
930
936
|
|
931
|
-
File.open build_info_file,
|
932
|
-
|
937
|
+
File.open build_info_file, "w" do |io|
|
938
|
+
build_args.each do |arg|
|
933
939
|
io.puts arg
|
934
940
|
end
|
935
941
|
end
|
@@ -941,8 +947,59 @@ TEXT
|
|
941
947
|
# Writes the .gem file to the cache directory
|
942
948
|
|
943
949
|
def write_cache_file
|
944
|
-
cache_file = File.join gem_home,
|
950
|
+
cache_file = File.join gem_home, "cache", spec.file_name
|
945
951
|
@package.copy_to cache_file
|
946
952
|
end
|
947
953
|
|
954
|
+
def ensure_writable_dir(dir) # :nodoc:
|
955
|
+
begin
|
956
|
+
Dir.mkdir dir, *[options[:dir_mode] && 0755].compact
|
957
|
+
rescue SystemCallError
|
958
|
+
raise unless File.directory? dir
|
959
|
+
end
|
960
|
+
|
961
|
+
raise Gem::FilePermissionError.new(dir) unless File.writable? dir
|
962
|
+
end
|
963
|
+
|
964
|
+
private
|
965
|
+
|
966
|
+
def build_args
|
967
|
+
@build_args ||= begin
|
968
|
+
require_relative "command"
|
969
|
+
Gem::Command.build_args
|
970
|
+
end
|
971
|
+
end
|
972
|
+
|
973
|
+
def rb_config
|
974
|
+
RbConfig::CONFIG
|
975
|
+
end
|
976
|
+
|
977
|
+
def ruby_install_name
|
978
|
+
rb_config["ruby_install_name"]
|
979
|
+
end
|
980
|
+
|
981
|
+
def load_relative_enabled?
|
982
|
+
rb_config["LIBRUBY_RELATIVE"] == "yes"
|
983
|
+
end
|
984
|
+
|
985
|
+
def bash_prolog_script
|
986
|
+
if load_relative_enabled?
|
987
|
+
script = +<<~EOS
|
988
|
+
bindir="${0%/*}"
|
989
|
+
EOS
|
990
|
+
|
991
|
+
script << %Q(exec "$bindir/#{ruby_install_name}" "-x" "$0" "$@"\n)
|
992
|
+
|
993
|
+
<<~EOS
|
994
|
+
#!/bin/sh
|
995
|
+
# -*- ruby -*-
|
996
|
+
_=_\\
|
997
|
+
=begin
|
998
|
+
#{script.chomp}
|
999
|
+
=end
|
1000
|
+
EOS
|
1001
|
+
else
|
1002
|
+
""
|
1003
|
+
end
|
1004
|
+
end
|
948
1005
|
end
|