rubygems-update 3.5.23 → 3.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +57 -0
- data/Manifest.txt +23 -16
- data/README.md +14 -9
- data/bundler/CHANGELOG.md +59 -0
- data/bundler/bundler.gemspec +2 -2
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/cli/console.rb +0 -4
- data/bundler/lib/bundler/cli/doctor.rb +4 -4
- data/bundler/lib/bundler/cli/exec.rb +1 -0
- data/bundler/lib/bundler/cli/gem.rb +1 -1
- data/bundler/lib/bundler/cli/info.rb +2 -2
- data/bundler/lib/bundler/cli/inject.rb +1 -1
- data/bundler/lib/bundler/cli/install.rb +4 -0
- data/bundler/lib/bundler/cli/lock.rb +20 -1
- data/bundler/lib/bundler/cli/pristine.rb +1 -1
- data/bundler/lib/bundler/cli/show.rb +2 -2
- data/bundler/lib/bundler/cli.rb +22 -53
- data/bundler/lib/bundler/compact_index_client/cache_file.rb +0 -5
- data/bundler/lib/bundler/compact_index_client/updater.rb +0 -11
- data/bundler/lib/bundler/definition.rb +134 -61
- data/bundler/lib/bundler/dependency.rb +1 -1
- data/bundler/lib/bundler/dsl.rb +2 -13
- data/bundler/lib/bundler/endpoint_specification.rb +10 -1
- data/bundler/lib/bundler/errors.rb +10 -0
- data/bundler/lib/bundler/feature_flag.rb +1 -0
- data/bundler/lib/bundler/fetcher/compact_index.rb +1 -1
- data/bundler/lib/bundler/fetcher.rb +10 -3
- data/bundler/lib/bundler/gem_helpers.rb +21 -5
- data/bundler/lib/bundler/injector.rb +2 -2
- data/bundler/lib/bundler/installer/standalone.rb +2 -2
- data/bundler/lib/bundler/installer.rb +4 -38
- data/bundler/lib/bundler/lazy_specification.rb +65 -24
- data/bundler/lib/bundler/lockfile_parser.rb +9 -1
- data/bundler/lib/bundler/man/bundle-add.1 +13 -10
- data/bundler/lib/bundler/man/bundle-add.1.ronn +12 -9
- data/bundler/lib/bundler/man/bundle-binstubs.1 +7 -4
- data/bundler/lib/bundler/man/bundle-binstubs.1.ronn +6 -3
- data/bundler/lib/bundler/man/bundle-cache.1 +30 -2
- data/bundler/lib/bundler/man/bundle-cache.1.ronn +31 -2
- data/bundler/lib/bundler/man/bundle-check.1 +3 -3
- data/bundler/lib/bundler/man/bundle-check.1.ronn +4 -2
- data/bundler/lib/bundler/man/bundle-clean.1 +1 -1
- data/bundler/lib/bundler/man/bundle-config.1 +3 -1
- data/bundler/lib/bundler/man/bundle-config.1.ronn +2 -0
- data/bundler/lib/bundler/man/bundle-console.1 +2 -4
- data/bundler/lib/bundler/man/bundle-console.1.ronn +2 -7
- data/bundler/lib/bundler/man/bundle-doctor.1 +2 -2
- data/bundler/lib/bundler/man/bundle-doctor.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-env.1 +9 -0
- data/bundler/lib/bundler/man/bundle-env.1.ronn +10 -0
- data/bundler/lib/bundler/man/bundle-exec.1 +5 -2
- data/bundler/lib/bundler/man/bundle-exec.1.ronn +4 -1
- data/bundler/lib/bundler/man/bundle-fund.1 +22 -0
- data/bundler/lib/bundler/man/bundle-fund.1.ronn +25 -0
- data/bundler/lib/bundler/man/bundle-gem.1 +17 -5
- data/bundler/lib/bundler/man/bundle-gem.1.ronn +27 -6
- data/bundler/lib/bundler/man/bundle-help.1 +1 -1
- data/bundler/lib/bundler/man/bundle-info.1 +5 -2
- data/bundler/lib/bundler/man/bundle-info.1.ronn +6 -2
- data/bundler/lib/bundler/man/bundle-init.1 +3 -3
- data/bundler/lib/bundler/man/bundle-init.1.ronn +3 -2
- data/bundler/lib/bundler/man/bundle-inject.1 +10 -2
- data/bundler/lib/bundler/man/bundle-inject.1.ronn +9 -1
- data/bundler/lib/bundler/man/bundle-install.1 +14 -11
- data/bundler/lib/bundler/man/bundle-install.1.ronn +21 -16
- data/bundler/lib/bundler/man/bundle-issue.1 +45 -0
- data/bundler/lib/bundler/man/bundle-issue.1.ronn +37 -0
- data/bundler/lib/bundler/man/bundle-licenses.1 +9 -0
- data/bundler/lib/bundler/man/bundle-licenses.1.ronn +10 -0
- data/bundler/lib/bundler/man/bundle-list.1 +1 -1
- data/bundler/lib/bundler/man/bundle-list.1.ronn +4 -1
- data/bundler/lib/bundler/man/bundle-lock.1 +21 -6
- data/bundler/lib/bundler/man/bundle-lock.1.ronn +25 -4
- data/bundler/lib/bundler/man/bundle-open.1 +2 -2
- data/bundler/lib/bundler/man/bundle-open.1.ronn +2 -1
- data/bundler/lib/bundler/man/bundle-outdated.1 +8 -5
- data/bundler/lib/bundler/man/bundle-outdated.1.ronn +8 -4
- data/bundler/lib/bundler/man/bundle-platform.1 +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-pristine.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
- data/bundler/lib/bundler/man/bundle-remove.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-show.1 +5 -2
- data/bundler/lib/bundler/man/bundle-show.1.ronn +4 -0
- data/bundler/lib/bundler/man/bundle-update.1 +13 -7
- data/bundler/lib/bundler/man/bundle-update.1.ronn +14 -6
- data/bundler/lib/bundler/man/bundle-version.1 +1 -1
- data/bundler/lib/bundler/man/bundle-viz.1 +4 -4
- data/bundler/lib/bundler/man/bundle-viz.1.ronn +7 -3
- data/bundler/lib/bundler/man/bundle.1 +1 -1
- data/bundler/lib/bundler/man/gemfile.5 +1 -1
- data/bundler/lib/bundler/man/index.txt +4 -0
- data/bundler/lib/bundler/materialization.rb +59 -0
- data/bundler/lib/bundler/plugin/events.rb +24 -0
- data/bundler/lib/bundler/plugin/installer.rb +1 -1
- data/bundler/lib/bundler/process_lock.rb +1 -1
- data/bundler/lib/bundler/remote_specification.rb +6 -1
- data/bundler/lib/bundler/resolver/base.rb +2 -6
- data/bundler/lib/bundler/resolver/candidate.rb +2 -2
- data/bundler/lib/bundler/resolver/spec_group.rb +4 -3
- data/bundler/lib/bundler/resolver.rb +5 -5
- data/bundler/lib/bundler/rubygems_ext.rb +17 -28
- data/bundler/lib/bundler/rubygems_gem_installer.rb +0 -1
- data/bundler/lib/bundler/rubygems_integration.rb +21 -11
- data/bundler/lib/bundler/runtime.rb +27 -7
- data/bundler/lib/bundler/self_manager.rb +2 -3
- data/bundler/lib/bundler/settings.rb +1 -0
- data/bundler/lib/bundler/shared_helpers.rb +2 -2
- data/bundler/lib/bundler/source/git/git_proxy.rb +0 -6
- data/bundler/lib/bundler/source/git.rb +56 -31
- data/bundler/lib/bundler/source/path.rb +2 -2
- data/bundler/lib/bundler/source_list.rb +1 -1
- data/bundler/lib/bundler/spec_set.rb +81 -56
- data/bundler/lib/bundler/stub_specification.rb +8 -0
- data/bundler/lib/bundler/templates/newgem/README.md.tt +1 -1
- data/bundler/lib/bundler/uri_credentials_filter.rb +1 -1
- data/bundler/lib/bundler/vendor/fileutils/COPYING +56 -0
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +15 -13
- data/bundler/lib/bundler/vendor/securerandom/COPYING +56 -0
- data/bundler/lib/bundler/vendor/securerandom/lib/securerandom.rb +5 -5
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +3 -5
- data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +11 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +1 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +2 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +2 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +9 -9
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/table_printer.rb +5 -21
- data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor.rb +11 -0
- data/bundler/lib/bundler/vendor/uri/COPYING +56 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +37 -16
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +3 -3
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +16 -26
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +2 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +10 -3
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +26 -3
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +9 -9
- data/bundler/lib/bundler/vendored_securerandom.rb +0 -2
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/lib/bundler.rb +37 -13
- data/{CONTRIBUTING.md → doc/rubygems/CONTRIBUTING.md} +9 -9
- data/{POLICIES.md → doc/rubygems/POLICIES.md} +11 -11
- data/lib/rubygems/basic_specification.rb +5 -4
- data/lib/rubygems/commands/cleanup_command.rb +2 -2
- data/lib/rubygems/commands/contents_command.rb +4 -4
- data/lib/rubygems/commands/exec_command.rb +3 -0
- data/lib/rubygems/commands/pristine_command.rb +2 -2
- data/lib/rubygems/commands/push_command.rb +29 -5
- data/lib/rubygems/commands/rdoc_command.rb +2 -2
- data/lib/rubygems/commands/rebuild_command.rb +0 -2
- data/lib/rubygems/commands/setup_command.rb +1 -16
- data/lib/rubygems/commands/unpack_command.rb +0 -6
- data/lib/rubygems/commands/update_command.rb +2 -8
- data/lib/rubygems/config_file.rb +12 -0
- data/lib/rubygems/core_ext/kernel_warn.rb +2 -6
- data/lib/rubygems/defaults.rb +1 -1
- data/lib/rubygems/exceptions.rb +0 -6
- data/lib/rubygems/ext/builder.rb +6 -4
- data/lib/rubygems/ext/cargo_builder.rb +7 -4
- data/lib/rubygems/ext/cmake_builder.rb +7 -2
- data/lib/rubygems/ext/configure_builder.rb +7 -2
- data/lib/rubygems/ext/ext_conf_builder.rb +9 -5
- data/lib/rubygems/ext/rake_builder.rb +6 -1
- data/lib/rubygems/install_update_options.rb +5 -0
- data/lib/rubygems/installer.rb +2 -2
- data/lib/rubygems/platform.rb +4 -3
- data/lib/rubygems/psych_tree.rb +4 -0
- data/lib/rubygems/request_set/gem_dependency_api.rb +1 -1
- data/lib/rubygems/requirement.rb +0 -4
- data/lib/rubygems/resolver/composed_set.rb +3 -3
- data/lib/rubygems/resolver/git_set.rb +0 -1
- data/lib/rubygems/resolver/index_set.rb +2 -2
- data/lib/rubygems/resolver.rb +3 -3
- data/lib/rubygems/source/git.rb +13 -10
- data/lib/rubygems/spec_fetcher.rb +16 -5
- data/lib/rubygems/specification.rb +37 -31
- data/lib/rubygems/target_rbconfig.rb +50 -0
- data/lib/rubygems/uri.rb +1 -1
- data/lib/rubygems/util/licenses.rb +10 -1
- data/lib/rubygems/vendor/net-http/COPYING +56 -0
- data/lib/rubygems/vendor/net-http/lib/net/http/header.rb +1 -1
- data/lib/rubygems/vendor/net-http/lib/net/http/requests.rb +5 -0
- data/lib/rubygems/vendor/net-http/lib/net/http.rb +120 -36
- data/lib/rubygems/vendor/optparse/lib/optparse/ac.rb +16 -0
- data/lib/rubygems/vendor/optparse/lib/optparse/kwargs.rb +8 -3
- data/lib/rubygems/vendor/optparse/lib/optparse/version.rb +9 -0
- data/lib/rubygems/vendor/optparse/lib/optparse.rb +147 -51
- data/lib/rubygems/vendor/resolv/COPYING +56 -0
- data/lib/rubygems/vendor/resolv/lib/resolv.rb +50 -37
- data/lib/rubygems/vendor/securerandom/COPYING +56 -0
- data/lib/rubygems/vendor/securerandom/lib/securerandom.rb +5 -5
- data/lib/rubygems/vendor/timeout/COPYING +56 -0
- data/lib/rubygems/vendor/timeout/lib/timeout.rb +5 -8
- data/lib/rubygems/vendor/uri/COPYING +56 -0
- data/lib/rubygems/vendor/uri/lib/uri/common.rb +37 -16
- data/lib/rubygems/vendor/uri/lib/uri/file.rb +3 -3
- data/lib/rubygems/vendor/uri/lib/uri/ftp.rb +1 -1
- data/lib/rubygems/vendor/uri/lib/uri/generic.rb +16 -26
- data/lib/rubygems/vendor/uri/lib/uri/http.rb +2 -2
- data/lib/rubygems/vendor/uri/lib/uri/rfc2396_parser.rb +10 -3
- data/lib/rubygems/vendor/uri/lib/uri/rfc3986_parser.rb +26 -3
- data/lib/rubygems/vendor/uri/lib/uri/version.rb +1 -1
- data/lib/rubygems/vendor/uri/lib/uri.rb +9 -9
- data/lib/rubygems/vendored_securerandom.rb +0 -1
- data/lib/rubygems/version.rb +0 -4
- data/lib/rubygems.rb +29 -20
- data/rubygems-update.gemspec +5 -5
- data/setup.rb +1 -1
- metadata +36 -27
- data/bundler/lib/bundler/vendor/fileutils/LICENSE.txt +0 -22
- data/bundler/lib/bundler/vendor/securerandom/LICENSE.txt +0 -22
- data/bundler/lib/bundler/vendor/securerandom/lib/random/formatter.rb +0 -373
- data/bundler/lib/bundler/vendor/uri/LICENSE.txt +0 -22
- data/lib/rubygems/vendor/net-http/LICENSE.txt +0 -22
- data/lib/rubygems/vendor/net-http/lib/net/http/backward.rb +0 -40
- data/lib/rubygems/vendor/resolv/LICENSE.txt +0 -22
- data/lib/rubygems/vendor/securerandom/LICENSE.txt +0 -22
- data/lib/rubygems/vendor/securerandom/lib/random/formatter.rb +0 -373
- data/lib/rubygems/vendor/timeout/LICENSE.txt +0 -22
- data/lib/rubygems/vendor/uri/LICENSE.txt +0 -22
- /data/{MAINTAINERS.txt → doc/MAINTAINERS.txt} +0 -0
- /data/{bundler → doc/bundler}/UPGRADING.md +0 -0
- /data/{UPGRADING.md → doc/rubygems/UPGRADING.md} +0 -0
@@ -140,11 +140,11 @@ module Bundler::URI
|
|
140
140
|
|
141
141
|
if !scheme
|
142
142
|
raise InvalidURIError,
|
143
|
-
"bad Bundler::URI(absolute but no scheme): #{uri}"
|
143
|
+
"bad Bundler::URI (absolute but no scheme): #{uri}"
|
144
144
|
end
|
145
145
|
if !opaque && (!path && (!host && !registry))
|
146
146
|
raise InvalidURIError,
|
147
|
-
"bad Bundler::URI(absolute but no path): #{uri}"
|
147
|
+
"bad Bundler::URI (absolute but no path): #{uri}"
|
148
148
|
end
|
149
149
|
|
150
150
|
when @regexp[:REL_URI]
|
@@ -173,7 +173,7 @@ module Bundler::URI
|
|
173
173
|
# server = [ [ userinfo "@" ] hostport ]
|
174
174
|
|
175
175
|
else
|
176
|
-
raise InvalidURIError, "bad Bundler::URI(is not Bundler::URI?): #{uri}"
|
176
|
+
raise InvalidURIError, "bad Bundler::URI (is not Bundler::URI?): #{uri}"
|
177
177
|
end
|
178
178
|
|
179
179
|
path = '' if !path && !opaque # (see RFC2396 Section 5.2)
|
@@ -536,4 +536,11 @@ module Bundler::URI
|
|
536
536
|
end
|
537
537
|
|
538
538
|
end # class Parser
|
539
|
+
|
540
|
+
# Backward compatibility for Bundler::URI::REGEXP::PATTERN::*
|
541
|
+
RFC2396_Parser.new.pattern.each_pair do |sym, str|
|
542
|
+
unless RFC2396_REGEXP::PATTERN.const_defined?(sym, false)
|
543
|
+
RFC2396_REGEXP::PATTERN.const_set(sym, str)
|
544
|
+
end
|
545
|
+
end
|
539
546
|
end # module Bundler::URI
|
@@ -78,7 +78,7 @@ module Bundler::URI
|
|
78
78
|
begin
|
79
79
|
uri = uri.to_str
|
80
80
|
rescue NoMethodError
|
81
|
-
raise InvalidURIError, "bad Bundler::URI(is not Bundler::URI?): #{uri.inspect}"
|
81
|
+
raise InvalidURIError, "bad Bundler::URI (is not Bundler::URI?): #{uri.inspect}"
|
82
82
|
end
|
83
83
|
uri.ascii_only? or
|
84
84
|
raise InvalidURIError, "Bundler::URI must be ascii only #{uri.dump}"
|
@@ -127,7 +127,7 @@ module Bundler::URI
|
|
127
127
|
m["fragment"]
|
128
128
|
]
|
129
129
|
else
|
130
|
-
raise InvalidURIError, "bad Bundler::URI(is not Bundler::URI?): #{uri.inspect}"
|
130
|
+
raise InvalidURIError, "bad Bundler::URI (is not Bundler::URI?): #{uri.inspect}"
|
131
131
|
end
|
132
132
|
end
|
133
133
|
|
@@ -135,12 +135,35 @@ module Bundler::URI
|
|
135
135
|
Bundler::URI.for(*self.split(uri), self)
|
136
136
|
end
|
137
137
|
|
138
|
-
|
139
138
|
def join(*uris) # :nodoc:
|
140
139
|
uris[0] = convert_to_uri(uris[0])
|
141
140
|
uris.inject :merge
|
142
141
|
end
|
143
142
|
|
143
|
+
# Compatibility for RFC2396 parser
|
144
|
+
def extract(str, schemes = nil, &block) # :nodoc:
|
145
|
+
warn "Bundler::URI::RFC3986_PARSER.extract is obsolete. Use Bundler::URI::RFC2396_PARSER.extract explicitly.", uplevel: 1 if $VERBOSE
|
146
|
+
RFC2396_PARSER.extract(str, schemes, &block)
|
147
|
+
end
|
148
|
+
|
149
|
+
# Compatibility for RFC2396 parser
|
150
|
+
def make_regexp(schemes = nil) # :nodoc:
|
151
|
+
warn "Bundler::URI::RFC3986_PARSER.make_regexp is obsolete. Use Bundler::URI::RFC2396_PARSER.make_regexp explicitly.", uplevel: 1 if $VERBOSE
|
152
|
+
RFC2396_PARSER.make_regexp(schemes)
|
153
|
+
end
|
154
|
+
|
155
|
+
# Compatibility for RFC2396 parser
|
156
|
+
def escape(str, unsafe = nil) # :nodoc:
|
157
|
+
warn "Bundler::URI::RFC3986_PARSER.escape is obsolete. Use Bundler::URI::RFC2396_PARSER.escape explicitly.", uplevel: 1 if $VERBOSE
|
158
|
+
unsafe ? RFC2396_PARSER.escape(str, unsafe) : RFC2396_PARSER.escape(str)
|
159
|
+
end
|
160
|
+
|
161
|
+
# Compatibility for RFC2396 parser
|
162
|
+
def unescape(str, escaped = nil) # :nodoc:
|
163
|
+
warn "Bundler::URI::RFC3986_PARSER.unescape is obsolete. Use Bundler::URI::RFC2396_PARSER.unescape explicitly.", uplevel: 1 if $VERBOSE
|
164
|
+
escaped ? RFC2396_PARSER.unescape(str, escaped) : RFC2396_PARSER.unescape(str)
|
165
|
+
end
|
166
|
+
|
144
167
|
@@to_s = Kernel.instance_method(:to_s)
|
145
168
|
if @@to_s.respond_to?(:bind_call)
|
146
169
|
def inspect
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: false
|
2
2
|
# Bundler::URI is a module providing classes to handle Uniform Resource Identifiers
|
3
|
-
# (RFC2396[
|
3
|
+
# (RFC2396[https://www.rfc-editor.org/rfc/rfc2396]).
|
4
4
|
#
|
5
5
|
# == Features
|
6
6
|
#
|
@@ -47,14 +47,14 @@
|
|
47
47
|
# A good place to view an RFC spec is http://www.ietf.org/rfc.html.
|
48
48
|
#
|
49
49
|
# Here is a list of all related RFC's:
|
50
|
-
# - RFC822[
|
51
|
-
# - RFC1738[
|
52
|
-
# - RFC2255[
|
53
|
-
# - RFC2368[
|
54
|
-
# - RFC2373[
|
55
|
-
# - RFC2396[
|
56
|
-
# - RFC2732[
|
57
|
-
# - RFC3986[
|
50
|
+
# - RFC822[https://www.rfc-editor.org/rfc/rfc822]
|
51
|
+
# - RFC1738[https://www.rfc-editor.org/rfc/rfc1738]
|
52
|
+
# - RFC2255[https://www.rfc-editor.org/rfc/rfc2255]
|
53
|
+
# - RFC2368[https://www.rfc-editor.org/rfc/rfc2368]
|
54
|
+
# - RFC2373[https://www.rfc-editor.org/rfc/rfc2373]
|
55
|
+
# - RFC2396[https://www.rfc-editor.org/rfc/rfc2396]
|
56
|
+
# - RFC2732[https://www.rfc-editor.org/rfc/rfc2732]
|
57
|
+
# - RFC3986[https://www.rfc-editor.org/rfc/rfc3986]
|
58
58
|
#
|
59
59
|
# == Class tree
|
60
60
|
#
|
data/bundler/lib/bundler.rb
CHANGED
@@ -10,7 +10,6 @@ require_relative "bundler/plugin"
|
|
10
10
|
require_relative "bundler/rubygems_ext"
|
11
11
|
require_relative "bundler/rubygems_integration"
|
12
12
|
require_relative "bundler/version"
|
13
|
-
require_relative "bundler/constants"
|
14
13
|
require_relative "bundler/current_ruby"
|
15
14
|
require_relative "bundler/build_metadata"
|
16
15
|
|
@@ -52,6 +51,7 @@ module Bundler
|
|
52
51
|
autoload :Env, File.expand_path("bundler/env", __dir__)
|
53
52
|
autoload :Fetcher, File.expand_path("bundler/fetcher", __dir__)
|
54
53
|
autoload :FeatureFlag, File.expand_path("bundler/feature_flag", __dir__)
|
54
|
+
autoload :FREEBSD, File.expand_path("bundler/constants", __dir__)
|
55
55
|
autoload :GemHelper, File.expand_path("bundler/gem_helper", __dir__)
|
56
56
|
autoload :GemHelpers, File.expand_path("bundler/gem_helpers", __dir__)
|
57
57
|
autoload :GemVersionPromoter, File.expand_path("bundler/gem_version_promoter", __dir__)
|
@@ -62,6 +62,8 @@ module Bundler
|
|
62
62
|
autoload :LazySpecification, File.expand_path("bundler/lazy_specification", __dir__)
|
63
63
|
autoload :LockfileParser, File.expand_path("bundler/lockfile_parser", __dir__)
|
64
64
|
autoload :MatchRemoteMetadata, File.expand_path("bundler/match_remote_metadata", __dir__)
|
65
|
+
autoload :Materialization, File.expand_path("bundler/materialization", __dir__)
|
66
|
+
autoload :NULL, File.expand_path("bundler/constants", __dir__)
|
65
67
|
autoload :ProcessLock, File.expand_path("bundler/process_lock", __dir__)
|
66
68
|
autoload :RemoteSpecification, File.expand_path("bundler/remote_specification", __dir__)
|
67
69
|
autoload :Resolver, File.expand_path("bundler/resolver", __dir__)
|
@@ -80,6 +82,7 @@ module Bundler
|
|
80
82
|
autoload :UI, File.expand_path("bundler/ui", __dir__)
|
81
83
|
autoload :URICredentialsFilter, File.expand_path("bundler/uri_credentials_filter", __dir__)
|
82
84
|
autoload :URINormalizer, File.expand_path("bundler/uri_normalizer", __dir__)
|
85
|
+
autoload :WINDOWS, File.expand_path("bundler/constants", __dir__)
|
83
86
|
autoload :SafeMarshal, File.expand_path("bundler/safe_marshal", __dir__)
|
84
87
|
|
85
88
|
class << self
|
@@ -209,6 +212,7 @@ module Bundler
|
|
209
212
|
# Bundler.require(:test) # requires second_gem
|
210
213
|
#
|
211
214
|
def require(*groups)
|
215
|
+
load_plugins
|
212
216
|
setup(*groups).require(*groups)
|
213
217
|
end
|
214
218
|
|
@@ -252,12 +256,6 @@ module Bundler
|
|
252
256
|
end
|
253
257
|
end
|
254
258
|
|
255
|
-
def most_specific_locked_platform?(platform)
|
256
|
-
return false unless defined?(@definition) && @definition
|
257
|
-
|
258
|
-
definition.most_specific_locked_platform == platform
|
259
|
-
end
|
260
|
-
|
261
259
|
def ruby_scope
|
262
260
|
"#{Bundler.rubygems.ruby_engine}/#{RbConfig::CONFIG["ruby_version"]}"
|
263
261
|
end
|
@@ -498,18 +496,27 @@ module Bundler
|
|
498
496
|
end
|
499
497
|
|
500
498
|
def which(executable)
|
501
|
-
|
502
|
-
|
503
|
-
|
499
|
+
executable_path = find_executable(executable)
|
500
|
+
return executable_path if executable_path
|
501
|
+
|
502
|
+
if (paths = ENV["PATH"])
|
504
503
|
quote = '"'
|
505
504
|
paths.split(File::PATH_SEPARATOR).find do |path|
|
506
505
|
path = path[1..-2] if path.start_with?(quote) && path.end_with?(quote)
|
507
|
-
executable_path = File.expand_path(executable, path)
|
508
|
-
return executable_path if
|
506
|
+
executable_path = find_executable(File.expand_path(executable, path))
|
507
|
+
return executable_path if executable_path
|
509
508
|
end
|
510
509
|
end
|
511
510
|
end
|
512
511
|
|
512
|
+
def find_executable(path)
|
513
|
+
extensions = RbConfig::CONFIG["EXECUTABLE_EXTS"]&.split
|
514
|
+
extensions = [RbConfig::CONFIG["EXEEXT"]] unless extensions&.any?
|
515
|
+
candidates = extensions.map {|ext| "#{path}#{ext}" }
|
516
|
+
|
517
|
+
candidates.find {|candidate| File.file?(candidate) && File.executable?(candidate) }
|
518
|
+
end
|
519
|
+
|
513
520
|
def read_file(file)
|
514
521
|
SharedHelpers.filesystem_access(file, :read) do
|
515
522
|
File.open(file, "r:UTF-8", &:read)
|
@@ -562,13 +569,30 @@ module Bundler
|
|
562
569
|
|
563
570
|
def git_present?
|
564
571
|
return @git_present if defined?(@git_present)
|
565
|
-
@git_present = Bundler.which("git
|
572
|
+
@git_present = Bundler.which("git")
|
566
573
|
end
|
567
574
|
|
568
575
|
def feature_flag
|
569
576
|
@feature_flag ||= FeatureFlag.new(VERSION)
|
570
577
|
end
|
571
578
|
|
579
|
+
def load_plugins(definition = Bundler.definition)
|
580
|
+
return if defined?(@load_plugins_ran)
|
581
|
+
|
582
|
+
Bundler.rubygems.load_plugins
|
583
|
+
|
584
|
+
requested_path_gems = definition.requested_specs.select {|s| s.source.is_a?(Source::Path) }
|
585
|
+
path_plugin_files = requested_path_gems.flat_map do |spec|
|
586
|
+
spec.matches_for_glob("rubygems_plugin#{Bundler.rubygems.suffix_pattern}")
|
587
|
+
rescue TypeError
|
588
|
+
error_message = "#{spec.name} #{spec.version} has an invalid gemspec"
|
589
|
+
raise Gem::InvalidSpecificationException, error_message
|
590
|
+
end
|
591
|
+
Bundler.rubygems.load_plugin_files(path_plugin_files)
|
592
|
+
Bundler.rubygems.load_env_plugins
|
593
|
+
@load_plugins_ran = true
|
594
|
+
end
|
595
|
+
|
572
596
|
def reset!
|
573
597
|
reset_paths!
|
574
598
|
Plugin.reset!
|
@@ -11,11 +11,11 @@ contributors to follow to reduce the time it takes to get changes merged in.
|
|
11
11
|
2. Ensure that your code blends well with ours:
|
12
12
|
* No trailing whitespace
|
13
13
|
* Match indentation (two spaces)
|
14
|
-
* Match coding style (run `rake rubocop`)
|
14
|
+
* Match coding style (run `bin/rake rubocop`)
|
15
15
|
|
16
16
|
3. If any new files are added or existing files removed in a commit or PR,
|
17
17
|
please update the `Manifest.txt` accordingly. This can be done by running
|
18
|
-
`rake update_manifest`
|
18
|
+
`bin/rake update_manifest`
|
19
19
|
|
20
20
|
4. Don't modify the history file or version number.
|
21
21
|
|
@@ -70,13 +70,11 @@ And to run an individual test method named `test_default` within a test file, yo
|
|
70
70
|
|
71
71
|
### Running bundler tests
|
72
72
|
|
73
|
-
Everything needs to be run from the `bundler/` subfolder.
|
74
|
-
|
75
73
|
To setup bundler tests:
|
76
74
|
|
77
|
-
rake spec:parallel_deps
|
75
|
+
bin/rake spec:parallel_deps
|
78
76
|
|
79
|
-
To run the entire bundler test suite in parallel (it takes a while):
|
77
|
+
To run the entire bundler test suite in parallel (it takes a while), run the following from the `bundler/` subfolder:
|
80
78
|
|
81
79
|
bin/parallel_rspec
|
82
80
|
|
@@ -84,7 +82,7 @@ There are some realworld higher level specs run in CI, but not run by `bin/paral
|
|
84
82
|
|
85
83
|
bin/rake spec:realworld
|
86
84
|
|
87
|
-
To run an individual test file location for example in `spec/install/gems/standalone_spec.rb` you can use:
|
85
|
+
To run an individual test file location for example in `spec/install/gems/standalone_spec.rb` you can use the following from the `bundler/` subfolder:
|
88
86
|
|
89
87
|
bin/rspec spec/install/gems/standalone_spec.rb
|
90
88
|
|
@@ -92,11 +90,13 @@ To run an individual test file location for example in `spec/install/gems/standa
|
|
92
90
|
|
93
91
|
You can check compliance with our code style with
|
94
92
|
|
95
|
-
rake rubocop
|
93
|
+
bin/rake rubocop
|
96
94
|
|
97
95
|
Optionally you can configure git hooks with to check this before every commit with
|
98
96
|
|
99
|
-
rake git_hooks
|
97
|
+
bin/rake git_hooks
|
98
|
+
|
99
|
+
For more information, check [SETUP.md](../bundler/development/SETUP.md) and [DEBUGGING.md](../bundler/development/DEBUGGING.md).
|
100
100
|
|
101
101
|
## Issues
|
102
102
|
|
@@ -84,7 +84,7 @@ changes to `master` by default _won't_ make their way into the current stable
|
|
84
84
|
branch, and development on `master` will be targeting the next minor
|
85
85
|
or major release.
|
86
86
|
|
87
|
-
There is a `rake prepare_release[<target_rubygems_version>]` rake task
|
87
|
+
There is a `bin/rake prepare_release[<target_rubygems_version>]` rake task
|
88
88
|
that helps with creating a release. It takes a single argument, the _exact
|
89
89
|
rubygems release_ being made (e.g. `3.2.3` when releasing bundler `2.2.3`).
|
90
90
|
This task checks out the appropriate stable branch (`3.2`, for example), grabs
|
@@ -158,21 +158,21 @@ affect only very few users in rare cases.
|
|
158
158
|
|
159
159
|
* Confirm all PRs that you want backported are properly tagged with `rubygems:
|
160
160
|
<type>` or `bundler: <type>` labels at GitHub.
|
161
|
-
* Run `rake prepare_release[<target_rubygems_version>]`. This will create
|
162
|
-
to the stable branch with the backports included in the release, and
|
163
|
-
changelogs and version bumps. It will also create a PR to merge
|
164
|
-
changelogs into master.
|
161
|
+
* Run `bin/rake prepare_release[<target_rubygems_version>]`. This will create
|
162
|
+
a PR to the stable branch with the backports included in the release, and
|
163
|
+
proper changelogs and version bumps. It will also create a PR to merge
|
164
|
+
release changelogs into master.
|
165
165
|
* Once CI passes, merge the release PR, switch to the stable branch and pull
|
166
166
|
the PR just merged.
|
167
|
-
* Release `bundler` with `rake bundler:release`.
|
168
|
-
* Release `rubygems` with `rake release`.
|
167
|
+
* Release `bundler` with `bin/rake bundler:release`.
|
168
|
+
* Release `rubygems` with `bin/rake release`.
|
169
169
|
|
170
170
|
### Steps for minor and major releases
|
171
171
|
|
172
172
|
* Confirm all PRs that you want listed in changelogs are properly tagged with
|
173
173
|
`rubygems: <type>` or `bundler: <type>` labels at GitHub.
|
174
|
-
* Run `rake prepare_release[<target_rubygems_version>]`. This will create
|
175
|
-
new stable branch off the master branch, and create a PR to it with the
|
174
|
+
* Run `bin/rake prepare_release[<target_rubygems_version>]`. This will create
|
175
|
+
a new stable branch off the master branch, and create a PR to it with the
|
176
176
|
proper version bumps and changelogs. It will also create a PR to merge
|
177
177
|
release changelogs into master.
|
178
178
|
* Replace the stable branch in the workflows with the new stable branch, and
|
@@ -181,8 +181,8 @@ affect only very few users in rare cases.
|
|
181
181
|
to the master PR.
|
182
182
|
* Once CI passes, merge the release PR, switch to the stable branch and pull
|
183
183
|
the PR just merged.
|
184
|
-
* Release `bundler` with `rake bundler:release`.
|
185
|
-
* Release `rubygems` with `rake release`.
|
184
|
+
* Release `bundler` with `bin/rake bundler:release`.
|
185
|
+
* Release `rubygems` with `bin/rake release`.
|
186
186
|
|
187
187
|
## Committer Access
|
188
188
|
|
@@ -134,7 +134,6 @@ class Gem::BasicSpecification
|
|
134
134
|
end
|
135
135
|
|
136
136
|
def find_full_gem_path # :nodoc:
|
137
|
-
# TODO: also, shouldn't it default to full_name if it hasn't been written?
|
138
137
|
File.expand_path File.join(gems_dir, full_name)
|
139
138
|
end
|
140
139
|
|
@@ -142,10 +141,10 @@ class Gem::BasicSpecification
|
|
142
141
|
|
143
142
|
##
|
144
143
|
# The full path to the gem (install path + full name).
|
144
|
+
#
|
145
|
+
# TODO: This is duplicated with #gem_dir. Eventually either of them should be deprecated.
|
145
146
|
|
146
147
|
def full_gem_path
|
147
|
-
# TODO: This is a heavily used method by gems, so we'll need
|
148
|
-
# to aleast just alias it to #gem_dir rather than remove it.
|
149
148
|
@full_gem_path ||= find_full_gem_path
|
150
149
|
end
|
151
150
|
|
@@ -221,9 +220,11 @@ class Gem::BasicSpecification
|
|
221
220
|
##
|
222
221
|
# Returns the full path to this spec's gem directory.
|
223
222
|
# eg: /usr/local/lib/ruby/1.8/gems/mygem-1.0
|
223
|
+
#
|
224
|
+
# TODO: This is duplicated with #full_gem_path. Eventually either of them should be deprecated.
|
224
225
|
|
225
226
|
def gem_dir
|
226
|
-
@gem_dir ||=
|
227
|
+
@gem_dir ||= find_full_gem_path
|
227
228
|
end
|
228
229
|
|
229
230
|
##
|
@@ -113,9 +113,9 @@ If no gems are named all gems in GEM_HOME are cleaned.
|
|
113
113
|
@candidate_gems = if options[:args].empty?
|
114
114
|
Gem::Specification.to_a
|
115
115
|
else
|
116
|
-
options[:args].
|
116
|
+
options[:args].flat_map do |gem_name|
|
117
117
|
Gem::Specification.find_all_by_name gem_name
|
118
|
-
end
|
118
|
+
end
|
119
119
|
end
|
120
120
|
end
|
121
121
|
|
@@ -102,7 +102,7 @@ prefix or only the files that are requireable.
|
|
102
102
|
end
|
103
103
|
|
104
104
|
def files_in_default_gem(spec)
|
105
|
-
spec.files.
|
105
|
+
spec.files.filter_map do |file|
|
106
106
|
if file.start_with?("#{spec.bindir}/")
|
107
107
|
[RbConfig::CONFIG["bindir"], file.delete_prefix("#{spec.bindir}/")]
|
108
108
|
else
|
@@ -119,7 +119,7 @@ prefix or only the files that are requireable.
|
|
119
119
|
|
120
120
|
[resolve.delete_suffix(requirable_part), requirable_part]
|
121
121
|
end
|
122
|
-
end
|
122
|
+
end
|
123
123
|
end
|
124
124
|
|
125
125
|
def gem_contents(name)
|
@@ -189,8 +189,8 @@ prefix or only the files that are requireable.
|
|
189
189
|
end
|
190
190
|
|
191
191
|
def specification_directories # :nodoc:
|
192
|
-
options[:specdirs].
|
192
|
+
options[:specdirs].flat_map do |i|
|
193
193
|
[i, File.join(i, "specifications")]
|
194
|
-
end
|
194
|
+
end
|
195
195
|
end
|
196
196
|
end
|
@@ -222,8 +222,11 @@ to the same gem path as user-installed gems.
|
|
222
222
|
terminate_interaction 1
|
223
223
|
end
|
224
224
|
|
225
|
+
old_exe = $0
|
226
|
+
$0 = exe
|
225
227
|
load Gem.activate_bin_path(contains_executable.first.name, exe, ">= 0.a")
|
226
228
|
ensure
|
229
|
+
$0 = old_exe if old_exe
|
227
230
|
ARGV.replace argv
|
228
231
|
end
|
229
232
|
|
@@ -120,9 +120,9 @@ extensions will be restored.
|
|
120
120
|
elsif options[:only_missing_extensions]
|
121
121
|
specification_record.select(&:missing_extensions?)
|
122
122
|
else
|
123
|
-
get_all_gem_names.sort.
|
123
|
+
get_all_gem_names.sort.flat_map do |gem_name|
|
124
124
|
specification_record.find_all_by_name(gem_name, options[:version]).reverse
|
125
|
-
end
|
125
|
+
end
|
126
126
|
end
|
127
127
|
|
128
128
|
specs = specs.select {|spec| spec.platform == RUBY_ENGINE || Gem::Platform.local === spec.platform || spec.platform == Gem::Platform::RUBY }
|
@@ -30,7 +30,7 @@ The push command will use ~/.gem/credentials to authenticate to a server, but yo
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def initialize
|
33
|
-
super "push", "Push a gem up to the gem server", host: host
|
33
|
+
super "push", "Push a gem up to the gem server", host: host, attestations: []
|
34
34
|
|
35
35
|
@user_defined_host = false
|
36
36
|
|
@@ -45,6 +45,11 @@ The push command will use ~/.gem/credentials to authenticate to a server, but yo
|
|
45
45
|
@user_defined_host = true
|
46
46
|
end
|
47
47
|
|
48
|
+
add_option("--attestation FILE",
|
49
|
+
"Push with sigstore attestations") do |value, options|
|
50
|
+
options[:attestations] << value
|
51
|
+
end
|
52
|
+
|
48
53
|
@host = nil
|
49
54
|
end
|
50
55
|
|
@@ -88,10 +93,18 @@ The push command will use ~/.gem/credentials to authenticate to a server, but yo
|
|
88
93
|
|
89
94
|
def send_push_request(name, args)
|
90
95
|
rubygems_api_request(*args, scope: get_push_scope) do |request|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
96
|
+
body = Gem.read_binary name
|
97
|
+
if options[:attestations].any?
|
98
|
+
request.set_form([
|
99
|
+
["gem", body, { filename: name, content_type: "application/octet-stream" }],
|
100
|
+
get_attestations_part,
|
101
|
+
], "multipart/form-data")
|
102
|
+
else
|
103
|
+
request.body = body
|
104
|
+
request.add_field "Content-Type", "application/octet-stream"
|
105
|
+
request.add_field "Content-Length", request.body.size
|
106
|
+
end
|
107
|
+
request.add_field "Authorization", api_key
|
95
108
|
end
|
96
109
|
end
|
97
110
|
|
@@ -107,4 +120,15 @@ The push command will use ~/.gem/credentials to authenticate to a server, but yo
|
|
107
120
|
def get_push_scope
|
108
121
|
:push_rubygem
|
109
122
|
end
|
123
|
+
|
124
|
+
def get_attestations_part
|
125
|
+
bundles = "[" + options[:attestations].map do |attestation|
|
126
|
+
Gem.read_binary(attestation)
|
127
|
+
end.join(",") + "]"
|
128
|
+
[
|
129
|
+
"attestations",
|
130
|
+
bundles,
|
131
|
+
{ content_type: "application/json" },
|
132
|
+
]
|
133
|
+
end
|
110
134
|
end
|
@@ -64,9 +64,9 @@ Use --overwrite to force rebuilding of documentation.
|
|
64
64
|
specs = if options[:all]
|
65
65
|
Gem::Specification.to_a
|
66
66
|
else
|
67
|
-
get_all_gem_names.
|
67
|
+
get_all_gem_names.flat_map do |name|
|
68
68
|
Gem::Specification.find_by_name name, options[:version]
|
69
|
-
end.
|
69
|
+
end.uniq
|
70
70
|
end
|
71
71
|
|
72
72
|
if specs.empty?
|
@@ -107,15 +107,6 @@ class Gem::Commands::SetupCommand < Gem::Command
|
|
107
107
|
@verbose = nil
|
108
108
|
end
|
109
109
|
|
110
|
-
def check_ruby_version
|
111
|
-
required_version = Gem::Requirement.new ">= 2.6.0"
|
112
|
-
|
113
|
-
unless required_version.satisfied_by? Gem.ruby_version
|
114
|
-
alert_error "Expected Ruby version #{required_version}, is #{Gem.ruby_version}"
|
115
|
-
terminate_interaction 1
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
110
|
def defaults_str # :nodoc:
|
120
111
|
"--format-executable --document ri --regenerate-binstubs"
|
121
112
|
end
|
@@ -148,8 +139,6 @@ By default, this RubyGems will install gem as:
|
|
148
139
|
def execute
|
149
140
|
@verbose = Gem.configuration.really_verbose
|
150
141
|
|
151
|
-
check_ruby_version
|
152
|
-
|
153
142
|
require "fileutils"
|
154
143
|
if Gem.configuration.really_verbose
|
155
144
|
extend FileUtils::Verbose
|
@@ -279,11 +268,7 @@ By default, this RubyGems will install gem as:
|
|
279
268
|
File.open bin_cmd_file, "w" do |file|
|
280
269
|
file.puts <<-TEXT
|
281
270
|
@ECHO OFF
|
282
|
-
|
283
|
-
@"#{File.basename(Gem.ruby).chomp('"')}" "#{dest_file}" %1 %2 %3 %4 %5 %6 %7 %8 %9
|
284
|
-
GOTO :EOF
|
285
|
-
:WinNT
|
286
|
-
@"#{File.basename(Gem.ruby).chomp('"')}" "%~dpn0" %*
|
271
|
+
@"%~dp0#{File.basename(Gem.ruby).chomp('"')}" "%~dpn0" %*
|
287
272
|
TEXT
|
288
273
|
end
|
289
274
|
|
@@ -143,12 +143,6 @@ command help for an example.
|
|
143
143
|
# get_path 'rake', '< 0.1' # nil
|
144
144
|
# get_path 'rak' # nil (exact name required)
|
145
145
|
#--
|
146
|
-
# TODO: This should be refactored so that it's a general service. I don't
|
147
|
-
# think any of our existing classes are the right place though. Just maybe
|
148
|
-
# 'Cache'?
|
149
|
-
#
|
150
|
-
# TODO: It just uses Gem.dir for now. What's an easy way to get the list of
|
151
|
-
# source directories?
|
152
146
|
|
153
147
|
def get_path(dependency)
|
154
148
|
return dependency.name if /\.gem$/i.match?(dependency.name)
|
@@ -317,16 +317,10 @@ command to remove old versions.
|
|
317
317
|
|
318
318
|
#
|
319
319
|
# Oldest version we support downgrading to. This is the version that
|
320
|
-
# originally ships with the
|
321
|
-
# test each ruby against older rubygems, so we can't really guarantee it
|
322
|
-
# works. Version list can be checked here: https://stdgems.org/rubygems
|
320
|
+
# originally ships with the oldest supported patch version of ruby.
|
323
321
|
#
|
324
322
|
def oldest_supported_version
|
325
323
|
@oldest_supported_version ||=
|
326
|
-
|
327
|
-
Gem::Version.new("3.3.3")
|
328
|
-
else
|
329
|
-
Gem::Version.new("3.2.3")
|
330
|
-
end
|
324
|
+
Gem::Version.new("3.3.3")
|
331
325
|
end
|
332
326
|
end
|