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
|
@@ -102,6 +102,31 @@ class Gem::Net::HTTPGenericRequest
|
|
|
102
102
|
"\#<#{self.class} #{@method}>"
|
|
103
103
|
end
|
|
104
104
|
|
|
105
|
+
# Returns a string representation of the request with the details for pp:
|
|
106
|
+
#
|
|
107
|
+
# require 'pp'
|
|
108
|
+
# post = Gem::Net::HTTP::Post.new(uri)
|
|
109
|
+
# post.inspect # => "#<Gem::Net::HTTP::Post POST>"
|
|
110
|
+
# post.pretty_inspect
|
|
111
|
+
# # => #<Gem::Net::HTTP::Post
|
|
112
|
+
# POST
|
|
113
|
+
# path="/"
|
|
114
|
+
# headers={"accept-encoding" => ["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],
|
|
115
|
+
# "accept" => ["*/*"],
|
|
116
|
+
# "user-agent" => ["Ruby"],
|
|
117
|
+
# "host" => ["www.ruby-lang.org"]}>
|
|
118
|
+
#
|
|
119
|
+
def pretty_print(q)
|
|
120
|
+
q.object_group(self) {
|
|
121
|
+
q.breakable
|
|
122
|
+
q.text @method
|
|
123
|
+
q.breakable
|
|
124
|
+
q.text "path="; q.pp @path
|
|
125
|
+
q.breakable
|
|
126
|
+
q.text "headers="; q.pp to_hash
|
|
127
|
+
}
|
|
128
|
+
end
|
|
129
|
+
|
|
105
130
|
##
|
|
106
131
|
# Don't automatically decode response content-encoding if the user indicates
|
|
107
132
|
# they want to handle it.
|
|
@@ -260,7 +285,6 @@ class Gem::Net::HTTPGenericRequest
|
|
|
260
285
|
def send_request_with_body(sock, ver, path, body)
|
|
261
286
|
self.content_length = body.bytesize
|
|
262
287
|
delete 'Transfer-Encoding'
|
|
263
|
-
supply_default_content_type
|
|
264
288
|
write_header sock, ver, path
|
|
265
289
|
wait_for_continue sock, ver if sock.continue_timeout
|
|
266
290
|
sock.write body
|
|
@@ -271,7 +295,6 @@ class Gem::Net::HTTPGenericRequest
|
|
|
271
295
|
raise ArgumentError,
|
|
272
296
|
"Content-Length not given and Transfer-Encoding is not `chunked'"
|
|
273
297
|
end
|
|
274
|
-
supply_default_content_type
|
|
275
298
|
write_header sock, ver, path
|
|
276
299
|
wait_for_continue sock, ver if sock.continue_timeout
|
|
277
300
|
if chunked?
|
|
@@ -373,12 +396,6 @@ class Gem::Net::HTTPGenericRequest
|
|
|
373
396
|
buf.clear
|
|
374
397
|
end
|
|
375
398
|
|
|
376
|
-
def supply_default_content_type
|
|
377
|
-
return if content_type()
|
|
378
|
-
warn 'net/http: Content-Type did not set; using application/x-www-form-urlencoded', uplevel: 1 if $VERBOSE
|
|
379
|
-
set_content_type 'application/x-www-form-urlencoded'
|
|
380
|
-
end
|
|
381
|
-
|
|
382
399
|
##
|
|
383
400
|
# Waits up to the continue timeout for a response from the server provided
|
|
384
401
|
# we're speaking HTTP 1.1 and are expecting a 100-continue response.
|
|
@@ -411,4 +428,3 @@ class Gem::Net::HTTPGenericRequest
|
|
|
411
428
|
end
|
|
412
429
|
|
|
413
430
|
end
|
|
414
|
-
|
|
@@ -1104,7 +1104,7 @@ class Gem::Net::HTTPResponse
|
|
|
1104
1104
|
'3' => Gem::Net::HTTPRedirection,
|
|
1105
1105
|
'4' => Gem::Net::HTTPClientError,
|
|
1106
1106
|
'5' => Gem::Net::HTTPServerError
|
|
1107
|
-
}
|
|
1107
|
+
}.freeze
|
|
1108
1108
|
CODE_TO_OBJ = {
|
|
1109
1109
|
'100' => Gem::Net::HTTPContinue,
|
|
1110
1110
|
'101' => Gem::Net::HTTPSwitchProtocol,
|
|
@@ -1170,5 +1170,5 @@ class Gem::Net::HTTPResponse
|
|
|
1170
1170
|
'508' => Gem::Net::HTTPLoopDetected,
|
|
1171
1171
|
'510' => Gem::Net::HTTPNotExtended,
|
|
1172
1172
|
'511' => Gem::Net::HTTPNetworkAuthenticationRequired,
|
|
1173
|
-
}
|
|
1173
|
+
}.freeze
|
|
1174
1174
|
end
|
|
@@ -102,14 +102,14 @@ module Gem::Net #:nodoc:
|
|
|
102
102
|
#
|
|
103
103
|
# == URIs
|
|
104
104
|
#
|
|
105
|
-
# On the internet, a URI
|
|
105
|
+
# On the internet, a Gem::URI
|
|
106
106
|
# ({Universal Resource Identifier}[https://en.wikipedia.org/wiki/Uniform_Resource_Identifier])
|
|
107
107
|
# is a string that identifies a particular resource.
|
|
108
108
|
# It consists of some or all of: scheme, hostname, path, query, and fragment;
|
|
109
|
-
# see {URI syntax}[https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#Syntax].
|
|
109
|
+
# see {Gem::URI syntax}[https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#Syntax].
|
|
110
110
|
#
|
|
111
|
-
# A Ruby {Gem::URI::Generic}[https://docs.ruby-lang.org/en/master/Gem
|
|
112
|
-
# represents an internet URI.
|
|
111
|
+
# A Ruby {Gem::URI::Generic}[https://docs.ruby-lang.org/en/master/Gem::URI/Generic.html] object
|
|
112
|
+
# represents an internet Gem::URI.
|
|
113
113
|
# It provides, among others, methods
|
|
114
114
|
# +scheme+, +hostname+, +path+, +query+, and +fragment+.
|
|
115
115
|
#
|
|
@@ -144,7 +144,7 @@ module Gem::Net #:nodoc:
|
|
|
144
144
|
#
|
|
145
145
|
# === Queries
|
|
146
146
|
#
|
|
147
|
-
# A host-specific query adds name/value pairs to the URI:
|
|
147
|
+
# A host-specific query adds name/value pairs to the Gem::URI:
|
|
148
148
|
#
|
|
149
149
|
# _uri = uri.dup
|
|
150
150
|
# params = {userId: 1, completed: false}
|
|
@@ -154,7 +154,7 @@ module Gem::Net #:nodoc:
|
|
|
154
154
|
#
|
|
155
155
|
# === Fragments
|
|
156
156
|
#
|
|
157
|
-
# A {URI fragment}[https://en.wikipedia.org/wiki/URI_fragment] has no effect
|
|
157
|
+
# A {Gem::URI fragment}[https://en.wikipedia.org/wiki/URI_fragment] has no effect
|
|
158
158
|
# in \Gem::Net::HTTP;
|
|
159
159
|
# the same data is returned, regardless of whether a fragment is included.
|
|
160
160
|
#
|
|
@@ -327,9 +327,9 @@ module Gem::Net #:nodoc:
|
|
|
327
327
|
# res = http.request(req)
|
|
328
328
|
# end
|
|
329
329
|
#
|
|
330
|
-
# Or if you simply want to make a GET request, you may pass in a URI
|
|
330
|
+
# Or if you simply want to make a GET request, you may pass in a Gem::URI
|
|
331
331
|
# object that has an \HTTPS URL. \Gem::Net::HTTP automatically turns on TLS
|
|
332
|
-
# verification if the URI object has a 'https'
|
|
332
|
+
# verification if the Gem::URI object has a 'https' Gem::URI scheme:
|
|
333
333
|
#
|
|
334
334
|
# uri # => #<Gem::URI::HTTPS https://jsonplaceholder.typicode.com/>
|
|
335
335
|
# Gem::Net::HTTP.get(uri)
|
|
@@ -374,7 +374,7 @@ module Gem::Net #:nodoc:
|
|
|
374
374
|
#
|
|
375
375
|
# When environment variable <tt>'http_proxy'</tt>
|
|
376
376
|
# is set to a \Gem::URI string,
|
|
377
|
-
# the returned +http+ will have the server at that URI as its proxy;
|
|
377
|
+
# the returned +http+ will have the server at that Gem::URI as its proxy;
|
|
378
378
|
# note that the \Gem::URI string must have a protocol
|
|
379
379
|
# such as <tt>'http'</tt> or <tt>'https'</tt>:
|
|
380
380
|
#
|
|
@@ -724,7 +724,7 @@ module Gem::Net #:nodoc:
|
|
|
724
724
|
class HTTP < Protocol
|
|
725
725
|
|
|
726
726
|
# :stopdoc:
|
|
727
|
-
VERSION = "0.
|
|
727
|
+
VERSION = "0.7.0"
|
|
728
728
|
HTTPVersion = '1.1'
|
|
729
729
|
begin
|
|
730
730
|
require 'zlib'
|
|
@@ -790,7 +790,7 @@ module Gem::Net #:nodoc:
|
|
|
790
790
|
# "completed": false
|
|
791
791
|
# }
|
|
792
792
|
#
|
|
793
|
-
# With URI object +uri+ and optional hash argument +headers+:
|
|
793
|
+
# With Gem::URI object +uri+ and optional hash argument +headers+:
|
|
794
794
|
#
|
|
795
795
|
# uri = Gem::URI('https://jsonplaceholder.typicode.com/todos/1')
|
|
796
796
|
# headers = {'Content-type' => 'application/json; charset=UTF-8'}
|
|
@@ -863,7 +863,7 @@ module Gem::Net #:nodoc:
|
|
|
863
863
|
|
|
864
864
|
# Posts data to a host; returns a Gem::Net::HTTPResponse object.
|
|
865
865
|
#
|
|
866
|
-
# Argument +url+ must be a URI;
|
|
866
|
+
# Argument +url+ must be a Gem::URI;
|
|
867
867
|
# argument +data+ must be a hash:
|
|
868
868
|
#
|
|
869
869
|
# _uri = uri.dup
|
|
@@ -1529,7 +1529,7 @@ module Gem::Net #:nodoc:
|
|
|
1529
1529
|
:verify_hostname,
|
|
1530
1530
|
] # :nodoc:
|
|
1531
1531
|
|
|
1532
|
-
SSL_IVNAMES = SSL_ATTRIBUTES.map { |a| "@#{a}".to_sym } # :nodoc:
|
|
1532
|
+
SSL_IVNAMES = SSL_ATTRIBUTES.map { |a| "@#{a}".to_sym }.freeze # :nodoc:
|
|
1533
1533
|
|
|
1534
1534
|
# Sets or returns the path to a CA certification file in PEM format.
|
|
1535
1535
|
attr_accessor :ca_file
|
|
@@ -1860,7 +1860,7 @@ module Gem::Net #:nodoc:
|
|
|
1860
1860
|
@proxy_from_env
|
|
1861
1861
|
end
|
|
1862
1862
|
|
|
1863
|
-
# The proxy URI determined from the environment for this connection.
|
|
1863
|
+
# The proxy Gem::URI determined from the environment for this connection.
|
|
1864
1864
|
def proxy_uri # :nodoc:
|
|
1865
1865
|
return if @proxy_uri == false
|
|
1866
1866
|
@proxy_uri ||= Gem::URI::HTTP.new(
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
#
|
|
8
8
|
# See Gem::OptionParser for documentation.
|
|
9
9
|
#
|
|
10
|
+
require 'set' unless defined?(Set)
|
|
10
11
|
|
|
11
12
|
#--
|
|
12
13
|
# == Developer Documentation (not for RDoc output)
|
|
@@ -142,7 +143,7 @@
|
|
|
142
143
|
# Used:
|
|
143
144
|
#
|
|
144
145
|
# $ ruby optparse-test.rb -r
|
|
145
|
-
# optparse-test.rb:9:in
|
|
146
|
+
# optparse-test.rb:9:in '<main>': missing argument: -r (Gem::OptionParser::MissingArgument)
|
|
146
147
|
# $ ruby optparse-test.rb -r my-library
|
|
147
148
|
# You required my-library!
|
|
148
149
|
#
|
|
@@ -235,7 +236,7 @@
|
|
|
235
236
|
# $ ruby optparse-test.rb --user 2
|
|
236
237
|
# #<struct User id=2, name="Gandalf">
|
|
237
238
|
# $ ruby optparse-test.rb --user 3
|
|
238
|
-
# optparse-test.rb:15:in
|
|
239
|
+
# optparse-test.rb:15:in 'block in find_user': No User Found for id 3 (RuntimeError)
|
|
239
240
|
#
|
|
240
241
|
# === Store options to a Hash
|
|
241
242
|
#
|
|
@@ -425,7 +426,8 @@
|
|
|
425
426
|
#
|
|
426
427
|
class Gem::OptionParser
|
|
427
428
|
# The version string
|
|
428
|
-
|
|
429
|
+
VERSION = "0.8.0"
|
|
430
|
+
Version = VERSION # for compatibility
|
|
429
431
|
|
|
430
432
|
# :stopdoc:
|
|
431
433
|
NoArgument = [NO_ARGUMENT = :NONE, nil].freeze
|
|
@@ -461,6 +463,10 @@ class Gem::OptionParser
|
|
|
461
463
|
candidates
|
|
462
464
|
end
|
|
463
465
|
|
|
466
|
+
def self.completable?(key)
|
|
467
|
+
String.try_convert(key) or defined?(key.id2name)
|
|
468
|
+
end
|
|
469
|
+
|
|
464
470
|
def candidate(key, icase = false, pat = nil, &_)
|
|
465
471
|
Completion.candidate(key, icase, pat, &method(:each))
|
|
466
472
|
end
|
|
@@ -496,7 +502,6 @@ class Gem::OptionParser
|
|
|
496
502
|
end
|
|
497
503
|
end
|
|
498
504
|
|
|
499
|
-
|
|
500
505
|
#
|
|
501
506
|
# Map from option/keyword string to object with completion.
|
|
502
507
|
#
|
|
@@ -504,7 +509,6 @@ class Gem::OptionParser
|
|
|
504
509
|
include Completion
|
|
505
510
|
end
|
|
506
511
|
|
|
507
|
-
|
|
508
512
|
#
|
|
509
513
|
# Individual switch class. Not important to the user.
|
|
510
514
|
#
|
|
@@ -546,11 +550,11 @@ class Gem::OptionParser
|
|
|
546
550
|
|
|
547
551
|
def initialize(pattern = nil, conv = nil,
|
|
548
552
|
short = nil, long = nil, arg = nil,
|
|
549
|
-
desc = ([] if short or long), block = nil, &_block)
|
|
553
|
+
desc = ([] if short or long), block = nil, values = nil, &_block)
|
|
550
554
|
raise if Array === pattern
|
|
551
555
|
block ||= _block
|
|
552
|
-
@pattern, @conv, @short, @long, @arg, @desc, @block =
|
|
553
|
-
pattern, conv, short, long, arg, desc, block
|
|
556
|
+
@pattern, @conv, @short, @long, @arg, @desc, @block, @values =
|
|
557
|
+
pattern, conv, short, long, arg, desc, block, values
|
|
554
558
|
end
|
|
555
559
|
|
|
556
560
|
#
|
|
@@ -583,11 +587,15 @@ class Gem::OptionParser
|
|
|
583
587
|
# exception.
|
|
584
588
|
#
|
|
585
589
|
def conv_arg(arg, val = []) # :nodoc:
|
|
590
|
+
v, = *val
|
|
586
591
|
if conv
|
|
587
592
|
val = conv.call(*val)
|
|
588
593
|
else
|
|
589
594
|
val = proc {|v| v}.call(*val)
|
|
590
595
|
end
|
|
596
|
+
if @values
|
|
597
|
+
@values.include?(val) or raise InvalidArgument, v
|
|
598
|
+
end
|
|
591
599
|
return arg, block, val
|
|
592
600
|
end
|
|
593
601
|
private :conv_arg
|
|
@@ -668,7 +676,7 @@ class Gem::OptionParser
|
|
|
668
676
|
|
|
669
677
|
(sopts+lopts).each do |opt|
|
|
670
678
|
# "(-x -c -r)-l[left justify]"
|
|
671
|
-
if
|
|
679
|
+
if /\A--\[no-\](.+)$/ =~ opt
|
|
672
680
|
o = $1
|
|
673
681
|
yield("--#{o}", desc.join(""))
|
|
674
682
|
yield("--no-#{o}", desc.join(""))
|
|
@@ -1032,7 +1040,6 @@ class Gem::OptionParser
|
|
|
1032
1040
|
DefaultList.short['-'] = Switch::NoArgument.new {}
|
|
1033
1041
|
DefaultList.long[''] = Switch::NoArgument.new {throw :terminate}
|
|
1034
1042
|
|
|
1035
|
-
|
|
1036
1043
|
COMPSYS_HEADER = <<'XXX' # :nodoc:
|
|
1037
1044
|
|
|
1038
1045
|
typeset -A opt_args
|
|
@@ -1051,16 +1058,16 @@ XXX
|
|
|
1051
1058
|
end
|
|
1052
1059
|
|
|
1053
1060
|
def help_exit
|
|
1054
|
-
if
|
|
1061
|
+
if $stdout.tty? && (pager = ENV.values_at(*%w[RUBY_PAGER PAGER]).find {|e| e && !e.empty?})
|
|
1055
1062
|
less = ENV["LESS"]
|
|
1056
|
-
args = [{"LESS" => "#{
|
|
1063
|
+
args = [{"LESS" => "#{less} -Fe"}, pager, "w"]
|
|
1057
1064
|
print = proc do |f|
|
|
1058
1065
|
f.puts help
|
|
1059
1066
|
rescue Errno::EPIPE
|
|
1060
1067
|
# pager terminated
|
|
1061
1068
|
end
|
|
1062
1069
|
if Process.respond_to?(:fork) and false
|
|
1063
|
-
IO.popen("-") {|f| f ? Process.exec(*args, in: f) : print.call(
|
|
1070
|
+
IO.popen("-") {|f| f ? Process.exec(*args, in: f) : print.call($stdout)}
|
|
1064
1071
|
# unreachable
|
|
1065
1072
|
end
|
|
1066
1073
|
IO.popen(*args, &print)
|
|
@@ -1102,7 +1109,7 @@ XXX
|
|
|
1102
1109
|
#
|
|
1103
1110
|
Officious['*-completion-zsh'] = proc do |parser|
|
|
1104
1111
|
Switch::OptionalArgument.new do |arg|
|
|
1105
|
-
parser.compsys(
|
|
1112
|
+
parser.compsys($stdout, arg)
|
|
1106
1113
|
exit
|
|
1107
1114
|
end
|
|
1108
1115
|
end
|
|
@@ -1288,7 +1295,15 @@ XXX
|
|
|
1288
1295
|
# to $0.
|
|
1289
1296
|
#
|
|
1290
1297
|
def program_name
|
|
1291
|
-
@program_name || File.basename($0
|
|
1298
|
+
@program_name || strip_ext(File.basename($0))
|
|
1299
|
+
end
|
|
1300
|
+
|
|
1301
|
+
private def strip_ext(name) # :nodoc:
|
|
1302
|
+
exts = /#{
|
|
1303
|
+
require "rbconfig"
|
|
1304
|
+
Regexp.union(*RbConfig::CONFIG["EXECUTABLE_EXTS"]&.split(" "))
|
|
1305
|
+
}\z/o
|
|
1306
|
+
name.sub(exts, "")
|
|
1292
1307
|
end
|
|
1293
1308
|
|
|
1294
1309
|
# for experimental cascading :-)
|
|
@@ -1467,6 +1482,7 @@ XXX
|
|
|
1467
1482
|
klass = nil
|
|
1468
1483
|
q, a = nil
|
|
1469
1484
|
has_arg = false
|
|
1485
|
+
values = nil
|
|
1470
1486
|
|
|
1471
1487
|
opts.each do |o|
|
|
1472
1488
|
# argument class
|
|
@@ -1480,7 +1496,7 @@ XXX
|
|
|
1480
1496
|
end
|
|
1481
1497
|
|
|
1482
1498
|
# directly specified pattern(any object possible to match)
|
|
1483
|
-
if
|
|
1499
|
+
if !Completion.completable?(o) and o.respond_to?(:match)
|
|
1484
1500
|
pattern = notwice(o, pattern, 'pattern')
|
|
1485
1501
|
if pattern.respond_to?(:convert)
|
|
1486
1502
|
conv = pattern.method(:convert).to_proc
|
|
@@ -1494,7 +1510,12 @@ XXX
|
|
|
1494
1510
|
case o
|
|
1495
1511
|
when Proc, Method
|
|
1496
1512
|
block = notwice(o, block, 'block')
|
|
1497
|
-
when Array, Hash
|
|
1513
|
+
when Array, Hash, Set
|
|
1514
|
+
if Array === o
|
|
1515
|
+
o, v = o.partition {|v,| Completion.completable?(v)}
|
|
1516
|
+
values = notwice(v, values, 'values') unless v.empty?
|
|
1517
|
+
next if o.empty?
|
|
1518
|
+
end
|
|
1498
1519
|
case pattern
|
|
1499
1520
|
when CompletingHash
|
|
1500
1521
|
when nil
|
|
@@ -1504,11 +1525,13 @@ XXX
|
|
|
1504
1525
|
raise ArgumentError, "argument pattern given twice"
|
|
1505
1526
|
end
|
|
1506
1527
|
o.each {|pat, *v| pattern[pat] = v.fetch(0) {pat}}
|
|
1528
|
+
when Range
|
|
1529
|
+
values = notwice(o, values, 'values')
|
|
1507
1530
|
when Module
|
|
1508
1531
|
raise ArgumentError, "unsupported argument type: #{o}", ParseError.filter_backtrace(caller(4))
|
|
1509
1532
|
when *ArgumentStyle.keys
|
|
1510
1533
|
style = notwice(ArgumentStyle[o], style, 'style')
|
|
1511
|
-
when
|
|
1534
|
+
when /\A--no-([^\[\]=\s]*)(.+)?/
|
|
1512
1535
|
q, a = $1, $2
|
|
1513
1536
|
o = notwice(a ? Object : TrueClass, klass, 'type')
|
|
1514
1537
|
not_pattern, not_conv = search(:atype, o) unless not_style
|
|
@@ -1519,7 +1542,7 @@ XXX
|
|
|
1519
1542
|
(q = q.downcase).tr!('_', '-')
|
|
1520
1543
|
long << "no-#{q}"
|
|
1521
1544
|
nolong << q
|
|
1522
|
-
when
|
|
1545
|
+
when /\A--\[no-\]([^\[\]=\s]*)(.+)?/
|
|
1523
1546
|
q, a = $1, $2
|
|
1524
1547
|
o = notwice(a ? Object : TrueClass, klass, 'type')
|
|
1525
1548
|
if a
|
|
@@ -1532,7 +1555,7 @@ XXX
|
|
|
1532
1555
|
not_pattern, not_conv = search(:atype, FalseClass) unless not_style
|
|
1533
1556
|
not_style = Switch::NoArgument
|
|
1534
1557
|
nolong << "no-#{o}"
|
|
1535
|
-
when
|
|
1558
|
+
when /\A--([^\[\]=\s]*)(.+)?/
|
|
1536
1559
|
q, a = $1, $2
|
|
1537
1560
|
if a
|
|
1538
1561
|
o = notwice(NilClass, klass, 'type')
|
|
@@ -1542,7 +1565,7 @@ XXX
|
|
|
1542
1565
|
ldesc << "--#{q}"
|
|
1543
1566
|
(o = q.downcase).tr!('_', '-')
|
|
1544
1567
|
long << o
|
|
1545
|
-
when
|
|
1568
|
+
when /\A-(\[\^?\]?(?:[^\\\]]|\\.)*\])(.+)?/
|
|
1546
1569
|
q, a = $1, $2
|
|
1547
1570
|
o = notwice(Object, klass, 'type')
|
|
1548
1571
|
if a
|
|
@@ -1553,7 +1576,7 @@ XXX
|
|
|
1553
1576
|
end
|
|
1554
1577
|
sdesc << "-#{q}"
|
|
1555
1578
|
short << Regexp.new(q)
|
|
1556
|
-
when
|
|
1579
|
+
when /\A-(.)(.+)?/
|
|
1557
1580
|
q, a = $1, $2
|
|
1558
1581
|
if a
|
|
1559
1582
|
o = notwice(NilClass, klass, 'type')
|
|
@@ -1562,7 +1585,7 @@ XXX
|
|
|
1562
1585
|
end
|
|
1563
1586
|
sdesc << "-#{q}"
|
|
1564
1587
|
short << q
|
|
1565
|
-
when
|
|
1588
|
+
when /\A=/
|
|
1566
1589
|
style = notwice(default_style.guess(arg = o), style, 'style')
|
|
1567
1590
|
default_pattern, conv = search(:atype, Object) unless default_pattern
|
|
1568
1591
|
else
|
|
@@ -1571,12 +1594,18 @@ XXX
|
|
|
1571
1594
|
end
|
|
1572
1595
|
|
|
1573
1596
|
default_pattern, conv = search(:atype, default_style.pattern) unless default_pattern
|
|
1597
|
+
if Range === values and klass
|
|
1598
|
+
unless (!values.begin or klass === values.begin) and
|
|
1599
|
+
(!values.end or klass === values.end)
|
|
1600
|
+
raise ArgumentError, "range does not match class"
|
|
1601
|
+
end
|
|
1602
|
+
end
|
|
1574
1603
|
if !(short.empty? and long.empty?)
|
|
1575
1604
|
if has_arg and default_style == Switch::NoArgument
|
|
1576
1605
|
default_style = Switch::RequiredArgument
|
|
1577
1606
|
end
|
|
1578
1607
|
s = (style || default_style).new(pattern || default_pattern,
|
|
1579
|
-
conv, sdesc, ldesc, arg, desc, block)
|
|
1608
|
+
conv, sdesc, ldesc, arg, desc, block, values)
|
|
1580
1609
|
elsif !block
|
|
1581
1610
|
if style or pattern
|
|
1582
1611
|
raise ArgumentError, "no switch given", ParseError.filter_backtrace(caller)
|
|
@@ -1585,7 +1614,7 @@ XXX
|
|
|
1585
1614
|
else
|
|
1586
1615
|
short << pattern
|
|
1587
1616
|
s = (style || default_style).new(pattern,
|
|
1588
|
-
conv, nil, nil, arg, desc, block)
|
|
1617
|
+
conv, nil, nil, arg, desc, block, values)
|
|
1589
1618
|
end
|
|
1590
1619
|
return s, short, long,
|
|
1591
1620
|
(not_style.new(not_pattern, not_conv, sdesc, ldesc, nil, desc, block) if not_style),
|
|
@@ -1827,7 +1856,7 @@ XXX
|
|
|
1827
1856
|
#
|
|
1828
1857
|
def permute!(argv = default_argv, **keywords)
|
|
1829
1858
|
nonopts = []
|
|
1830
|
-
order!(argv, **keywords
|
|
1859
|
+
order!(argv, **keywords) {|nonopt| nonopts << nonopt}
|
|
1831
1860
|
argv[0, 0] = nonopts
|
|
1832
1861
|
argv
|
|
1833
1862
|
end
|
|
@@ -1880,13 +1909,16 @@ XXX
|
|
|
1880
1909
|
single_options, *long_options = *args
|
|
1881
1910
|
|
|
1882
1911
|
result = {}
|
|
1912
|
+
setter = (symbolize_names ?
|
|
1913
|
+
->(name, val) {result[name.to_sym] = val}
|
|
1914
|
+
: ->(name, val) {result[name] = val})
|
|
1883
1915
|
|
|
1884
1916
|
single_options.scan(/(.)(:)?/) do |opt, val|
|
|
1885
1917
|
if val
|
|
1886
|
-
|
|
1918
|
+
setter[opt, nil]
|
|
1887
1919
|
define("-#{opt} VAL")
|
|
1888
1920
|
else
|
|
1889
|
-
|
|
1921
|
+
setter[opt, false]
|
|
1890
1922
|
define("-#{opt}")
|
|
1891
1923
|
end
|
|
1892
1924
|
end if single_options
|
|
@@ -1895,16 +1927,16 @@ XXX
|
|
|
1895
1927
|
arg, desc = arg.split(';', 2)
|
|
1896
1928
|
opt, val = arg.split(':', 2)
|
|
1897
1929
|
if val
|
|
1898
|
-
|
|
1930
|
+
setter[opt, (val unless val.empty?)]
|
|
1899
1931
|
define("--#{opt}=#{result[opt] || "VAL"}", *[desc].compact)
|
|
1900
1932
|
else
|
|
1901
|
-
|
|
1933
|
+
setter[opt, false]
|
|
1902
1934
|
define("--#{opt}", *[desc].compact)
|
|
1903
1935
|
end
|
|
1904
1936
|
end
|
|
1905
1937
|
|
|
1906
|
-
parse_in_order(argv,
|
|
1907
|
-
|
|
1938
|
+
parse_in_order(argv, setter, **keywords)
|
|
1939
|
+
result
|
|
1908
1940
|
end
|
|
1909
1941
|
|
|
1910
1942
|
#
|
|
@@ -1954,7 +1986,7 @@ XXX
|
|
|
1954
1986
|
visit(:complete, typ, opt, icase, *pat) {|o, *sw| return sw}
|
|
1955
1987
|
}
|
|
1956
1988
|
exc = ambiguous ? AmbiguousOption : InvalidOption
|
|
1957
|
-
raise exc.new(opt, additional:
|
|
1989
|
+
raise exc.new(opt, additional: proc {|o| additional_message(typ, o)})
|
|
1958
1990
|
end
|
|
1959
1991
|
private :complete
|
|
1960
1992
|
|
|
@@ -2019,19 +2051,27 @@ XXX
|
|
|
2019
2051
|
def load(filename = nil, **keywords)
|
|
2020
2052
|
unless filename
|
|
2021
2053
|
basename = File.basename($0, '.*')
|
|
2022
|
-
return true if load(File.expand_path(
|
|
2054
|
+
return true if load(File.expand_path("~/.options/#{basename}"), **keywords) rescue nil
|
|
2023
2055
|
basename << ".options"
|
|
2056
|
+
if !(xdg = ENV['XDG_CONFIG_HOME']) or xdg.empty?
|
|
2057
|
+
# https://specifications.freedesktop.org/basedir-spec/latest/#variables
|
|
2058
|
+
#
|
|
2059
|
+
# If $XDG_CONFIG_HOME is either not set or empty, a default
|
|
2060
|
+
# equal to $HOME/.config should be used.
|
|
2061
|
+
xdg = ['~/.config', true]
|
|
2062
|
+
end
|
|
2024
2063
|
return [
|
|
2025
|
-
|
|
2026
|
-
|
|
2027
|
-
'~/.config',
|
|
2064
|
+
xdg,
|
|
2065
|
+
|
|
2028
2066
|
*ENV['XDG_CONFIG_DIRS']&.split(File::PATH_SEPARATOR),
|
|
2029
2067
|
|
|
2030
2068
|
# Haiku
|
|
2031
|
-
'~/config/settings',
|
|
2032
|
-
].any? {|dir|
|
|
2069
|
+
['~/config/settings', true],
|
|
2070
|
+
].any? {|dir, expand|
|
|
2033
2071
|
next if !dir or dir.empty?
|
|
2034
|
-
|
|
2072
|
+
filename = File.join(dir, basename)
|
|
2073
|
+
filename = File.expand_path(filename) if expand
|
|
2074
|
+
load(filename, **keywords) rescue nil
|
|
2035
2075
|
}
|
|
2036
2076
|
end
|
|
2037
2077
|
begin
|
|
@@ -2237,9 +2277,10 @@ XXX
|
|
|
2237
2277
|
argv
|
|
2238
2278
|
end
|
|
2239
2279
|
|
|
2280
|
+
DIR = File.join(__dir__, '')
|
|
2240
2281
|
def self.filter_backtrace(array)
|
|
2241
2282
|
unless $DEBUG
|
|
2242
|
-
array.delete_if
|
|
2283
|
+
array.delete_if {|bt| bt.start_with?(DIR)}
|
|
2243
2284
|
end
|
|
2244
2285
|
array
|
|
2245
2286
|
end
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
|
|
21
21
|
module Gem::Timeout
|
|
22
22
|
# The version
|
|
23
|
-
VERSION = "0.4.
|
|
23
|
+
VERSION = "0.4.4"
|
|
24
24
|
|
|
25
25
|
# Internal error raised to when a timeout is triggered.
|
|
26
26
|
class ExitException < Exception
|
|
@@ -123,6 +123,9 @@ module Gem::Timeout
|
|
|
123
123
|
|
|
124
124
|
def self.ensure_timeout_thread_created
|
|
125
125
|
unless @timeout_thread and @timeout_thread.alive?
|
|
126
|
+
# If the Mutex is already owned we are in a signal handler.
|
|
127
|
+
# In that case, just return and let the main thread create the @timeout_thread.
|
|
128
|
+
return if TIMEOUT_THREAD_MUTEX.owned?
|
|
126
129
|
TIMEOUT_THREAD_MUTEX.synchronize do
|
|
127
130
|
unless @timeout_thread and @timeout_thread.alive?
|
|
128
131
|
@timeout_thread = create_timeout_thread
|