rubygems-update 3.7.1 → 4.0.0.beta1
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 +1434 -1317
- data/CODE_OF_CONDUCT.md +7 -129
- data/Manifest.txt +5 -11
- data/README.md +2 -2
- data/bundler/CHANGELOG.md +1001 -902
- data/bundler/README.md +4 -4
- data/bundler/bundler.gemspec +3 -3
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/capistrano.rb +1 -19
- data/bundler/lib/bundler/checksum.rb +6 -0
- data/bundler/lib/bundler/cli/cache.rb +1 -12
- data/bundler/lib/bundler/cli/common.rb +21 -4
- data/bundler/lib/bundler/cli/config.rb +1 -2
- data/bundler/lib/bundler/cli/console.rb +5 -0
- data/bundler/lib/bundler/cli/exec.rb +29 -4
- data/bundler/lib/bundler/cli/gem.rb +19 -33
- data/bundler/lib/bundler/cli/install.rb +7 -84
- data/bundler/lib/bundler/cli/issue.rb +2 -2
- data/bundler/lib/bundler/cli/list.rb +33 -2
- data/bundler/lib/bundler/cli/lock.rb +5 -5
- data/bundler/lib/bundler/cli/plugin.rb +5 -1
- data/bundler/lib/bundler/cli/show.rb +3 -7
- data/bundler/lib/bundler/cli/update.rb +3 -3
- data/bundler/lib/bundler/cli.rb +97 -95
- data/bundler/lib/bundler/compact_index_client.rb +0 -1
- data/bundler/lib/bundler/current_ruby.rb +3 -15
- data/bundler/lib/bundler/definition.rb +122 -95
- data/bundler/lib/bundler/deployment.rb +1 -64
- data/bundler/lib/bundler/digest.rb +1 -1
- data/bundler/lib/bundler/dsl.rb +14 -36
- data/bundler/lib/bundler/endpoint_specification.rb +0 -22
- data/bundler/lib/bundler/errors.rb +1 -5
- data/bundler/lib/bundler/feature_flag.rb +0 -33
- data/bundler/lib/bundler/fetcher/compact_index.rb +1 -1
- data/bundler/lib/bundler/friendly_errors.rb +2 -2
- data/bundler/lib/bundler/index.rb +0 -7
- data/bundler/lib/bundler/inline.rb +1 -1
- data/bundler/lib/bundler/installer/gem_installer.rb +0 -11
- data/bundler/lib/bundler/installer.rb +0 -6
- data/bundler/lib/bundler/lockfile_generator.rb +1 -1
- data/bundler/lib/bundler/lockfile_parser.rb +2 -12
- data/bundler/lib/bundler/man/bundle-add.1 +1 -1
- data/bundler/lib/bundler/man/bundle-binstubs.1 +3 -6
- data/bundler/lib/bundler/man/bundle-binstubs.1.ronn +4 -6
- data/bundler/lib/bundler/man/bundle-cache.1 +2 -14
- data/bundler/lib/bundler/man/bundle-cache.1.ronn +1 -14
- data/bundler/lib/bundler/man/bundle-check.1 +2 -5
- data/bundler/lib/bundler/man/bundle-check.1.ronn +0 -5
- data/bundler/lib/bundler/man/bundle-clean.1 +1 -1
- data/bundler/lib/bundler/man/bundle-config.1 +36 -46
- data/bundler/lib/bundler/man/bundle-config.1.ronn +69 -75
- data/bundler/lib/bundler/man/bundle-console.1 +1 -1
- data/bundler/lib/bundler/man/bundle-doctor.1 +4 -4
- data/bundler/lib/bundler/man/bundle-doctor.1.ronn +4 -4
- data/bundler/lib/bundler/man/bundle-env.1 +1 -1
- data/bundler/lib/bundler/man/bundle-exec.1 +2 -5
- data/bundler/lib/bundler/man/bundle-exec.1.ronn +1 -5
- data/bundler/lib/bundler/man/bundle-fund.1 +1 -1
- data/bundler/lib/bundler/man/bundle-gem.1 +3 -6
- data/bundler/lib/bundler/man/bundle-gem.1.ronn +2 -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-install.1 +8 -59
- data/bundler/lib/bundler/man/bundle-install.1.ronn +12 -107
- data/bundler/lib/bundler/man/bundle-issue.1 +1 -1
- data/bundler/lib/bundler/man/bundle-licenses.1 +1 -1
- data/bundler/lib/bundler/man/bundle-list.1 +6 -1
- data/bundler/lib/bundler/man/bundle-list.1.ronn +5 -0
- 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 +1 -1
- data/bundler/lib/bundler/man/bundle-plugin.1 +33 -15
- data/bundler/lib/bundler/man/bundle-plugin.1.ronn +36 -15
- data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
- data/bundler/lib/bundler/man/bundle-remove.1 +2 -8
- data/bundler/lib/bundler/man/bundle-remove.1.ronn +1 -8
- data/bundler/lib/bundler/man/bundle-show.1 +2 -5
- data/bundler/lib/bundler/man/bundle-show.1.ronn +0 -4
- 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.1 +1 -10
- data/bundler/lib/bundler/man/bundle.1.ronn +0 -9
- data/bundler/lib/bundler/man/gemfile.5 +1 -1
- data/bundler/lib/bundler/man/index.txt +0 -2
- data/bundler/lib/bundler/materialization.rb +1 -1
- data/bundler/lib/bundler/plugin/installer.rb +0 -10
- data/bundler/lib/bundler/plugin/source_list.rb +1 -1
- data/bundler/lib/bundler/plugin.rb +1 -1
- data/bundler/lib/bundler/resolver/package.rb +1 -0
- data/bundler/lib/bundler/resolver.rb +1 -1
- data/bundler/lib/bundler/ruby_dsl.rb +2 -0
- data/bundler/lib/bundler/ruby_version.rb +1 -3
- data/bundler/lib/bundler/rubygems_ext.rb +1 -1
- data/bundler/lib/bundler/rubygems_gem_installer.rb +1 -1
- data/bundler/lib/bundler/rubygems_integration.rb +1 -5
- data/bundler/lib/bundler/self_manager.rb +1 -1
- data/bundler/lib/bundler/settings.rb +8 -27
- data/bundler/lib/bundler/shared_helpers.rb +8 -20
- data/bundler/lib/bundler/source/gemspec.rb +4 -0
- data/bundler/lib/bundler/source/git/git_proxy.rb +3 -11
- data/bundler/lib/bundler/source/git.rb +2 -3
- data/bundler/lib/bundler/source/path.rb +5 -7
- data/bundler/lib/bundler/source/rubygems.rb +11 -17
- data/bundler/lib/bundler/source.rb +1 -1
- data/bundler/lib/bundler/source_list.rb +4 -45
- data/bundler/lib/bundler/source_map.rb +2 -5
- data/bundler/lib/bundler/spec_set.rb +6 -15
- data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +7 -129
- data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +1 -1
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-go.rb.tt +11 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/go.mod.tt +5 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/newgem-go.c.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/newgem.go.tt +31 -0
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +6 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +7 -4
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +26 -23
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +50 -6
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +57 -52
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +5 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +42 -6
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb +2 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +3 -7
- data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +57 -15
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +34 -21
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +12 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +9 -8
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +2 -2
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/lib/bundler/vlad.rb +1 -14
- data/bundler/lib/bundler.rb +6 -28
- data/doc/MAINTAINERS.txt +0 -7
- data/doc/bundler/UPGRADING.md +11 -27
- data/doc/rubygems/CONTRIBUTING.md +1 -1
- data/lib/rubygems/basic_specification.rb +3 -9
- data/lib/rubygems/bundler_version_finder.rb +1 -0
- data/lib/rubygems/command.rb +1 -1
- data/lib/rubygems/command_manager.rb +3 -4
- data/lib/rubygems/commands/build_command.rb +0 -7
- data/lib/rubygems/commands/cert_command.rb +1 -1
- data/lib/rubygems/commands/install_command.rb +1 -5
- data/lib/rubygems/commands/setup_command.rb +5 -3
- data/lib/rubygems/commands/sources_command.rb +122 -18
- data/lib/rubygems/config_file.rb +1 -1
- data/lib/rubygems/defaults.rb +1 -1
- data/lib/rubygems/dependency.rb +1 -1
- data/lib/rubygems/dependency_installer.rb +0 -77
- data/lib/rubygems/dependency_list.rb +1 -2
- data/lib/rubygems/deprecate.rb +74 -72
- data/lib/rubygems/doctor.rb +1 -1
- data/lib/rubygems/errors.rb +1 -1
- data/lib/rubygems/exceptions.rb +5 -15
- data/lib/rubygems/ext/builder.rb +6 -2
- data/lib/rubygems/ext/cargo_builder.rb +2 -2
- data/lib/rubygems/ext/cmake_builder.rb +97 -8
- data/lib/rubygems/ext/configure_builder.rb +2 -2
- data/lib/rubygems/ext/ext_conf_builder.rb +6 -2
- data/lib/rubygems/ext/rake_builder.rb +2 -2
- data/lib/rubygems/gem_runner.rb +0 -1
- data/lib/rubygems/install_update_options.rb +1 -2
- data/lib/rubygems/installer.rb +16 -54
- data/lib/rubygems/name_tuple.rb +7 -1
- data/lib/rubygems/package/tar_header.rb +4 -4
- data/lib/rubygems/package/tar_reader.rb +2 -0
- data/lib/rubygems/package/tar_writer.rb +1 -1
- data/lib/rubygems/package.rb +21 -12
- data/lib/rubygems/platform.rb +31 -11
- data/lib/rubygems/remote_fetcher.rb +8 -5
- data/lib/rubygems/resolver/conflict.rb +1 -1
- data/lib/rubygems/resolver.rb +1 -1
- data/lib/rubygems/s3_uri_signer.rb +54 -7
- data/lib/rubygems/security/signer.rb +1 -1
- data/lib/rubygems/source.rb +2 -2
- data/lib/rubygems/source_list.rb +36 -0
- data/lib/rubygems/spec_fetcher.rb +4 -4
- data/lib/rubygems/specification.rb +5 -96
- data/lib/rubygems/specification_policy.rb +0 -36
- data/lib/rubygems/specification_record.rb +1 -1
- data/lib/rubygems/text.rb +1 -1
- data/lib/rubygems/uninstaller.rb +17 -6
- data/lib/rubygems/user_interaction.rb +6 -9
- data/lib/rubygems/util.rb +0 -22
- data/lib/rubygems/validator.rb +1 -1
- data/lib/rubygems/vendor/net-http/lib/net/http/generic_request.rb +25 -9
- data/lib/rubygems/vendor/net-http/lib/net/http/responses.rb +2 -2
- data/lib/rubygems/vendor/net-http/lib/net/http.rb +14 -14
- data/lib/rubygems/vendor/optparse/lib/optparse.rb +82 -41
- data/lib/rubygems/vendor/resolv/lib/resolv.rb +1 -1
- data/lib/rubygems/vendor/timeout/lib/timeout.rb +4 -1
- data/lib/rubygems/vendor/uri/lib/uri/common.rb +57 -15
- data/lib/rubygems/vendor/uri/lib/uri/file.rb +1 -1
- data/lib/rubygems/vendor/uri/lib/uri/generic.rb +34 -21
- data/lib/rubygems/vendor/uri/lib/uri/http.rb +12 -0
- data/lib/rubygems/vendor/uri/lib/uri/rfc2396_parser.rb +9 -8
- data/lib/rubygems/vendor/uri/lib/uri/version.rb +2 -2
- data/lib/rubygems/version.rb +2 -17
- data/lib/rubygems/win_platform.rb +31 -0
- data/lib/rubygems.rb +10 -38
- data/rubygems-update.gemspec +4 -4
- metadata +10 -18
- data/bundler/lib/bundler/cli/inject.rb +0 -60
- data/bundler/lib/bundler/cli/viz.rb +0 -31
- data/bundler/lib/bundler/graph.rb +0 -152
- data/bundler/lib/bundler/man/bundle-inject.1 +0 -31
- data/bundler/lib/bundler/man/bundle-inject.1.ronn +0 -32
- data/bundler/lib/bundler/man/bundle-viz.1 +0 -30
- data/bundler/lib/bundler/man/bundle-viz.1.ronn +0 -36
- data/bundler/lib/bundler/similarity_detector.rb +0 -63
- data/lib/rubygems/commands/query_command.rb +0 -43
- data/lib/rubygems/compatibility.rb +0 -41
- data/lib/rubygems/install_default_message.rb +0 -13
|
@@ -30,6 +30,9 @@ module Gem::URI
|
|
|
30
30
|
remove_const(:Parser) if defined?(::Gem::URI::Parser)
|
|
31
31
|
const_set("Parser", parser.class)
|
|
32
32
|
|
|
33
|
+
remove_const(:PARSER) if defined?(::Gem::URI::PARSER)
|
|
34
|
+
const_set("PARSER", parser)
|
|
35
|
+
|
|
33
36
|
remove_const(:REGEXP) if defined?(::Gem::URI::REGEXP)
|
|
34
37
|
remove_const(:PATTERN) if defined?(::Gem::URI::PATTERN)
|
|
35
38
|
if Parser == RFC2396_Parser
|
|
@@ -49,10 +52,10 @@ module Gem::URI
|
|
|
49
52
|
warn "Gem::URI::REGEXP is obsolete. Use Gem::URI::RFC2396_REGEXP explicitly.", uplevel: 1 if $VERBOSE
|
|
50
53
|
Gem::URI::RFC2396_REGEXP
|
|
51
54
|
elsif value = RFC2396_PARSER.regexp[const]
|
|
52
|
-
warn "Gem::URI::#{const} is obsolete. Use RFC2396_PARSER.regexp[#{const.inspect}] explicitly.", uplevel: 1 if $VERBOSE
|
|
55
|
+
warn "Gem::URI::#{const} is obsolete. Use Gem::URI::RFC2396_PARSER.regexp[#{const.inspect}] explicitly.", uplevel: 1 if $VERBOSE
|
|
53
56
|
value
|
|
54
57
|
elsif value = RFC2396_Parser.const_get(const)
|
|
55
|
-
warn "Gem::URI::#{const} is obsolete. Use RFC2396_Parser::#{const} explicitly.", uplevel: 1 if $VERBOSE
|
|
58
|
+
warn "Gem::URI::#{const} is obsolete. Use Gem::URI::RFC2396_Parser::#{const} explicitly.", uplevel: 1 if $VERBOSE
|
|
56
59
|
value
|
|
57
60
|
else
|
|
58
61
|
super
|
|
@@ -92,6 +95,40 @@ module Gem::URI
|
|
|
92
95
|
end
|
|
93
96
|
|
|
94
97
|
module Schemes # :nodoc:
|
|
98
|
+
class << self
|
|
99
|
+
ReservedChars = ".+-"
|
|
100
|
+
EscapedChars = "\u01C0\u01C1\u01C2"
|
|
101
|
+
# Use Lo category chars as escaped chars for TruffleRuby, which
|
|
102
|
+
# does not allow Symbol categories as identifiers.
|
|
103
|
+
|
|
104
|
+
def escape(name)
|
|
105
|
+
unless name and name.ascii_only?
|
|
106
|
+
return nil
|
|
107
|
+
end
|
|
108
|
+
name.upcase.tr(ReservedChars, EscapedChars)
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
def unescape(name)
|
|
112
|
+
name.tr(EscapedChars, ReservedChars).encode(Encoding::US_ASCII).upcase
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def find(name)
|
|
116
|
+
const_get(name, false) if name and const_defined?(name, false)
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def register(name, klass)
|
|
120
|
+
unless scheme = escape(name)
|
|
121
|
+
raise ArgumentError, "invalid character as scheme - #{name}"
|
|
122
|
+
end
|
|
123
|
+
const_set(scheme, klass)
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
def list
|
|
127
|
+
constants.map { |name|
|
|
128
|
+
[unescape(name.to_s), const_get(name)]
|
|
129
|
+
}.to_h
|
|
130
|
+
end
|
|
131
|
+
end
|
|
95
132
|
end
|
|
96
133
|
private_constant :Schemes
|
|
97
134
|
|
|
@@ -104,7 +141,7 @@ module Gem::URI
|
|
|
104
141
|
# Note that after calling String#upcase on +scheme+, it must be a valid
|
|
105
142
|
# constant name.
|
|
106
143
|
def self.register_scheme(scheme, klass)
|
|
107
|
-
Schemes.
|
|
144
|
+
Schemes.register(scheme, klass)
|
|
108
145
|
end
|
|
109
146
|
|
|
110
147
|
# Returns a hash of the defined schemes:
|
|
@@ -122,14 +159,14 @@ module Gem::URI
|
|
|
122
159
|
#
|
|
123
160
|
# Related: Gem::URI.register_scheme.
|
|
124
161
|
def self.scheme_list
|
|
125
|
-
Schemes.
|
|
126
|
-
[name.to_s.upcase, Schemes.const_get(name)]
|
|
127
|
-
}.to_h
|
|
162
|
+
Schemes.list
|
|
128
163
|
end
|
|
129
164
|
|
|
165
|
+
# :stopdoc:
|
|
130
166
|
INITIAL_SCHEMES = scheme_list
|
|
131
167
|
private_constant :INITIAL_SCHEMES
|
|
132
168
|
Ractor.make_shareable(INITIAL_SCHEMES) if defined?(Ractor)
|
|
169
|
+
# :startdoc:
|
|
133
170
|
|
|
134
171
|
# Returns a new object constructed from the given +scheme+, +arguments+,
|
|
135
172
|
# and +default+:
|
|
@@ -148,12 +185,10 @@ module Gem::URI
|
|
|
148
185
|
# # => #<Gem::URI::HTTP foo://john.doe@www.example.com:123/forum/questions/?tag=networking&order=newest#top>
|
|
149
186
|
#
|
|
150
187
|
def self.for(scheme, *arguments, default: Generic)
|
|
151
|
-
const_name = scheme
|
|
188
|
+
const_name = Schemes.escape(scheme)
|
|
152
189
|
|
|
153
190
|
uri_class = INITIAL_SCHEMES[const_name]
|
|
154
|
-
uri_class ||=
|
|
155
|
-
Schemes.const_get(const_name, false)
|
|
156
|
-
end
|
|
191
|
+
uri_class ||= Schemes.find(const_name)
|
|
157
192
|
uri_class ||= default
|
|
158
193
|
|
|
159
194
|
return uri_class.new(scheme, *arguments)
|
|
@@ -195,7 +230,7 @@ module Gem::URI
|
|
|
195
230
|
# ["fragment", "top"]]
|
|
196
231
|
#
|
|
197
232
|
def self.split(uri)
|
|
198
|
-
|
|
233
|
+
PARSER.split(uri)
|
|
199
234
|
end
|
|
200
235
|
|
|
201
236
|
# Returns a new \Gem::URI object constructed from the given string +uri+:
|
|
@@ -205,11 +240,11 @@ module Gem::URI
|
|
|
205
240
|
# Gem::URI.parse('http://john.doe@www.example.com:123/forum/questions/?tag=networking&order=newest#top')
|
|
206
241
|
# # => #<Gem::URI::HTTP http://john.doe@www.example.com:123/forum/questions/?tag=networking&order=newest#top>
|
|
207
242
|
#
|
|
208
|
-
# It's recommended to first ::escape string +uri+
|
|
243
|
+
# It's recommended to first Gem::URI::RFC2396_PARSER.escape string +uri+
|
|
209
244
|
# if it may contain invalid Gem::URI characters.
|
|
210
245
|
#
|
|
211
246
|
def self.parse(uri)
|
|
212
|
-
|
|
247
|
+
PARSER.parse(uri)
|
|
213
248
|
end
|
|
214
249
|
|
|
215
250
|
# Merges the given Gem::URI strings +str+
|
|
@@ -265,7 +300,7 @@ module Gem::URI
|
|
|
265
300
|
#
|
|
266
301
|
def self.extract(str, schemes = nil, &block) # :nodoc:
|
|
267
302
|
warn "Gem::URI.extract is obsolete", uplevel: 1 if $VERBOSE
|
|
268
|
-
|
|
303
|
+
PARSER.extract(str, schemes, &block)
|
|
269
304
|
end
|
|
270
305
|
|
|
271
306
|
#
|
|
@@ -302,7 +337,7 @@ module Gem::URI
|
|
|
302
337
|
#
|
|
303
338
|
def self.regexp(schemes = nil)# :nodoc:
|
|
304
339
|
warn "Gem::URI.regexp is obsolete", uplevel: 1 if $VERBOSE
|
|
305
|
-
|
|
340
|
+
PARSER.make_regexp(schemes)
|
|
306
341
|
end
|
|
307
342
|
|
|
308
343
|
TBLENCWWWCOMP_ = {} # :nodoc:
|
|
@@ -407,6 +442,8 @@ module Gem::URI
|
|
|
407
442
|
_decode_uri_component(/%\h\h/, str, enc)
|
|
408
443
|
end
|
|
409
444
|
|
|
445
|
+
# Returns a string derived from the given string +str+ with
|
|
446
|
+
# Gem::URI-encoded characters matching +regexp+ according to +table+.
|
|
410
447
|
def self._encode_uri_component(regexp, table, str, enc)
|
|
411
448
|
str = str.to_s.dup
|
|
412
449
|
if str.encoding != Encoding::ASCII_8BIT
|
|
@@ -421,6 +458,8 @@ module Gem::URI
|
|
|
421
458
|
end
|
|
422
459
|
private_class_method :_encode_uri_component
|
|
423
460
|
|
|
461
|
+
# Returns a string decoding characters matching +regexp+ from the
|
|
462
|
+
# given \URL-encoded string +str+.
|
|
424
463
|
def self._decode_uri_component(regexp, str, enc)
|
|
425
464
|
raise ArgumentError, "invalid %-encoding (#{str})" if /%(?!\h\h)/.match?(str)
|
|
426
465
|
str.b.gsub(regexp, TBLDECWWWCOMP_).force_encoding(enc)
|
|
@@ -859,6 +898,7 @@ module Gem
|
|
|
859
898
|
# Returns a \Gem::URI object derived from the given +uri+,
|
|
860
899
|
# which may be a \Gem::URI string or an existing \Gem::URI object:
|
|
861
900
|
#
|
|
901
|
+
# require 'rubygems/vendor/uri/lib/uri'
|
|
862
902
|
# # Returns a new Gem::URI.
|
|
863
903
|
# uri = Gem::URI('http://github.com/ruby/ruby')
|
|
864
904
|
# # => #<Gem::URI::HTTP http://github.com/ruby/ruby>
|
|
@@ -866,6 +906,8 @@ module Gem
|
|
|
866
906
|
# Gem::URI(uri)
|
|
867
907
|
# # => #<Gem::URI::HTTP http://github.com/ruby/ruby>
|
|
868
908
|
#
|
|
909
|
+
# You must require 'rubygems/vendor/uri/lib/uri' to use this method.
|
|
910
|
+
#
|
|
869
911
|
def URI(uri)
|
|
870
912
|
if uri.is_a?(Gem::URI::Generic)
|
|
871
913
|
uri
|
|
@@ -47,7 +47,7 @@ module Gem::URI
|
|
|
47
47
|
# :path => '/ruby/src'})
|
|
48
48
|
# uri2.to_s # => "file://host.example.com/ruby/src"
|
|
49
49
|
#
|
|
50
|
-
# uri3 = Gem::URI::File.build({:path => Gem::URI::escape('/path/my file.txt')})
|
|
50
|
+
# uri3 = Gem::URI::File.build({:path => Gem::URI::RFC2396_PARSER.escape('/path/my file.txt')})
|
|
51
51
|
# uri3.to_s # => "file:///path/my%20file.txt"
|
|
52
52
|
#
|
|
53
53
|
def self.build(args)
|
|
@@ -73,7 +73,7 @@ module Gem::URI
|
|
|
73
73
|
#
|
|
74
74
|
# At first, tries to create a new Gem::URI::Generic instance using
|
|
75
75
|
# Gem::URI::Generic::build. But, if exception Gem::URI::InvalidComponentError is raised,
|
|
76
|
-
# then it does Gem::URI::
|
|
76
|
+
# then it does Gem::URI::RFC2396_PARSER.escape all Gem::URI components and tries again.
|
|
77
77
|
#
|
|
78
78
|
def self.build2(args)
|
|
79
79
|
begin
|
|
@@ -126,9 +126,9 @@ module Gem::URI
|
|
|
126
126
|
end
|
|
127
127
|
end
|
|
128
128
|
else
|
|
129
|
-
component = self.
|
|
129
|
+
component = self.component rescue ::Gem::URI::Generic::COMPONENT
|
|
130
130
|
raise ArgumentError,
|
|
131
|
-
|
|
131
|
+
"expected Array of or Hash of components of #{self} (#{component.join(', ')})"
|
|
132
132
|
end
|
|
133
133
|
|
|
134
134
|
tmp << nil
|
|
@@ -186,18 +186,18 @@ module Gem::URI
|
|
|
186
186
|
|
|
187
187
|
if arg_check
|
|
188
188
|
self.scheme = scheme
|
|
189
|
-
self.userinfo = userinfo
|
|
190
189
|
self.hostname = host
|
|
191
190
|
self.port = port
|
|
191
|
+
self.userinfo = userinfo
|
|
192
192
|
self.path = path
|
|
193
193
|
self.query = query
|
|
194
194
|
self.opaque = opaque
|
|
195
195
|
self.fragment = fragment
|
|
196
196
|
else
|
|
197
197
|
self.set_scheme(scheme)
|
|
198
|
-
self.set_userinfo(userinfo)
|
|
199
198
|
self.set_host(host)
|
|
200
199
|
self.set_port(port)
|
|
200
|
+
self.set_userinfo(userinfo)
|
|
201
201
|
self.set_path(path)
|
|
202
202
|
self.query = query
|
|
203
203
|
self.set_opaque(opaque)
|
|
@@ -284,7 +284,7 @@ module Gem::URI
|
|
|
284
284
|
|
|
285
285
|
# Returns the parser to be used.
|
|
286
286
|
#
|
|
287
|
-
# Unless
|
|
287
|
+
# Unless the +parser+ is defined, DEFAULT_PARSER is used.
|
|
288
288
|
#
|
|
289
289
|
def parser
|
|
290
290
|
if !defined?(@parser) || !@parser
|
|
@@ -315,7 +315,7 @@ module Gem::URI
|
|
|
315
315
|
end
|
|
316
316
|
|
|
317
317
|
#
|
|
318
|
-
# Checks the scheme +v+ component against the
|
|
318
|
+
# Checks the scheme +v+ component against the +parser+ Regexp for :SCHEME.
|
|
319
319
|
#
|
|
320
320
|
def check_scheme(v)
|
|
321
321
|
if v && parser.regexp[:SCHEME] !~ v
|
|
@@ -385,7 +385,7 @@ module Gem::URI
|
|
|
385
385
|
|
|
386
386
|
#
|
|
387
387
|
# Checks the user +v+ component for RFC2396 compliance
|
|
388
|
-
# and against the
|
|
388
|
+
# and against the +parser+ Regexp for :USERINFO.
|
|
389
389
|
#
|
|
390
390
|
# Can not have a registry or opaque component defined,
|
|
391
391
|
# with a user component defined.
|
|
@@ -409,7 +409,7 @@ module Gem::URI
|
|
|
409
409
|
|
|
410
410
|
#
|
|
411
411
|
# Checks the password +v+ component for RFC2396 compliance
|
|
412
|
-
# and against the
|
|
412
|
+
# and against the +parser+ Regexp for :USERINFO.
|
|
413
413
|
#
|
|
414
414
|
# Can not have a registry or opaque component defined,
|
|
415
415
|
# with a user component defined.
|
|
@@ -511,7 +511,7 @@ module Gem::URI
|
|
|
511
511
|
user, password = split_userinfo(user)
|
|
512
512
|
end
|
|
513
513
|
@user = user
|
|
514
|
-
@password = password
|
|
514
|
+
@password = password
|
|
515
515
|
|
|
516
516
|
[@user, @password]
|
|
517
517
|
end
|
|
@@ -522,7 +522,7 @@ module Gem::URI
|
|
|
522
522
|
# See also Gem::URI::Generic.user=.
|
|
523
523
|
#
|
|
524
524
|
def set_user(v)
|
|
525
|
-
set_userinfo(v,
|
|
525
|
+
set_userinfo(v, nil)
|
|
526
526
|
v
|
|
527
527
|
end
|
|
528
528
|
protected :set_user
|
|
@@ -574,6 +574,12 @@ module Gem::URI
|
|
|
574
574
|
@password
|
|
575
575
|
end
|
|
576
576
|
|
|
577
|
+
# Returns the authority info (array of user, password, host and
|
|
578
|
+
# port), if any is set. Or returns +nil+.
|
|
579
|
+
def authority
|
|
580
|
+
return @user, @password, @host, @port if @user || @password || @host || @port
|
|
581
|
+
end
|
|
582
|
+
|
|
577
583
|
# Returns the user component after Gem::URI decoding.
|
|
578
584
|
def decoded_user
|
|
579
585
|
Gem::URI.decode_uri_component(@user) if @user
|
|
@@ -586,7 +592,7 @@ module Gem::URI
|
|
|
586
592
|
|
|
587
593
|
#
|
|
588
594
|
# Checks the host +v+ component for RFC2396 compliance
|
|
589
|
-
# and against the
|
|
595
|
+
# and against the +parser+ Regexp for :HOST.
|
|
590
596
|
#
|
|
591
597
|
# Can not have a registry or opaque component defined,
|
|
592
598
|
# with a host component defined.
|
|
@@ -615,6 +621,13 @@ module Gem::URI
|
|
|
615
621
|
end
|
|
616
622
|
protected :set_host
|
|
617
623
|
|
|
624
|
+
# Protected setter for the authority info (+user+, +password+, +host+
|
|
625
|
+
# and +port+). If +port+ is +nil+, +default_port+ will be set.
|
|
626
|
+
#
|
|
627
|
+
protected def set_authority(user, password, host, port = nil)
|
|
628
|
+
@user, @password, @host, @port = user, password, host, port || self.default_port
|
|
629
|
+
end
|
|
630
|
+
|
|
618
631
|
#
|
|
619
632
|
# == Args
|
|
620
633
|
#
|
|
@@ -639,6 +652,7 @@ module Gem::URI
|
|
|
639
652
|
def host=(v)
|
|
640
653
|
check_host(v)
|
|
641
654
|
set_host(v)
|
|
655
|
+
set_userinfo(nil)
|
|
642
656
|
v
|
|
643
657
|
end
|
|
644
658
|
|
|
@@ -675,7 +689,7 @@ module Gem::URI
|
|
|
675
689
|
|
|
676
690
|
#
|
|
677
691
|
# Checks the port +v+ component for RFC2396 compliance
|
|
678
|
-
# and against the
|
|
692
|
+
# and against the +parser+ Regexp for :PORT.
|
|
679
693
|
#
|
|
680
694
|
# Can not have a registry or opaque component defined,
|
|
681
695
|
# with a port component defined.
|
|
@@ -729,6 +743,7 @@ module Gem::URI
|
|
|
729
743
|
def port=(v)
|
|
730
744
|
check_port(v)
|
|
731
745
|
set_port(v)
|
|
746
|
+
set_userinfo(nil)
|
|
732
747
|
port
|
|
733
748
|
end
|
|
734
749
|
|
|
@@ -748,7 +763,7 @@ module Gem::URI
|
|
|
748
763
|
|
|
749
764
|
#
|
|
750
765
|
# Checks the path +v+ component for RFC2396 compliance
|
|
751
|
-
# and against the
|
|
766
|
+
# and against the +parser+ Regexp
|
|
752
767
|
# for :ABS_PATH and :REL_PATH.
|
|
753
768
|
#
|
|
754
769
|
# Can not have a opaque component defined,
|
|
@@ -853,7 +868,7 @@ module Gem::URI
|
|
|
853
868
|
|
|
854
869
|
#
|
|
855
870
|
# Checks the opaque +v+ component for RFC2396 compliance and
|
|
856
|
-
# against the
|
|
871
|
+
# against the +parser+ Regexp for :OPAQUE.
|
|
857
872
|
#
|
|
858
873
|
# Can not have a host, port, user, or path component defined,
|
|
859
874
|
# with an opaque component defined.
|
|
@@ -905,7 +920,7 @@ module Gem::URI
|
|
|
905
920
|
end
|
|
906
921
|
|
|
907
922
|
#
|
|
908
|
-
# Checks the fragment +v+ component against the
|
|
923
|
+
# Checks the fragment +v+ component against the +parser+ Regexp for :FRAGMENT.
|
|
909
924
|
#
|
|
910
925
|
#
|
|
911
926
|
# == Args
|
|
@@ -1121,7 +1136,7 @@ module Gem::URI
|
|
|
1121
1136
|
|
|
1122
1137
|
base = self.dup
|
|
1123
1138
|
|
|
1124
|
-
authority = rel.
|
|
1139
|
+
authority = rel.authority
|
|
1125
1140
|
|
|
1126
1141
|
# RFC2396, Section 5.2, 2)
|
|
1127
1142
|
if (rel.path.nil? || rel.path.empty?) && !authority && !rel.query
|
|
@@ -1134,9 +1149,7 @@ module Gem::URI
|
|
|
1134
1149
|
|
|
1135
1150
|
# RFC2396, Section 5.2, 4)
|
|
1136
1151
|
if authority
|
|
1137
|
-
base.
|
|
1138
|
-
base.set_host(rel.host)
|
|
1139
|
-
base.set_port(rel.port || base.default_port)
|
|
1152
|
+
base.set_authority(*authority)
|
|
1140
1153
|
base.set_path(rel.path)
|
|
1141
1154
|
elsif base.path && rel.path
|
|
1142
1155
|
base.set_path(merge_path(base.path, rel.path))
|
|
@@ -1527,7 +1540,7 @@ module Gem::URI
|
|
|
1527
1540
|
else
|
|
1528
1541
|
unless proxy_uri = env[name]
|
|
1529
1542
|
if proxy_uri = env[name.upcase]
|
|
1530
|
-
warn 'The environment variable HTTP_PROXY is discouraged.
|
|
1543
|
+
warn 'The environment variable HTTP_PROXY is discouraged. Please use http_proxy instead.', uplevel: 1
|
|
1531
1544
|
end
|
|
1532
1545
|
end
|
|
1533
1546
|
end
|
|
@@ -61,6 +61,18 @@ module Gem::URI
|
|
|
61
61
|
super(tmp)
|
|
62
62
|
end
|
|
63
63
|
|
|
64
|
+
# Do not allow empty host names, as they are not allowed by RFC 3986.
|
|
65
|
+
def check_host(v)
|
|
66
|
+
ret = super
|
|
67
|
+
|
|
68
|
+
if ret && v.empty?
|
|
69
|
+
raise InvalidComponentError,
|
|
70
|
+
"bad component(expected host component): #{v}"
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
ret
|
|
74
|
+
end
|
|
75
|
+
|
|
64
76
|
#
|
|
65
77
|
# == Description
|
|
66
78
|
#
|
|
@@ -67,7 +67,7 @@ module Gem::URI
|
|
|
67
67
|
#
|
|
68
68
|
# == Synopsis
|
|
69
69
|
#
|
|
70
|
-
# Gem::URI::
|
|
70
|
+
# Gem::URI::RFC2396_Parser.new([opts])
|
|
71
71
|
#
|
|
72
72
|
# == Args
|
|
73
73
|
#
|
|
@@ -86,7 +86,7 @@ module Gem::URI
|
|
|
86
86
|
#
|
|
87
87
|
# == Examples
|
|
88
88
|
#
|
|
89
|
-
# p = Gem::URI::
|
|
89
|
+
# p = Gem::URI::RFC2396_Parser.new(:ESCAPED => "(?:%[a-fA-F0-9]{2}|%u[a-fA-F0-9]{4})")
|
|
90
90
|
# u = p.parse("http://example.jp/%uABCD") #=> #<Gem::URI::HTTP http://example.jp/%uABCD>
|
|
91
91
|
# Gem::URI.parse(u.to_s) #=> raises Gem::URI::InvalidURIError
|
|
92
92
|
#
|
|
@@ -108,12 +108,12 @@ module Gem::URI
|
|
|
108
108
|
|
|
109
109
|
# The Hash of patterns.
|
|
110
110
|
#
|
|
111
|
-
# See also
|
|
111
|
+
# See also #initialize_pattern.
|
|
112
112
|
attr_reader :pattern
|
|
113
113
|
|
|
114
114
|
# The Hash of Regexp.
|
|
115
115
|
#
|
|
116
|
-
# See also
|
|
116
|
+
# See also #initialize_regexp.
|
|
117
117
|
attr_reader :regexp
|
|
118
118
|
|
|
119
119
|
# Returns a split Gem::URI against +regexp[:ABS_URI]+.
|
|
@@ -202,8 +202,7 @@ module Gem::URI
|
|
|
202
202
|
#
|
|
203
203
|
# == Usage
|
|
204
204
|
#
|
|
205
|
-
#
|
|
206
|
-
# p.parse("ldap://ldap.example.com/dc=example?user=john")
|
|
205
|
+
# Gem::URI::RFC2396_PARSER.parse("ldap://ldap.example.com/dc=example?user=john")
|
|
207
206
|
# #=> #<Gem::URI::LDAP ldap://ldap.example.com/dc=example?user=john>
|
|
208
207
|
#
|
|
209
208
|
def parse(uri)
|
|
@@ -244,7 +243,7 @@ module Gem::URI
|
|
|
244
243
|
# If no +block+ given, then returns the result,
|
|
245
244
|
# else it calls +block+ for each element in result.
|
|
246
245
|
#
|
|
247
|
-
# See also
|
|
246
|
+
# See also #make_regexp.
|
|
248
247
|
#
|
|
249
248
|
def extract(str, schemes = nil)
|
|
250
249
|
if block_given?
|
|
@@ -263,7 +262,7 @@ module Gem::URI
|
|
|
263
262
|
unless schemes
|
|
264
263
|
@regexp[:ABS_URI_REF]
|
|
265
264
|
else
|
|
266
|
-
/(
|
|
265
|
+
/(?=(?i:#{Regexp.union(*schemes).source}):)#{@pattern[:X_ABS_URI]}/x
|
|
267
266
|
end
|
|
268
267
|
end
|
|
269
268
|
|
|
@@ -524,6 +523,8 @@ module Gem::URI
|
|
|
524
523
|
ret
|
|
525
524
|
end
|
|
526
525
|
|
|
526
|
+
# Returns +uri+ as-is if it is Gem::URI, or convert it to Gem::URI if it is
|
|
527
|
+
# a String.
|
|
527
528
|
def convert_to_uri(uri)
|
|
528
529
|
if uri.is_a?(Gem::URI::Generic)
|
|
529
530
|
uri
|
data/lib/rubygems/version.rb
CHANGED
|
@@ -171,9 +171,7 @@ class Gem::Version
|
|
|
171
171
|
# True if the +version+ string matches RubyGems' requirements.
|
|
172
172
|
|
|
173
173
|
def self.correct?(version)
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
ANCHORED_VERSION_PATTERN.match?(version.to_s)
|
|
174
|
+
version.nil? || ANCHORED_VERSION_PATTERN.match?(version.to_s)
|
|
177
175
|
end
|
|
178
176
|
|
|
179
177
|
##
|
|
@@ -182,15 +180,10 @@ class Gem::Version
|
|
|
182
180
|
#
|
|
183
181
|
# ver1 = Version.create('1.3.17') # -> (Version object)
|
|
184
182
|
# ver2 = Version.create(ver1) # -> (ver1)
|
|
185
|
-
# ver3 = Version.create(nil) # -> nil
|
|
186
183
|
|
|
187
184
|
def self.create(input)
|
|
188
185
|
if self === input # check yourself before you wreck yourself
|
|
189
186
|
input
|
|
190
|
-
elsif input.nil?
|
|
191
|
-
nil_versions_are_discouraged!
|
|
192
|
-
|
|
193
|
-
nil
|
|
194
187
|
else
|
|
195
188
|
new input
|
|
196
189
|
end
|
|
@@ -206,14 +199,6 @@ class Gem::Version
|
|
|
206
199
|
@@all[version] ||= super
|
|
207
200
|
end
|
|
208
201
|
|
|
209
|
-
def self.nil_versions_are_discouraged!
|
|
210
|
-
unless Gem::Deprecate.skip
|
|
211
|
-
warn "nil versions are discouraged and will be deprecated in Rubygems 4"
|
|
212
|
-
end
|
|
213
|
-
end
|
|
214
|
-
|
|
215
|
-
private_class_method :nil_versions_are_discouraged!
|
|
216
|
-
|
|
217
202
|
##
|
|
218
203
|
# Constructs a Version from the +version+ string. A version string is a
|
|
219
204
|
# series of digits or ASCII letters separated by dots.
|
|
@@ -224,7 +209,7 @@ class Gem::Version
|
|
|
224
209
|
end
|
|
225
210
|
|
|
226
211
|
# If version is an empty string convert it to 0
|
|
227
|
-
version = 0 if version.is_a?(String) && /\A\s*\Z/.match?(version)
|
|
212
|
+
version = 0 if version.nil? || (version.is_a?(String) && /\A\s*\Z/.match?(version))
|
|
228
213
|
|
|
229
214
|
@version = version.to_s
|
|
230
215
|
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "rbconfig"
|
|
4
|
+
|
|
5
|
+
module Gem
|
|
6
|
+
##
|
|
7
|
+
# An Array of Regexps that match windows Ruby platforms.
|
|
8
|
+
|
|
9
|
+
WIN_PATTERNS = [
|
|
10
|
+
/bccwin/i,
|
|
11
|
+
/cygwin/i,
|
|
12
|
+
/djgpp/i,
|
|
13
|
+
/mingw/i,
|
|
14
|
+
/mswin/i,
|
|
15
|
+
/wince/i,
|
|
16
|
+
].freeze
|
|
17
|
+
|
|
18
|
+
@@win_platform = nil
|
|
19
|
+
|
|
20
|
+
##
|
|
21
|
+
# Is this a windows platform?
|
|
22
|
+
|
|
23
|
+
def self.win_platform?
|
|
24
|
+
if @@win_platform.nil?
|
|
25
|
+
ruby_platform = RbConfig::CONFIG["host_os"]
|
|
26
|
+
@@win_platform = !WIN_PATTERNS.find {|r| ruby_platform =~ r }.nil?
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
@@win_platform
|
|
30
|
+
end
|
|
31
|
+
end
|