rubygems-update 3.3.27 → 3.4.0
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 +29 -0
- data/CONTRIBUTING.md +24 -1
- data/Manifest.txt +30 -27
- data/POLICIES.md +10 -8
- data/README.md +2 -2
- data/bin/gem +1 -4
- data/bin/update_rubygems +1 -1
- data/bundler/CHANGELOG.md +48 -0
- data/bundler/README.md +2 -2
- data/bundler/bundler.gemspec +2 -2
- data/bundler/exe/bundle +1 -4
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/cli/add.rb +1 -1
- data/bundler/lib/bundler/cli/check.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +1 -0
- data/bundler/lib/bundler/cli/console.rb +2 -2
- data/bundler/lib/bundler/cli/doctor.rb +4 -6
- data/bundler/lib/bundler/cli/gem.rb +62 -40
- data/bundler/lib/bundler/cli/install.rb +2 -3
- data/bundler/lib/bundler/cli/lock.rb +8 -5
- data/bundler/lib/bundler/cli/outdated.rb +1 -3
- data/bundler/lib/bundler/cli/viz.rb +1 -1
- data/bundler/lib/bundler/cli.rb +43 -2
- data/bundler/lib/bundler/compact_index_client/cache.rb +1 -1
- data/bundler/lib/bundler/compact_index_client/updater.rb +40 -39
- data/bundler/lib/bundler/constants.rb +1 -1
- data/bundler/lib/bundler/definition.rb +61 -31
- data/bundler/lib/bundler/dependency.rb +12 -11
- data/bundler/lib/bundler/digest.rb +1 -1
- data/bundler/lib/bundler/dsl.rb +1 -1
- data/bundler/lib/bundler/env.rb +1 -1
- data/bundler/lib/bundler/environment_preserver.rb +1 -0
- data/bundler/lib/bundler/errors.rb +1 -11
- data/bundler/lib/bundler/fetcher/compact_index.rb +9 -11
- data/bundler/lib/bundler/fetcher/dependency.rb +1 -1
- data/bundler/lib/bundler/fetcher/downloader.rb +2 -5
- data/bundler/lib/bundler/fetcher.rb +2 -6
- data/bundler/lib/bundler/force_platform.rb +18 -0
- data/bundler/lib/bundler/friendly_errors.rb +0 -3
- data/bundler/lib/bundler/gem_version_promoter.rb +52 -86
- data/bundler/lib/bundler/graph.rb +3 -3
- data/bundler/lib/bundler/index.rb +5 -18
- data/bundler/lib/bundler/injector.rb +1 -1
- data/bundler/lib/bundler/inline.rb +2 -2
- data/bundler/lib/bundler/installer/parallel_installer.rb +0 -31
- data/bundler/lib/bundler/installer.rb +6 -16
- data/bundler/lib/bundler/lazy_specification.rb +37 -33
- data/bundler/lib/bundler/lockfile_parser.rb +5 -5
- data/bundler/lib/bundler/man/bundle-add.1 +1 -1
- data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
- data/bundler/lib/bundler/man/bundle-cache.1 +1 -1
- data/bundler/lib/bundler/man/bundle-check.1 +1 -1
- data/bundler/lib/bundler/man/bundle-clean.1 +1 -1
- data/bundler/lib/bundler/man/bundle-config.1 +1 -1
- data/bundler/lib/bundler/man/bundle-console.1 +1 -1
- data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
- data/bundler/lib/bundler/man/bundle-exec.1 +1 -1
- data/bundler/lib/bundler/man/bundle-gem.1 +27 -37
- data/bundler/lib/bundler/man/bundle-gem.1.ronn +5 -5
- data/bundler/lib/bundler/man/bundle-help.1 +1 -1
- data/bundler/lib/bundler/man/bundle-info.1 +1 -1
- data/bundler/lib/bundler/man/bundle-init.1 +1 -1
- data/bundler/lib/bundler/man/bundle-inject.1 +1 -1
- data/bundler/lib/bundler/man/bundle-install.1 +1 -30
- data/bundler/lib/bundler/man/bundle-install.1.ronn +0 -29
- 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 +1 -1
- data/bundler/lib/bundler/man/bundle-outdated.1 +1 -1
- data/bundler/lib/bundler/man/bundle-platform.1 +2 -2
- data/bundler/lib/bundler/man/bundle-platform.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-plugin.1 +1 -1
- 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 +1 -1
- data/bundler/lib/bundler/man/bundle-version.1 +1 -1
- data/bundler/lib/bundler/man/bundle-viz.1 +1 -1
- data/bundler/lib/bundler/man/bundle.1 +1 -1
- data/bundler/lib/bundler/man/gemfile.5 +1 -1
- data/bundler/lib/bundler/mirror.rb +5 -7
- data/bundler/lib/bundler/plugin/index.rb +4 -4
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +0 -4
- data/bundler/lib/bundler/resolver/base.rb +7 -11
- data/bundler/lib/bundler/resolver/candidate.rb +92 -0
- data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
- data/bundler/lib/bundler/resolver/package.rb +63 -0
- data/bundler/lib/bundler/resolver/root.rb +25 -0
- data/bundler/lib/bundler/resolver/spec_group.rb +26 -36
- data/bundler/lib/bundler/resolver.rb +285 -277
- data/bundler/lib/bundler/rubygems_ext.rb +11 -6
- data/bundler/lib/bundler/rubygems_gem_installer.rb +4 -2
- data/bundler/lib/bundler/rubygems_integration.rb +1 -9
- data/bundler/lib/bundler/runtime.rb +1 -5
- data/bundler/lib/bundler/settings.rb +0 -6
- data/bundler/lib/bundler/shared_helpers.rb +1 -0
- data/bundler/lib/bundler/source/git/git_proxy.rb +190 -67
- data/bundler/lib/bundler/source/git.rb +15 -17
- data/bundler/lib/bundler/source/metadata.rb +0 -1
- data/bundler/lib/bundler/source/path/installer.rb +1 -22
- data/bundler/lib/bundler/source/path.rb +5 -5
- data/bundler/lib/bundler/source/rubygems.rb +13 -67
- data/bundler/lib/bundler/source_list.rb +8 -2
- data/bundler/lib/bundler/spec_set.rb +7 -9
- data/bundler/lib/bundler/templates/Executable +1 -1
- data/bundler/lib/bundler/templates/Executable.bundler +4 -9
- data/bundler/lib/bundler/templates/Executable.standalone +2 -0
- data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/README.md.tt +6 -4
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +2 -1
- 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 +10 -0
- data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +8 -0
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +8 -2
- data/bundler/lib/bundler/ui/shell.rb +35 -12
- data/bundler/lib/bundler/ui/silent.rb +21 -5
- 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 +151 -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 +53 -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 +124 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +409 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +240 -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/shell/basic.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +64 -16
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +27 -7
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +40 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +13 -7
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +10 -5
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +1 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +3 -2
- data/bundler/lib/bundler/vendored_persistent.rb +1 -33
- data/bundler/lib/bundler/{vendored_tmpdir.rb → vendored_pub_grub.rb} +1 -1
- data/bundler/lib/bundler/version.rb +5 -1
- data/bundler/lib/bundler/worker.rb +5 -7
- data/bundler/lib/bundler.rb +20 -64
- data/lib/rubygems/command_manager.rb +2 -2
- data/lib/rubygems/commands/fetch_command.rb +1 -1
- data/lib/rubygems/commands/install_command.rb +7 -3
- data/lib/rubygems/commands/rdoc_command.rb +3 -2
- data/lib/rubygems/commands/setup_command.rb +2 -2
- data/lib/rubygems/commands/unpack_command.rb +1 -1
- data/lib/rubygems/commands/update_command.rb +1 -7
- data/lib/rubygems/config_file.rb +33 -0
- data/lib/rubygems/core_ext/kernel_warn.rb +1 -2
- data/lib/rubygems/defaults.rb +15 -1
- data/lib/rubygems/dependency.rb +4 -1
- data/lib/rubygems/dependency_installer.rb +24 -24
- data/lib/rubygems/exceptions.rb +1 -3
- data/lib/rubygems/ext/builder.rb +3 -3
- data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +9 -5
- data/lib/rubygems/ext/cargo_builder.rb +15 -20
- data/lib/rubygems/ext/ext_conf_builder.rb +2 -0
- data/lib/rubygems/indexer.rb +1 -1
- data/lib/rubygems/installer.rb +5 -5
- data/lib/rubygems/optparse/lib/optparse.rb +20 -15
- data/lib/rubygems/package/tar_header.rb +11 -11
- data/lib/rubygems/platform.rb +0 -2
- data/lib/rubygems/request_set/gem_dependency_api.rb +104 -104
- data/lib/rubygems/requirement.rb +7 -7
- data/lib/rubygems/resolver/installer_set.rb +1 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +1 -1
- 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/security/policies.rb +40 -40
- data/lib/rubygems/security/trust_dir.rb +1 -1
- data/lib/rubygems/security.rb +3 -16
- data/lib/rubygems/source.rb +2 -2
- data/lib/rubygems/specification.rb +37 -49
- data/lib/rubygems/specification_policy.rb +14 -0
- data/lib/rubygems/stub_specification.rb +2 -2
- data/lib/rubygems/text.rb +1 -1
- data/lib/rubygems/tsort/lib/tsort.rb +308 -310
- data/lib/rubygems/update_suggestion.rb +69 -0
- data/lib/rubygems/util.rb +1 -5
- data/lib/rubygems/validator.rb +1 -1
- data/lib/rubygems.rb +8 -3
- data/rubygems-update.gemspec +2 -2
- data/test/rubygems/helper.rb +7 -3
- data/test/rubygems/test_bundled_ca.rb +1 -1
- data/test/rubygems/test_exit.rb +6 -0
- data/test/rubygems/test_gem.rb +4 -9
- data/test/rubygems/test_gem_bundler_version_finder.rb +2 -1
- data/test/rubygems/test_gem_command_manager.rb +1 -1
- data/test/rubygems/test_gem_commands_install_command.rb +19 -0
- data/test/rubygems/test_gem_commands_setup_command.rb +1 -8
- data/test/rubygems/test_gem_commands_update_command.rb +6 -6
- data/test/rubygems/test_gem_config_file.rb +1 -1
- data/test/rubygems/test_gem_dependency.rb +2 -0
- data/test/rubygems/test_gem_ext_builder.rb +3 -3
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.lock +22 -32
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.toml +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +22 -32
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +12 -0
- data/test/rubygems/test_gem_ext_cargo_builder.rb +22 -28
- data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +16 -16
- data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +0 -10
- data/test/rubygems/test_gem_indexer.rb +39 -20
- data/test/rubygems/test_gem_installer.rb +68 -2
- data/test/rubygems/test_gem_package_tar_header.rb +13 -13
- data/test/rubygems/test_gem_platform.rb +59 -60
- data/test/rubygems/test_gem_remote_fetcher.rb +4 -4
- data/test/rubygems/test_gem_request_set.rb +2 -2
- data/test/rubygems/test_gem_requirement.rb +1 -1
- data/test/rubygems/test_gem_resolver_api_set.rb +12 -12
- data/test/rubygems/test_gem_resolver_api_specification.rb +19 -19
- data/test/rubygems/test_gem_resolver_git_specification.rb +1 -1
- data/test/rubygems/test_gem_security_policy.rb +10 -10
- data/test/rubygems/test_gem_security_trust_dir.rb +2 -2
- data/test/rubygems/test_gem_specification.rb +50 -37
- data/test/rubygems/test_gem_uninstaller.rb +1 -1
- data/test/rubygems/test_gem_update_suggestion.rb +208 -0
- data/test/rubygems/test_kernel.rb +10 -8
- data/test/rubygems/test_require.rb +70 -55
- metadata +34 -31
- 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 -149
- 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/vendored_molinillo.rb +0 -4
- data/bundler/lib/bundler/version_ranges.rb +0 -122
- /data/bundler/lib/bundler/templates/newgem/ext/newgem/{extconf.rb.tt → extconf-c.rb.tt} +0 -0
|
@@ -94,9 +94,8 @@ module Bundler
|
|
|
94
94
|
|
|
95
95
|
def warn_if_root
|
|
96
96
|
return if Bundler.settings[:silence_root_warning] || Gem.win_platform? || !Process.uid.zero?
|
|
97
|
-
Bundler.ui.warn "Don't run Bundler as root.
|
|
98
|
-
|
|
99
|
-
"application for all non-root users on this machine.", :wrap => true
|
|
97
|
+
Bundler.ui.warn "Don't run Bundler as root. Installing your bundle as root " \
|
|
98
|
+
"will break this application for all non-root users on this machine.", :wrap => true
|
|
100
99
|
end
|
|
101
100
|
|
|
102
101
|
def dependencies_count_for(definition)
|
|
@@ -15,19 +15,22 @@ module Bundler
|
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
print = options[:print]
|
|
18
|
-
|
|
19
|
-
Bundler.ui =
|
|
18
|
+
previous_ui_level = Bundler.ui.level
|
|
19
|
+
Bundler.ui.level = "silent" if print
|
|
20
20
|
|
|
21
21
|
Bundler::Fetcher.disable_endpoint = options["full-index"]
|
|
22
22
|
|
|
23
23
|
update = options[:update]
|
|
24
24
|
conservative = options[:conservative]
|
|
25
|
+
bundler = options[:bundler]
|
|
25
26
|
|
|
26
27
|
if update.is_a?(Array) # unlocking specific gems
|
|
27
28
|
Bundler::CLI::Common.ensure_all_gems_in_lockfile!(update)
|
|
28
29
|
update = { :gems => update, :conservative => conservative }
|
|
29
|
-
elsif update
|
|
30
|
-
update = { :conservative => conservative }
|
|
30
|
+
elsif update && conservative
|
|
31
|
+
update = { :conservative => conservative }
|
|
32
|
+
elsif update && bundler
|
|
33
|
+
update = { :bundler => bundler }
|
|
31
34
|
end
|
|
32
35
|
definition = Bundler.definition(update)
|
|
33
36
|
|
|
@@ -61,7 +64,7 @@ module Bundler
|
|
|
61
64
|
definition.lock(file)
|
|
62
65
|
end
|
|
63
66
|
|
|
64
|
-
Bundler.ui =
|
|
67
|
+
Bundler.ui.level = previous_ui_level
|
|
65
68
|
end
|
|
66
69
|
end
|
|
67
70
|
end
|
|
@@ -23,7 +23,7 @@ module Bundler
|
|
|
23
23
|
Bundler.ui.warn "Make sure you have the graphviz ruby gem. You can install it with:"
|
|
24
24
|
Bundler.ui.warn "`gem install ruby-graphviz`"
|
|
25
25
|
rescue StandardError => e
|
|
26
|
-
raise unless e.message
|
|
26
|
+
raise unless e.message.to_s.include?("GraphViz not installed or dot not in PATH")
|
|
27
27
|
Bundler.ui.error e.message
|
|
28
28
|
Bundler.ui.warn "Please install GraphViz. On a Mac with Homebrew, you can run `brew install graphviz`."
|
|
29
29
|
end
|
data/bundler/lib/bundler/cli.rb
CHANGED
|
@@ -10,6 +10,7 @@ module Bundler
|
|
|
10
10
|
|
|
11
11
|
AUTO_INSTALL_CMDS = %w[show binstubs outdated exec open console licenses clean].freeze
|
|
12
12
|
PARSEABLE_COMMANDS = %w[check config help exec platform show version].freeze
|
|
13
|
+
EXTENSIONS = ["c", "rust"].freeze
|
|
13
14
|
|
|
14
15
|
COMMAND_ALIASES = {
|
|
15
16
|
"check" => "c",
|
|
@@ -22,6 +23,8 @@ module Bundler
|
|
|
22
23
|
}.freeze
|
|
23
24
|
|
|
24
25
|
def self.start(*)
|
|
26
|
+
check_deprecated_ext_option(ARGV) if ARGV.include?("--ext")
|
|
27
|
+
|
|
25
28
|
super
|
|
26
29
|
ensure
|
|
27
30
|
Bundler::SharedHelpers.print_major_deprecations!
|
|
@@ -292,6 +295,8 @@ module Bundler
|
|
|
292
295
|
"Prefer updating only to next minor version"
|
|
293
296
|
method_option "major", :type => :boolean, :banner =>
|
|
294
297
|
"Prefer updating to next major version (default)"
|
|
298
|
+
method_option "pre", :type => :boolean, :banner =>
|
|
299
|
+
"Always choose the highest allowed version when updating gems, regardless of prerelease status"
|
|
295
300
|
method_option "strict", :type => :boolean, :banner =>
|
|
296
301
|
"Do not allow any gem to be updated past latest --patch | --minor | --major"
|
|
297
302
|
method_option "conservative", :type => :boolean, :banner =>
|
|
@@ -574,7 +579,7 @@ module Bundler
|
|
|
574
579
|
method_option :edit, :type => :string, :aliases => "-e", :required => false, :banner => "EDITOR",
|
|
575
580
|
:lazy_default => [ENV["BUNDLER_EDITOR"], ENV["VISUAL"], ENV["EDITOR"]].find {|e| !e.nil? && !e.empty? },
|
|
576
581
|
:desc => "Open generated gemspec in the specified editor (defaults to $EDITOR or $BUNDLER_EDITOR)"
|
|
577
|
-
method_option :ext, :type => :
|
|
582
|
+
method_option :ext, :type => :string, :desc => "Generate the boilerplate for C extension code.", :enum => EXTENSIONS
|
|
578
583
|
method_option :git, :type => :boolean, :default => true, :desc => "Initialize a git repo inside your library."
|
|
579
584
|
method_option :mit, :type => :boolean, :desc => "Generate an MIT license file. Set a default with `bundle config set --global gem.mit true`."
|
|
580
585
|
method_option :rubocop, :type => :boolean, :desc => "Add rubocop to the generated Rakefile and gemspec. Set a default with `bundle config set --global gem.rubocop true`."
|
|
@@ -582,7 +587,7 @@ module Bundler
|
|
|
582
587
|
method_option :test, :type => :string, :lazy_default => Bundler.settings["gem.test"] || "", :aliases => "-t", :banner => "Use the specified test framework for your library",
|
|
583
588
|
:desc => "Generate a test directory for your library, either rspec, minitest or test-unit. Set a default with `bundle config set --global gem.test (rspec|minitest|test-unit)`."
|
|
584
589
|
method_option :ci, :type => :string, :lazy_default => Bundler.settings["gem.ci"] || "",
|
|
585
|
-
:desc => "Generate CI configuration, either GitHub Actions,
|
|
590
|
+
:desc => "Generate CI configuration, either GitHub Actions, GitLab CI or CircleCI. Set a default with `bundle config set --global gem.ci (github|gitlab|circle)`"
|
|
586
591
|
method_option :linter, :type => :string, :lazy_default => Bundler.settings["gem.linter"] || "",
|
|
587
592
|
:desc => "Add a linter and code formatter, either RuboCop or Standard. Set a default with `bundle config set --global gem.linter (rubocop|standard)`"
|
|
588
593
|
method_option :github_username, :type => :string, :default => Bundler.settings["gem.github_username"], :banner => "Set your username on GitHub", :desc => "Fill in GitHub username on README so that you don't have to do it manually. Set a default with `bundle config set --global gem.github_username <your_username>`."
|
|
@@ -668,10 +673,14 @@ module Bundler
|
|
|
668
673
|
"If updating, prefer updating only to next minor version"
|
|
669
674
|
method_option "major", :type => :boolean, :banner =>
|
|
670
675
|
"If updating, prefer updating to next major version (default)"
|
|
676
|
+
method_option "pre", :type => :boolean, :banner =>
|
|
677
|
+
"If updating, always choose the highest allowed version, regardless of prerelease status"
|
|
671
678
|
method_option "strict", :type => :boolean, :banner =>
|
|
672
679
|
"If updating, do not allow any gem to be updated past latest --patch | --minor | --major"
|
|
673
680
|
method_option "conservative", :type => :boolean, :banner =>
|
|
674
681
|
"If updating, use bundle install conservative update behavior and do not allow shared dependencies to be updated"
|
|
682
|
+
method_option "bundler", :type => :string, :lazy_default => "> 0.a", :banner =>
|
|
683
|
+
"Update the locked version of bundler"
|
|
675
684
|
def lock
|
|
676
685
|
require_relative "cli/lock"
|
|
677
686
|
Lock.new(options).run
|
|
@@ -749,6 +758,38 @@ module Bundler
|
|
|
749
758
|
end
|
|
750
759
|
end
|
|
751
760
|
|
|
761
|
+
def self.check_deprecated_ext_option(arguments)
|
|
762
|
+
# when deprecated version of `--ext` is called
|
|
763
|
+
# print out deprecation warning and pretend `--ext=c` was provided
|
|
764
|
+
if deprecated_ext_value?(arguments)
|
|
765
|
+
SharedHelpers.major_deprecation 2, "Extensions can now be generated using C or Rust, so `--ext` with no arguments has been deprecated. Please select a language, e.g. `--ext=rust` to generate a Rust extension. This gem will now be generated as if `--ext=c` was used."
|
|
766
|
+
arguments[arguments.index("--ext")] = "--ext=c"
|
|
767
|
+
end
|
|
768
|
+
end
|
|
769
|
+
|
|
770
|
+
def self.deprecated_ext_value?(arguments)
|
|
771
|
+
index = arguments.index("--ext")
|
|
772
|
+
next_argument = arguments[index+1]
|
|
773
|
+
|
|
774
|
+
# it is ok when --ext is followed with valid extension value
|
|
775
|
+
# for example `bundle gem hello --ext c`
|
|
776
|
+
return false if EXTENSIONS.include?(next_argument)
|
|
777
|
+
|
|
778
|
+
# deprecated call when --ext is called with no value in last position
|
|
779
|
+
# for example `bundle gem hello_gem --ext`
|
|
780
|
+
return true if next_argument.nil?
|
|
781
|
+
|
|
782
|
+
# deprecated call when --ext is followed by other parameter
|
|
783
|
+
# for example `bundle gem --ext --no-ci hello_gem`
|
|
784
|
+
return true if next_argument.start_with?("-")
|
|
785
|
+
|
|
786
|
+
# deprecated call when --ext is followed by gem name
|
|
787
|
+
# for example `bundle gem --ext hello_gem`
|
|
788
|
+
return true if next_argument
|
|
789
|
+
|
|
790
|
+
false
|
|
791
|
+
end
|
|
792
|
+
|
|
752
793
|
private
|
|
753
794
|
|
|
754
795
|
# Automatically invoke `bundle install` and resume if
|
|
@@ -20,63 +20,64 @@ module Bundler
|
|
|
20
20
|
|
|
21
21
|
def initialize(fetcher)
|
|
22
22
|
@fetcher = fetcher
|
|
23
|
-
require_relative "../vendored_tmpdir"
|
|
24
23
|
end
|
|
25
24
|
|
|
26
25
|
def update(local_path, remote_path, retrying = nil)
|
|
27
26
|
headers = {}
|
|
28
27
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
# first try to fetch any new bytes on the existing file
|
|
33
|
-
if retrying.nil? && local_path.file?
|
|
34
|
-
copy_file local_path, local_temp_path
|
|
35
|
-
|
|
36
|
-
headers["If-None-Match"] = etag_for(local_temp_path)
|
|
37
|
-
headers["Range"] =
|
|
38
|
-
if local_temp_path.size.nonzero?
|
|
39
|
-
# Subtract a byte to ensure the range won't be empty.
|
|
40
|
-
# Avoids 416 (Range Not Satisfiable) responses.
|
|
41
|
-
"bytes=#{local_temp_path.size - 1}-"
|
|
42
|
-
else
|
|
43
|
-
"bytes=#{local_temp_path.size}-"
|
|
44
|
-
end
|
|
45
|
-
end
|
|
28
|
+
local_temp_path = local_path.sub(/$/, ".#{$$}")
|
|
29
|
+
local_temp_path = local_temp_path.sub(/$/, ".retrying") if retrying
|
|
30
|
+
local_temp_path = local_temp_path.sub(/$/, ".tmp")
|
|
46
31
|
|
|
47
|
-
|
|
48
|
-
|
|
32
|
+
# first try to fetch any new bytes on the existing file
|
|
33
|
+
if retrying.nil? && local_path.file?
|
|
34
|
+
copy_file local_path, local_temp_path
|
|
49
35
|
|
|
50
|
-
|
|
36
|
+
headers["If-None-Match"] = etag_for(local_temp_path)
|
|
37
|
+
headers["Range"] =
|
|
38
|
+
if local_temp_path.size.nonzero?
|
|
39
|
+
# Subtract a byte to ensure the range won't be empty.
|
|
40
|
+
# Avoids 416 (Range Not Satisfiable) responses.
|
|
41
|
+
"bytes=#{local_temp_path.size - 1}-"
|
|
42
|
+
else
|
|
43
|
+
"bytes=#{local_temp_path.size}-"
|
|
44
|
+
end
|
|
45
|
+
end
|
|
51
46
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
if response.is_a?(Net::HTTPPartialContent) && local_temp_path.size.nonzero?
|
|
55
|
-
local_temp_path.open("a") {|f| f << slice_body(content, 1..-1) }
|
|
47
|
+
response = @fetcher.call(remote_path, headers)
|
|
48
|
+
return nil if response.is_a?(Net::HTTPNotModified)
|
|
56
49
|
|
|
57
|
-
|
|
58
|
-
else
|
|
59
|
-
local_temp_path.open("wb") {|f| f << content }
|
|
50
|
+
content = response.body
|
|
60
51
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
52
|
+
etag = (response["ETag"] || "").gsub(%r{\AW/}, "")
|
|
53
|
+
correct_response = SharedHelpers.filesystem_access(local_temp_path) do
|
|
54
|
+
if response.is_a?(Net::HTTPPartialContent) && local_temp_path.size.nonzero?
|
|
55
|
+
local_temp_path.open("a") {|f| f << slice_body(content, 1..-1) }
|
|
64
56
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
57
|
+
etag_for(local_temp_path) == etag
|
|
58
|
+
else
|
|
59
|
+
local_temp_path.open("wb") {|f| f << content }
|
|
60
|
+
|
|
61
|
+
etag.length.zero? || etag_for(local_temp_path) == etag
|
|
70
62
|
end
|
|
63
|
+
end
|
|
71
64
|
|
|
72
|
-
|
|
73
|
-
|
|
65
|
+
if correct_response
|
|
66
|
+
SharedHelpers.filesystem_access(local_path) do
|
|
67
|
+
FileUtils.mv(local_temp_path, local_path)
|
|
74
68
|
end
|
|
69
|
+
return nil
|
|
70
|
+
end
|
|
75
71
|
|
|
76
|
-
|
|
72
|
+
if retrying
|
|
73
|
+
raise MisMatchedChecksumError.new(remote_path, etag, etag_for(local_temp_path))
|
|
77
74
|
end
|
|
75
|
+
|
|
76
|
+
update(local_path, remote_path, :retrying)
|
|
78
77
|
rescue Zlib::GzipFile::Error
|
|
79
78
|
raise Bundler::HTTPError
|
|
79
|
+
ensure
|
|
80
|
+
FileUtils.remove_file(local_temp_path) if File.exist?(local_temp_path)
|
|
80
81
|
end
|
|
81
82
|
|
|
82
83
|
def etag_for(path)
|
|
@@ -16,7 +16,6 @@ module Bundler
|
|
|
16
16
|
:locked_deps,
|
|
17
17
|
:locked_gems,
|
|
18
18
|
:platforms,
|
|
19
|
-
:requires,
|
|
20
19
|
:ruby_version,
|
|
21
20
|
:lockfile,
|
|
22
21
|
:gemfiles
|
|
@@ -146,11 +145,11 @@ module Bundler
|
|
|
146
145
|
@dependency_changes = converge_dependencies
|
|
147
146
|
@local_changes = converge_locals
|
|
148
147
|
|
|
149
|
-
@
|
|
148
|
+
@incomplete_lockfile = check_missing_lockfile_specs
|
|
150
149
|
end
|
|
151
150
|
|
|
152
151
|
def gem_version_promoter
|
|
153
|
-
@gem_version_promoter ||= GemVersionPromoter.new
|
|
152
|
+
@gem_version_promoter ||= GemVersionPromoter.new
|
|
154
153
|
end
|
|
155
154
|
|
|
156
155
|
def resolve_only_locally!
|
|
@@ -264,10 +263,10 @@ module Bundler
|
|
|
264
263
|
@locked_specs
|
|
265
264
|
elsif !unlocking? && nothing_changed?
|
|
266
265
|
if deleted_deps.any?
|
|
267
|
-
Bundler.ui.debug
|
|
266
|
+
Bundler.ui.debug "Some dependencies were deleted, using a subset of the resolution from the lockfile"
|
|
268
267
|
SpecSet.new(filter_specs(@locked_specs, @dependencies - deleted_deps))
|
|
269
268
|
else
|
|
270
|
-
Bundler.ui.debug
|
|
269
|
+
Bundler.ui.debug "Found no changes, using resolution from the lockfile"
|
|
271
270
|
if @locked_gems.may_include_redundant_platform_specific_gems?
|
|
272
271
|
SpecSet.new(filter_specs(@locked_specs, @dependencies))
|
|
273
272
|
else
|
|
@@ -275,8 +274,8 @@ module Bundler
|
|
|
275
274
|
end
|
|
276
275
|
end
|
|
277
276
|
else
|
|
278
|
-
Bundler.ui.debug
|
|
279
|
-
|
|
277
|
+
Bundler.ui.debug "Found changes from the lockfile, re-resolving dependencies because #{change_reason}"
|
|
278
|
+
start_resolution
|
|
280
279
|
end
|
|
281
280
|
end
|
|
282
281
|
|
|
@@ -295,11 +294,11 @@ module Bundler
|
|
|
295
294
|
|
|
296
295
|
# Convert to \r\n if the existing lock has them
|
|
297
296
|
# i.e., Windows with `git config core.autocrlf=true`
|
|
298
|
-
contents.gsub!(/\n/, "\r\n") if @lockfile_contents.match("\r\n")
|
|
297
|
+
contents.gsub!(/\n/, "\r\n") if @lockfile_contents.match?("\r\n")
|
|
299
298
|
|
|
300
299
|
if @locked_bundler_version
|
|
301
300
|
locked_major = @locked_bundler_version.segments.first
|
|
302
|
-
current_major =
|
|
301
|
+
current_major = Bundler.gem_version.segments.first
|
|
303
302
|
|
|
304
303
|
updating_major = locked_major < current_major
|
|
305
304
|
end
|
|
@@ -461,7 +460,7 @@ module Bundler
|
|
|
461
460
|
private :sources
|
|
462
461
|
|
|
463
462
|
def nothing_changed?
|
|
464
|
-
!@source_changes && !@dependency_changes && !@new_platform && !@path_changes && !@local_changes
|
|
463
|
+
!@source_changes && !@dependency_changes && !@new_platform && !@path_changes && !@local_changes && !@incomplete_lockfile
|
|
465
464
|
end
|
|
466
465
|
|
|
467
466
|
def unlocking?
|
|
@@ -474,7 +473,7 @@ module Bundler
|
|
|
474
473
|
@resolver ||= begin
|
|
475
474
|
last_resolve = converge_locked_specs
|
|
476
475
|
remove_ruby_from_platforms_if_necessary!(current_dependencies)
|
|
477
|
-
Resolver.new(source_requirements, last_resolve, gem_version_promoter, additional_base_requirements_for_resolve(last_resolve)
|
|
476
|
+
Resolver.new(source_requirements, last_resolve, gem_version_promoter, additional_base_requirements_for_resolve(last_resolve))
|
|
478
477
|
end
|
|
479
478
|
end
|
|
480
479
|
|
|
@@ -482,6 +481,23 @@ module Bundler
|
|
|
482
481
|
@expanded_dependencies ||= dependencies + metadata_dependencies
|
|
483
482
|
end
|
|
484
483
|
|
|
484
|
+
def resolution_packages
|
|
485
|
+
@resolution_packages ||= begin
|
|
486
|
+
packages = Hash.new do |h, k|
|
|
487
|
+
h[k] = Resolver::Package.new(k, @platforms, @originally_locked_specs, @unlock[:gems])
|
|
488
|
+
end
|
|
489
|
+
|
|
490
|
+
expanded_dependencies.each do |dep|
|
|
491
|
+
name = dep.name
|
|
492
|
+
platforms = dep.gem_platforms(@platforms)
|
|
493
|
+
|
|
494
|
+
packages[name] = Resolver::Package.new(name, platforms, @originally_locked_specs, @unlock[:gems], :dependency => dep)
|
|
495
|
+
end
|
|
496
|
+
|
|
497
|
+
packages
|
|
498
|
+
end
|
|
499
|
+
end
|
|
500
|
+
|
|
485
501
|
def filter_specs(specs, deps)
|
|
486
502
|
SpecSet.new(specs).for(deps, false, platforms)
|
|
487
503
|
end
|
|
@@ -507,21 +523,36 @@ module Bundler
|
|
|
507
523
|
raise GemNotFound, "Could not find #{missing_specs_list.join(" nor ")}"
|
|
508
524
|
end
|
|
509
525
|
|
|
526
|
+
incomplete_specs = specs.incomplete_specs
|
|
510
527
|
loop do
|
|
511
|
-
incomplete_specs = specs.incomplete_specs
|
|
512
528
|
break if incomplete_specs.empty?
|
|
513
529
|
|
|
514
530
|
Bundler.ui.debug("The lockfile does not have all gems needed for the current platform though, Bundler will still re-resolve dependencies")
|
|
515
|
-
@resolve =
|
|
531
|
+
@resolve = start_resolution(:exclude_specs => incomplete_specs)
|
|
516
532
|
specs = resolve.materialize(dependencies)
|
|
533
|
+
|
|
534
|
+
still_incomplete_specs = specs.incomplete_specs
|
|
535
|
+
|
|
536
|
+
if still_incomplete_specs == incomplete_specs
|
|
537
|
+
package = resolution_packages[incomplete_specs.first.name]
|
|
538
|
+
resolver.raise_not_found! package
|
|
539
|
+
end
|
|
540
|
+
|
|
541
|
+
incomplete_specs = still_incomplete_specs
|
|
517
542
|
end
|
|
518
543
|
|
|
519
|
-
bundler = sources.metadata_source.specs.search(
|
|
544
|
+
bundler = sources.metadata_source.specs.search(["bundler", Bundler.gem_version]).last
|
|
520
545
|
specs["bundler"] = bundler
|
|
521
546
|
|
|
522
547
|
specs
|
|
523
548
|
end
|
|
524
549
|
|
|
550
|
+
def start_resolution(exclude_specs: [])
|
|
551
|
+
result = resolver.start(expanded_dependencies, resolution_packages, :exclude_specs => exclude_specs)
|
|
552
|
+
|
|
553
|
+
SpecSet.new(SpecSet.new(result).for(dependencies, false, @platforms))
|
|
554
|
+
end
|
|
555
|
+
|
|
525
556
|
def precompute_source_requirements_for_indirect_dependencies?
|
|
526
557
|
@remote && sources.non_global_rubygems_sources.all?(&:dependency_api_available?) && !sources.aggregate_global_source?
|
|
527
558
|
end
|
|
@@ -574,6 +605,7 @@ module Bundler
|
|
|
574
605
|
[@new_platform, "you added a new platform to your gemfile"],
|
|
575
606
|
[@path_changes, "the gemspecs for path gems changed"],
|
|
576
607
|
[@local_changes, "the gemspecs for git local gems changed"],
|
|
608
|
+
[@incomplete_lockfile, "your lock file is missing some gems"],
|
|
577
609
|
].select(&:first).map(&:last).join(", ")
|
|
578
610
|
end
|
|
579
611
|
|
|
@@ -628,6 +660,14 @@ module Bundler
|
|
|
628
660
|
!sources_with_changes.each {|source| @unlock[:sources] << source.name }.empty?
|
|
629
661
|
end
|
|
630
662
|
|
|
663
|
+
def check_missing_lockfile_specs
|
|
664
|
+
all_locked_specs = @locked_specs.map(&:name) << "bundler"
|
|
665
|
+
|
|
666
|
+
@locked_specs.any? do |s|
|
|
667
|
+
s.dependencies.any? {|dep| !all_locked_specs.include?(dep.name) }
|
|
668
|
+
end
|
|
669
|
+
end
|
|
670
|
+
|
|
631
671
|
def converge_paths
|
|
632
672
|
sources.path_sources.any? do |source|
|
|
633
673
|
specs_changed?(source)
|
|
@@ -766,12 +806,13 @@ module Bundler
|
|
|
766
806
|
end
|
|
767
807
|
|
|
768
808
|
new_spec = new_specs[s].first
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
809
|
+
if new_spec
|
|
810
|
+
s.dependencies.replace(new_spec.dependencies)
|
|
811
|
+
else
|
|
812
|
+
# If the spec is no longer in the path source, unlock it. This
|
|
813
|
+
# commonly happens if the version changed in the gemspec
|
|
814
|
+
@unlock[:gems] << s.name
|
|
815
|
+
end
|
|
775
816
|
end
|
|
776
817
|
|
|
777
818
|
if dep.nil? && requested_dependencies.find {|d| s.name == d.name }
|
|
@@ -839,17 +880,6 @@ module Bundler
|
|
|
839
880
|
current == proposed
|
|
840
881
|
end
|
|
841
882
|
|
|
842
|
-
def compute_requires
|
|
843
|
-
dependencies.reduce({}) do |requires, dep|
|
|
844
|
-
next requires unless dep.should_include?
|
|
845
|
-
requires[dep.name] = Array(dep.autorequire || dep.name).map do |file|
|
|
846
|
-
# Allow `require: true` as an alias for `require: <name>`
|
|
847
|
-
file == true ? dep.name : file
|
|
848
|
-
end
|
|
849
|
-
requires
|
|
850
|
-
end
|
|
851
|
-
end
|
|
852
|
-
|
|
853
883
|
def additional_base_requirements_for_resolve(last_resolve)
|
|
854
884
|
return [] unless @locked_gems && unlocking? && !sources.expired_sources?(@locked_gems.sources)
|
|
855
885
|
converge_specs(@originally_locked_specs - last_resolve).map do |locked_spec|
|
|
@@ -7,20 +7,20 @@ require_relative "rubygems_ext"
|
|
|
7
7
|
module Bundler
|
|
8
8
|
class Dependency < Gem::Dependency
|
|
9
9
|
attr_reader :autorequire
|
|
10
|
-
attr_reader :groups, :platforms, :gemfile, :path, :git, :github, :branch, :ref
|
|
10
|
+
attr_reader :groups, :platforms, :gemfile, :path, :git, :github, :branch, :ref
|
|
11
11
|
|
|
12
12
|
ALL_RUBY_VERSIONS = ((18..27).to_a + (30..31).to_a).freeze
|
|
13
13
|
PLATFORM_MAP = {
|
|
14
|
-
:ruby
|
|
15
|
-
:mri
|
|
16
|
-
:rbx
|
|
14
|
+
:ruby => [Gem::Platform::RUBY, ALL_RUBY_VERSIONS],
|
|
15
|
+
:mri => [Gem::Platform::RUBY, ALL_RUBY_VERSIONS],
|
|
16
|
+
:rbx => [Gem::Platform::RUBY],
|
|
17
17
|
:truffleruby => [Gem::Platform::RUBY],
|
|
18
|
-
:jruby
|
|
19
|
-
:windows
|
|
20
|
-
:mswin
|
|
21
|
-
:mswin64
|
|
22
|
-
:mingw
|
|
23
|
-
:x64_mingw
|
|
18
|
+
:jruby => [Gem::Platform::JAVA, [18, 19]],
|
|
19
|
+
:windows => [Gem::Platform::WINDOWS, ALL_RUBY_VERSIONS],
|
|
20
|
+
:mswin => [Gem::Platform::MSWIN, ALL_RUBY_VERSIONS],
|
|
21
|
+
:mswin64 => [Gem::Platform::MSWIN64, ALL_RUBY_VERSIONS - [18]],
|
|
22
|
+
:mingw => [Gem::Platform::MINGW, ALL_RUBY_VERSIONS],
|
|
23
|
+
:x64_mingw => [Gem::Platform::X64_MINGW, ALL_RUBY_VERSIONS - [18, 19]],
|
|
24
24
|
}.each_with_object({}) do |(platform, spec), hash|
|
|
25
25
|
hash[platform] = spec[0]
|
|
26
26
|
spec[1]&.each {|version| hash[:"#{platform}_#{version}"] = spec[0] }
|
|
@@ -42,7 +42,7 @@ module Bundler
|
|
|
42
42
|
@env = options["env"]
|
|
43
43
|
@should_include = options.fetch("should_include", true)
|
|
44
44
|
@gemfile = options["gemfile"]
|
|
45
|
-
@force_ruby_platform = options["force_ruby_platform"]
|
|
45
|
+
@force_ruby_platform = options["force_ruby_platform"] if options.key?("force_ruby_platform")
|
|
46
46
|
|
|
47
47
|
@autorequire = Array(options["require"] || []) if options.key?("require")
|
|
48
48
|
end
|
|
@@ -50,6 +50,7 @@ module Bundler
|
|
|
50
50
|
# Returns the platforms this dependency is valid for, in the same order as
|
|
51
51
|
# passed in the `valid_platforms` parameter
|
|
52
52
|
def gem_platforms(valid_platforms)
|
|
53
|
+
return [Gem::Platform::RUBY] if force_ruby_platform
|
|
53
54
|
return valid_platforms if @platforms.empty?
|
|
54
55
|
|
|
55
56
|
valid_platforms.select {|p| expanded_platforms.include?(GemHelpers.generic(p)) }
|
|
@@ -43,7 +43,7 @@ module Bundler
|
|
|
43
43
|
f = (b ^ c ^ d)
|
|
44
44
|
k = 0xCA62C1D6
|
|
45
45
|
end
|
|
46
|
-
t = SHA1_MASK &
|
|
46
|
+
t = SHA1_MASK & rotate(a, 5) + f + e + k + w[i]
|
|
47
47
|
a, b, c, d, e = t, a, SHA1_MASK & rotate(b, 30), c, d # rubocop:disable Style/ParallelAssignment
|
|
48
48
|
end
|
|
49
49
|
mutated = [a, b, c, d, e]
|
data/bundler/lib/bundler/dsl.rb
CHANGED
|
@@ -324,7 +324,7 @@ module Bundler
|
|
|
324
324
|
if name.is_a?(Symbol)
|
|
325
325
|
raise GemfileError, %(You need to specify gem names as Strings. Use 'gem "#{name}"' instead)
|
|
326
326
|
end
|
|
327
|
-
if
|
|
327
|
+
if /\s/.match?(name)
|
|
328
328
|
raise GemfileError, %('#{name}' is not a valid gem name because it contains whitespace)
|
|
329
329
|
end
|
|
330
330
|
raise GemfileError, %(an empty gem name is not valid) if name.empty?
|
data/bundler/lib/bundler/env.rb
CHANGED
|
@@ -21,16 +21,7 @@ module Bundler
|
|
|
21
21
|
class InstallError < BundlerError; status_code(5); end
|
|
22
22
|
|
|
23
23
|
# Internal error, should be rescued
|
|
24
|
-
class
|
|
25
|
-
attr_reader :conflicts
|
|
26
|
-
|
|
27
|
-
def initialize(conflicts, msg = nil)
|
|
28
|
-
super(msg)
|
|
29
|
-
@conflicts = conflicts
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
status_code(6)
|
|
33
|
-
end
|
|
24
|
+
class SolveFailure < BundlerError; status_code(6); end
|
|
34
25
|
|
|
35
26
|
class GemNotFound < BundlerError; status_code(7); end
|
|
36
27
|
class InstallHookError < BundlerError; status_code(8); end
|
|
@@ -55,7 +46,6 @@ module Bundler
|
|
|
55
46
|
class CyclicDependencyError < BundlerError; status_code(21); end
|
|
56
47
|
class GemfileLockNotFound < BundlerError; status_code(22); end
|
|
57
48
|
class PluginError < BundlerError; status_code(29); end
|
|
58
|
-
class SudoNotPermittedError < BundlerError; status_code(30); end
|
|
59
49
|
class ThreadCreationError < BundlerError; status_code(33); end
|
|
60
50
|
class APIResponseMismatchError < BundlerError; status_code(34); end
|
|
61
51
|
class APIResponseInvalidDependenciesError < BundlerError; status_code(35); end
|
|
@@ -12,17 +12,15 @@ module Bundler
|
|
|
12
12
|
method = instance_method(method_name)
|
|
13
13
|
undef_method(method_name)
|
|
14
14
|
define_method(method_name) do |*args, &blk|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
nil
|
|
25
|
-
end
|
|
15
|
+
method.bind(self).call(*args, &blk)
|
|
16
|
+
rescue NetworkDownError, CompactIndexClient::Updater::MisMatchedChecksumError => e
|
|
17
|
+
raise HTTPError, e.message
|
|
18
|
+
rescue AuthenticationRequiredError
|
|
19
|
+
# Fail since we got a 401 from the server.
|
|
20
|
+
raise
|
|
21
|
+
rescue HTTPError => e
|
|
22
|
+
Bundler.ui.trace(e)
|
|
23
|
+
nil
|
|
26
24
|
end
|
|
27
25
|
end
|
|
28
26
|
|
|
@@ -55,7 +55,7 @@ module Bundler
|
|
|
55
55
|
gem_list = []
|
|
56
56
|
gem_names.each_slice(Source::Rubygems::API_REQUEST_SIZE) do |names|
|
|
57
57
|
marshalled_deps = downloader.fetch(dependency_api_uri(names)).body
|
|
58
|
-
gem_list.concat(Bundler.
|
|
58
|
+
gem_list.concat(Bundler.safe_load_marshal(marshalled_deps))
|
|
59
59
|
end
|
|
60
60
|
gem_list
|
|
61
61
|
end
|