rubygems-update 3.4.21 → 3.4.22
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 +33 -0
- data/Manifest.txt +5 -0
- data/bundler/CHANGELOG.md +21 -0
- data/bundler/README.md +1 -2
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/cli/gem.rb +3 -0
- data/bundler/lib/bundler/definition.rb +1 -1
- data/bundler/lib/bundler/endpoint_specification.rb +1 -1
- data/bundler/lib/bundler/errors.rb +15 -0
- data/bundler/lib/bundler/gem_helpers.rb +7 -0
- data/bundler/lib/bundler/installer/gem_installer.rb +5 -5
- data/bundler/lib/bundler/lazy_specification.rb +4 -0
- data/bundler/lib/bundler/plugin/index.rb +8 -0
- data/bundler/lib/bundler/plugin.rb +9 -2
- data/bundler/lib/bundler/rubygems_ext.rb +3 -4
- data/bundler/lib/bundler/rubygems_gem_installer.rb +23 -8
- data/bundler/lib/bundler/source/git/git_proxy.rb +9 -1
- data/bundler/lib/bundler/source/metadata.rb +1 -1
- data/bundler/lib/bundler/spec_set.rb +5 -2
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +1 -1
- data/bundler/lib/bundler/ui/shell.rb +1 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +1 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +21 -9
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +3 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +8 -10
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +15 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +15 -15
- data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +140 -14
- data/bundler/lib/bundler/vendor/thor/lib/thor/command.rb +13 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +4 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +16 -25
- data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/invocation.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/nested_context.rb +2 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +20 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +33 -17
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +27 -8
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +44 -6
- data/bundler/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +2 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb +40 -30
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +26 -150
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +4 -46
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/column_printer.rb +29 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +3 -45
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/lcs_diff.rb +49 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/table_printer.rb +134 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/terminal.rb +42 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/wrapped_printer.rb +38 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +8 -7
- data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor.rb +155 -8
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/lib/bundler/yaml_serializer.rb +6 -1
- data/bundler/lib/bundler.rb +0 -8
- data/lib/rubygems/command.rb +3 -3
- data/lib/rubygems/commands/cert_command.rb +1 -1
- data/lib/rubygems/commands/contents_command.rb +1 -1
- data/lib/rubygems/commands/environment_command.rb +2 -2
- data/lib/rubygems/commands/help_command.rb +1 -1
- data/lib/rubygems/commands/setup_command.rb +2 -2
- data/lib/rubygems/commands/uninstall_command.rb +4 -4
- data/lib/rubygems/commands/unpack_command.rb +3 -3
- data/lib/rubygems/commands/update_command.rb +1 -1
- data/lib/rubygems/config_file.rb +3 -3
- data/lib/rubygems/core_ext/kernel_require.rb +1 -1
- data/lib/rubygems/dependency_installer.rb +4 -4
- data/lib/rubygems/doctor.rb +1 -1
- data/lib/rubygems/ext/ext_conf_builder.rb +1 -1
- data/lib/rubygems/ext/rake_builder.rb +1 -1
- data/lib/rubygems/installer.rb +7 -12
- data/lib/rubygems/local_remote_options.rb +1 -1
- data/lib/rubygems/package/digest_io.rb +1 -1
- data/lib/rubygems/package/tar_header.rb +2 -2
- data/lib/rubygems/package/tar_reader.rb +9 -2
- data/lib/rubygems/package/tar_writer.rb +1 -1
- data/lib/rubygems/package.rb +1 -1
- data/lib/rubygems/path_support.rb +1 -1
- data/lib/rubygems/platform.rb +6 -4
- data/lib/rubygems/remote_fetcher.rb +2 -2
- data/lib/rubygems/request.rb +1 -1
- data/lib/rubygems/request_set/gem_dependency_api.rb +1 -1
- data/lib/rubygems/resolver.rb +3 -3
- data/lib/rubygems/security/trust_dir.rb +1 -1
- data/lib/rubygems/source/local.rb +2 -1
- data/lib/rubygems/source_list.rb +1 -1
- data/lib/rubygems/spec_fetcher.rb +2 -2
- data/lib/rubygems/specification.rb +21 -13
- data/lib/rubygems/specification_policy.rb +6 -6
- data/lib/rubygems/uninstaller.rb +2 -2
- data/lib/rubygems/user_interaction.rb +2 -2
- data/lib/rubygems/util/licenses.rb +48 -0
- data/lib/rubygems/validator.rb +1 -1
- data/lib/rubygems/version.rb +3 -3
- data/lib/rubygems/yaml_serializer.rb +6 -1
- data/lib/rubygems.rb +6 -6
- data/rubygems-update.gemspec +1 -1
- data/test/rubygems/helper.rb +6 -6
- data/test/rubygems/test_gem_command_manager.rb +6 -6
- data/test/rubygems/test_gem_commands_cert_command.rb +1 -1
- data/test/rubygems/test_gem_commands_install_command.rb +2 -2
- data/test/rubygems/test_gem_commands_uninstall_command.rb +20 -0
- data/test/rubygems/test_gem_ext_builder.rb +1 -1
- data/test/rubygems/test_gem_installer.rb +1 -1
- data/test/rubygems/test_gem_package_tar_reader.rb +15 -0
- data/test/rubygems/test_gem_security_policy.rb +2 -2
- data/test/rubygems/test_gem_stream_ui.rb +1 -1
- data/test/rubygems/utilities.rb +2 -2
- metadata +8 -3
@@ -17,7 +17,7 @@ class Gem::Commands::EnvironmentCommand < Gem::Command
|
|
17
17
|
platform display the supported gem platforms
|
18
18
|
<omitted> display everything
|
19
19
|
EOF
|
20
|
-
|
20
|
+
args.gsub(/^\s+/, "")
|
21
21
|
end
|
22
22
|
|
23
23
|
def description # :nodoc:
|
@@ -173,6 +173,6 @@ lib/rubygems/defaults/operating_system.rb
|
|
173
173
|
end
|
174
174
|
end
|
175
175
|
|
176
|
-
|
176
|
+
nil
|
177
177
|
end
|
178
178
|
end
|
@@ -269,7 +269,7 @@ Gem::Platform::CURRENT. This will correctly mark the gem with your ruby's
|
|
269
269
|
platform.
|
270
270
|
EOF
|
271
271
|
|
272
|
-
# NOTE when updating also update Gem::Command::HELP
|
272
|
+
# NOTE: when updating also update Gem::Command::HELP
|
273
273
|
|
274
274
|
SUBCOMMANDS = [
|
275
275
|
["commands", :show_commands],
|
@@ -357,7 +357,7 @@ By default, this RubyGems will install gem as:
|
|
357
357
|
say "Set the GEM_HOME environment variable if you want RDoc generated"
|
358
358
|
end
|
359
359
|
|
360
|
-
|
360
|
+
false
|
361
361
|
end
|
362
362
|
|
363
363
|
def install_default_bundler_gem(bin_dir)
|
@@ -433,7 +433,7 @@ By default, this RubyGems will install gem as:
|
|
433
433
|
mkdir_p lib_dir, :mode => 0o755
|
434
434
|
mkdir_p bin_dir, :mode => 0o755
|
435
435
|
|
436
|
-
|
436
|
+
[lib_dir, bin_dir]
|
437
437
|
end
|
438
438
|
|
439
439
|
def generate_default_man_dir
|
@@ -169,10 +169,10 @@ that is a dependency of an existing gem. You can use the
|
|
169
169
|
gems_to_uninstall = {}
|
170
170
|
|
171
171
|
deps.each do |dep|
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
172
|
+
if original_gem_version[dep.name] == Gem::Requirement.default
|
173
|
+
next if gems_to_uninstall[dep.name]
|
174
|
+
gems_to_uninstall[dep.name] = true
|
175
|
+
else
|
176
176
|
options[:version] = dep.version
|
177
177
|
end
|
178
178
|
|
@@ -130,7 +130,7 @@ command help for an example.
|
|
130
130
|
return this_path if File.exist? this_path
|
131
131
|
end
|
132
132
|
|
133
|
-
|
133
|
+
nil
|
134
134
|
end
|
135
135
|
|
136
136
|
##
|
@@ -151,7 +151,7 @@ command help for an example.
|
|
151
151
|
# source directories?
|
152
152
|
|
153
153
|
def get_path(dependency)
|
154
|
-
return dependency.name if
|
154
|
+
return dependency.name if /\.gem$/i.match?(dependency.name)
|
155
155
|
|
156
156
|
specs = dependency.matching_specs
|
157
157
|
|
@@ -160,7 +160,7 @@ command help for an example.
|
|
160
160
|
return Gem::RemoteFetcher.fetcher.download_to_cache(dependency) unless
|
161
161
|
selected
|
162
162
|
|
163
|
-
return unless
|
163
|
+
return unless /^#{selected.name}$/i.match?(dependency.name)
|
164
164
|
|
165
165
|
# We expect to find (basename).gem in the 'cache' directory. Furthermore,
|
166
166
|
# the name match must be exact (ignoring case).
|
@@ -231,7 +231,7 @@ command to remove old versions.
|
|
231
231
|
highest_remote_tup = highest_remote_name_tuple(rubygems_update)
|
232
232
|
target = highest_remote_tup ? highest_remote_tup.version : version
|
233
233
|
|
234
|
-
|
234
|
+
[target, requirement]
|
235
235
|
end
|
236
236
|
|
237
237
|
def update_gem(name, version = Gem::Requirement.default)
|
data/lib/rubygems/config_file.rb
CHANGED
@@ -202,7 +202,7 @@ class Gem::ConfigFile
|
|
202
202
|
@hash = @hash.merge environment_config
|
203
203
|
end
|
204
204
|
|
205
|
-
# HACK these override command-line args, which is bad
|
205
|
+
# HACK: these override command-line args, which is bad
|
206
206
|
@backtrace = @hash[:backtrace] if @hash.key? :backtrace
|
207
207
|
@bulk_threshold = @hash[:bulk_threshold] if @hash.key? :bulk_threshold
|
208
208
|
@home = @hash[:gemhome] if @hash.key? :gemhome
|
@@ -479,7 +479,7 @@ if you believe they were disclosed to a third party.
|
|
479
479
|
|
480
480
|
@hash.each do |key, value|
|
481
481
|
key = key.to_s
|
482
|
-
next if key
|
482
|
+
next if key&.match?(re)
|
483
483
|
yaml_hash[key.to_s] = value
|
484
484
|
end
|
485
485
|
|
@@ -581,7 +581,7 @@ if you believe they were disclosed to a third party.
|
|
581
581
|
need_config_file_name = false
|
582
582
|
elsif arg =~ /^--config-file=(.*)/
|
583
583
|
@config_file_name = $1
|
584
|
-
elsif
|
584
|
+
elsif /^--config-file$/.match?(arg)
|
585
585
|
need_config_file_name = true
|
586
586
|
end
|
587
587
|
end
|
@@ -19,12 +19,12 @@ class Gem::DependencyInstaller
|
|
19
19
|
DEFAULT_OPTIONS = { # :nodoc:
|
20
20
|
:env_shebang => false,
|
21
21
|
:document => %w[ri],
|
22
|
-
:domain => :both, # HACK dup
|
22
|
+
:domain => :both, # HACK: dup
|
23
23
|
:force => false,
|
24
|
-
:format_executable => false, # HACK dup
|
24
|
+
:format_executable => false, # HACK: dup
|
25
25
|
:ignore_dependencies => false,
|
26
26
|
:prerelease => false,
|
27
|
-
:security_policy => nil, # HACK NoSecurity requires OpenSSL. AlmostNo? Low?
|
27
|
+
:security_policy => nil, # HACK: NoSecurity requires OpenSSL. AlmostNo? Low?
|
28
28
|
:wrappers => true,
|
29
29
|
:build_args => nil,
|
30
30
|
:build_docs_in_background => false,
|
@@ -292,7 +292,7 @@ class Gem::DependencyInstaller
|
|
292
292
|
src = Gem::Source::SpecificFile.new dep_or_name
|
293
293
|
installer_set.add_local dep_or_name, src.spec, src
|
294
294
|
version = src.spec.version if version == Gem::Requirement.default
|
295
|
-
elsif dep_or_name =~ /\.gem$/
|
295
|
+
elsif dep_or_name =~ /\.gem$/ # rubocop:disable Performance/RegexpMatch
|
296
296
|
Dir[dep_or_name].each do |name|
|
297
297
|
src = Gem::Source::SpecificFile.new name
|
298
298
|
installer_set.add_local dep_or_name, src.spec, src
|
data/lib/rubygems/doctor.rb
CHANGED
@@ -111,7 +111,7 @@ class Gem::Doctor
|
|
111
111
|
|
112
112
|
basename = File.basename(child, extension)
|
113
113
|
next if installed_specs.include? basename
|
114
|
-
next if /^rubygems-\d
|
114
|
+
next if /^rubygems-\d/.match?(basename)
|
115
115
|
next if "specifications" == sub_directory && "default" == basename
|
116
116
|
next if "plugins" == sub_directory && Gem.plugin_suffix_regexp =~ (basename)
|
117
117
|
|
@@ -43,7 +43,7 @@ class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder
|
|
43
43
|
|
44
44
|
full_tmp_dest = File.join(extension_dir, tmp_dest_relative)
|
45
45
|
|
46
|
-
# TODO remove in RubyGems 4
|
46
|
+
# TODO: remove in RubyGems 4
|
47
47
|
if Gem.install_extension_in_lib && lib_dir
|
48
48
|
FileUtils.mkdir_p lib_dir
|
49
49
|
entries = Dir.entries(full_tmp_dest) - %w[. ..]
|
@@ -10,7 +10,7 @@ require_relative "../shellwords"
|
|
10
10
|
|
11
11
|
class Gem::Ext::RakeBuilder < Gem::Ext::Builder
|
12
12
|
def self.build(extension, dest_path, results, args=[], lib_dir=nil, extension_dir=Dir.pwd)
|
13
|
-
if File.basename(extension)
|
13
|
+
if /mkrf_conf/i.match?(File.basename(extension))
|
14
14
|
run([Gem.ruby, File.basename(extension), *args], results, class_name, extension_dir)
|
15
15
|
end
|
16
16
|
|
data/lib/rubygems/installer.rb
CHANGED
@@ -230,11 +230,11 @@ class Gem::Installer
|
|
230
230
|
end
|
231
231
|
end
|
232
232
|
|
233
|
-
next unless line
|
233
|
+
next unless line&.match?(shebang)
|
234
234
|
|
235
235
|
io.gets # blankline
|
236
236
|
|
237
|
-
# TODO detect a specially formatted comment instead of trying
|
237
|
+
# TODO: detect a specially formatted comment instead of trying
|
238
238
|
# to find a string inside Ruby code.
|
239
239
|
next unless io.gets.to_s.include?("This file was generated by RubyGems")
|
240
240
|
|
@@ -348,11 +348,6 @@ class Gem::Installer
|
|
348
348
|
run_post_install_hooks
|
349
349
|
|
350
350
|
spec
|
351
|
-
|
352
|
-
# TODO This rescue is in the wrong place. What is raising this exception?
|
353
|
-
# move this rescue to around the code that actually might raise it.
|
354
|
-
rescue Zlib::GzipFile::Error
|
355
|
-
raise Gem::InstallError, "gzip error installing #{gem}"
|
356
351
|
end
|
357
352
|
|
358
353
|
def run_pre_install_hooks # :nodoc:
|
@@ -714,7 +709,7 @@ class Gem::Installer
|
|
714
709
|
end
|
715
710
|
|
716
711
|
def verify_spec
|
717
|
-
unless
|
712
|
+
unless Gem::Specification::VALID_NAME_PATTERN.match?(spec.name)
|
718
713
|
raise Gem::InstallError, "#{spec} has an invalid name"
|
719
714
|
end
|
720
715
|
|
@@ -726,11 +721,11 @@ class Gem::Installer
|
|
726
721
|
raise Gem::InstallError, "#{spec} has an invalid extensions"
|
727
722
|
end
|
728
723
|
|
729
|
-
if spec.platform.to_s
|
724
|
+
if /\R/.match?(spec.platform.to_s)
|
730
725
|
raise Gem::InstallError, "#{spec.platform} is an invalid platform"
|
731
726
|
end
|
732
727
|
|
733
|
-
unless
|
728
|
+
unless /\A\d+\z/.match?(spec.specification_version.to_s)
|
734
729
|
raise Gem::InstallError, "#{spec} has an invalid specification_version"
|
735
730
|
end
|
736
731
|
|
@@ -747,9 +742,9 @@ class Gem::Installer
|
|
747
742
|
# Return the text for an application file.
|
748
743
|
|
749
744
|
def app_script_text(bin_file_name)
|
750
|
-
#
|
745
|
+
# NOTE: that the `load` lines cannot be indented, as old RG versions match
|
751
746
|
# against the beginning of the line
|
752
|
-
|
747
|
+
<<-TEXT
|
753
748
|
#{shebang bin_file_name}
|
754
749
|
#
|
755
750
|
# This file was generated by RubyGems.
|
@@ -105,7 +105,7 @@ module Gem::LocalRemoteOptions
|
|
105
105
|
|
106
106
|
add_option(:"Local/Remote", "-s", "--source URL", URI::HTTP,
|
107
107
|
"Append URL to list of remote gem sources") do |source, options|
|
108
|
-
source << "/"
|
108
|
+
source << "/" unless source.end_with?("/")
|
109
109
|
|
110
110
|
if options.delete :sources_cleared
|
111
111
|
Gem.sources = [source]
|
@@ -125,7 +125,7 @@ class Gem::Package::TarHeader
|
|
125
125
|
end
|
126
126
|
|
127
127
|
def self.strict_oct(str)
|
128
|
-
return str.strip.oct if
|
128
|
+
return str.strip.oct if /\A[0-7]*\z/.match?(str.strip)
|
129
129
|
|
130
130
|
raise ArgumentError, "#{str.inspect} is not an octal string"
|
131
131
|
end
|
@@ -135,7 +135,7 @@ class Gem::Package::TarHeader
|
|
135
135
|
# \ff flags a negative 256-based number
|
136
136
|
# In case we have a match, parse it as a signed binary value
|
137
137
|
# in big-endian order, except that the high-order bit is ignored.
|
138
|
-
return str.unpack("N2").last if
|
138
|
+
return str.unpack("N2").last if /\A[\x80\xff]/n.match?(str)
|
139
139
|
strict_oct(str)
|
140
140
|
end
|
141
141
|
|
@@ -50,7 +50,14 @@ class Gem::Package::TarReader
|
|
50
50
|
return enum_for __method__ unless block_given?
|
51
51
|
|
52
52
|
until @io.eof? do
|
53
|
-
|
53
|
+
begin
|
54
|
+
header = Gem::Package::TarHeader.from @io
|
55
|
+
rescue ArgumentError => e
|
56
|
+
# Specialize only exceptions from Gem::Package::TarHeader.strict_oct
|
57
|
+
raise e unless e.message.match?(/ is not an octal string$/)
|
58
|
+
raise Gem::Package::TarInvalidError, e.message
|
59
|
+
end
|
60
|
+
|
54
61
|
return if header.empty?
|
55
62
|
entry = Gem::Package::TarReader::Entry.new header, @io
|
56
63
|
yield entry
|
@@ -83,7 +90,7 @@ class Gem::Package::TarReader
|
|
83
90
|
|
84
91
|
return unless found
|
85
92
|
|
86
|
-
|
93
|
+
yield found
|
87
94
|
ensure
|
88
95
|
rewind
|
89
96
|
end
|
data/lib/rubygems/package.rb
CHANGED
@@ -53,7 +53,7 @@ class Gem::PathSupport
|
|
53
53
|
gem_path = gpaths.split(Gem.path_separator)
|
54
54
|
# Handle the path_separator being set to a regexp, which will cause
|
55
55
|
# end_with? to error
|
56
|
-
if
|
56
|
+
if /#{Gem.path_separator}\z/.match?(gpaths)
|
57
57
|
gem_path += default_path
|
58
58
|
end
|
59
59
|
|
data/lib/rubygems/platform.rb
CHANGED
@@ -13,9 +13,11 @@ class Gem::Platform
|
|
13
13
|
attr_accessor :cpu, :os, :version
|
14
14
|
|
15
15
|
def self.local
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
@local ||= begin
|
17
|
+
arch = RbConfig::CONFIG["arch"]
|
18
|
+
arch = "#{arch}_60" if /mswin(?:32|64)$/.match?(arch)
|
19
|
+
new(arch)
|
20
|
+
end
|
19
21
|
end
|
20
22
|
|
21
23
|
def self.match(platform)
|
@@ -37,7 +39,7 @@ class Gem::Platform
|
|
37
39
|
end
|
38
40
|
|
39
41
|
def self.match_gem?(platform, gem_name)
|
40
|
-
#
|
42
|
+
# NOTE: this method might be redefined by Ruby implementations to
|
41
43
|
# customize behavior per RUBY_ENGINE, gem_name or other criteria.
|
42
44
|
match_platforms?(platform, Gem.platforms)
|
43
45
|
end
|
@@ -136,7 +136,7 @@ class Gem::RemoteFetcher
|
|
136
136
|
scheme = source_uri.scheme
|
137
137
|
|
138
138
|
# URI.parse gets confused by MS Windows paths with forward slashes.
|
139
|
-
scheme = nil if
|
139
|
+
scheme = nil if /^[a-z]$/i.match?(scheme)
|
140
140
|
|
141
141
|
# REFACTOR: split this up and dispatch on scheme (eg download_http)
|
142
142
|
# REFACTOR: be sure to clean up fake fetcher when you do this... cleaner
|
@@ -174,7 +174,7 @@ class Gem::RemoteFetcher
|
|
174
174
|
end
|
175
175
|
|
176
176
|
verbose "Using local gem #{local_gem_path}"
|
177
|
-
when nil then # TODO test for local overriding cache
|
177
|
+
when nil then # TODO: test for local overriding cache
|
178
178
|
source_path = if Gem.win_platform? && source_uri.scheme &&
|
179
179
|
!source_uri.path.include?(":")
|
180
180
|
"#{source_uri.scheme}:#{source_uri.path}"
|
data/lib/rubygems/request.rb
CHANGED
@@ -238,7 +238,7 @@ class Gem::Request
|
|
238
238
|
verbose "fatal error"
|
239
239
|
|
240
240
|
raise Gem::RemoteFetcher::FetchError.new("fatal error", @uri)
|
241
|
-
# HACK work around EOFError bug in Net::HTTP
|
241
|
+
# HACK: work around EOFError bug in Net::HTTP
|
242
242
|
# NOTE Errno::ECONNABORTED raised a lot on Windows, and make impossible
|
243
243
|
# to install gems.
|
244
244
|
rescue EOFError, Timeout::Error,
|
data/lib/rubygems/resolver.rb
CHANGED
@@ -145,7 +145,7 @@ class Gem::Resolver
|
|
145
145
|
activation_request =
|
146
146
|
Gem::Resolver::ActivationRequest.new spec, dep, possible
|
147
147
|
|
148
|
-
|
148
|
+
[spec, activation_request]
|
149
149
|
end
|
150
150
|
|
151
151
|
def requests(s, act, reqs=[]) # :nodoc:
|
@@ -213,7 +213,7 @@ class Gem::Resolver
|
|
213
213
|
|
214
214
|
matching_platform = select_local_platforms all
|
215
215
|
|
216
|
-
|
216
|
+
[matching_platform, all]
|
217
217
|
end
|
218
218
|
|
219
219
|
##
|
@@ -247,7 +247,7 @@ class Gem::Resolver
|
|
247
247
|
|
248
248
|
sources.each do |source|
|
249
249
|
groups[source].
|
250
|
-
sort_by {|spec| [spec.version, spec.platform =~ Gem::Platform.local ? 1 : 0] }.
|
250
|
+
sort_by {|spec| [spec.version, spec.platform =~ Gem::Platform.local ? 1 : 0] }. # rubocop:disable Performance/RegexpMatch
|
251
251
|
map {|spec| ActivationRequest.new spec, dependency }.
|
252
252
|
each {|activation_request| activation_requests << activation_request }
|
253
253
|
end
|
@@ -42,10 +42,11 @@ class Gem::Source::Local < Gem::Source
|
|
42
42
|
|
43
43
|
Dir["*.gem"].each do |file|
|
44
44
|
pkg = Gem::Package.new(file)
|
45
|
+
spec = pkg.spec
|
45
46
|
rescue SystemCallError, Gem::Package::FormatError
|
46
47
|
# ignore
|
47
48
|
else
|
48
|
-
tup =
|
49
|
+
tup = spec.name_tuple
|
49
50
|
@specs[tup] = [File.expand_path(file), pkg]
|
50
51
|
|
51
52
|
case type
|
data/lib/rubygems/source_list.rb
CHANGED
@@ -124,7 +124,7 @@ class Gem::SpecFetcher
|
|
124
124
|
|
125
125
|
tuples = tuples.sort_by {|x| x[0].version }
|
126
126
|
|
127
|
-
|
127
|
+
[tuples, errors]
|
128
128
|
end
|
129
129
|
|
130
130
|
##
|
@@ -162,7 +162,7 @@ class Gem::SpecFetcher
|
|
162
162
|
specs << [spec, source]
|
163
163
|
end
|
164
164
|
|
165
|
-
|
165
|
+
[specs, errors]
|
166
166
|
end
|
167
167
|
|
168
168
|
##
|
@@ -533,13 +533,6 @@ class Gem::Specification < Gem::BasicSpecification
|
|
533
533
|
|
534
534
|
attr_reader :required_rubygems_version
|
535
535
|
|
536
|
-
##
|
537
|
-
# The version of RubyGems used to create this gem.
|
538
|
-
#
|
539
|
-
# Do not set this, it is set automatically when the gem is packaged.
|
540
|
-
|
541
|
-
attr_accessor :rubygems_version
|
542
|
-
|
543
536
|
##
|
544
537
|
# The key used to sign this gem. See Gem::Security for details.
|
545
538
|
|
@@ -727,6 +720,21 @@ class Gem::Specification < Gem::BasicSpecification
|
|
727
720
|
@test_files = Array files
|
728
721
|
end
|
729
722
|
|
723
|
+
######################################################################
|
724
|
+
# :section: Read-only attributes
|
725
|
+
|
726
|
+
##
|
727
|
+
# The version of RubyGems used to create this gem.
|
728
|
+
|
729
|
+
attr_accessor :rubygems_version
|
730
|
+
|
731
|
+
##
|
732
|
+
# The path where this gem installs its extensions.
|
733
|
+
|
734
|
+
def extensions_dir
|
735
|
+
@extensions_dir ||= super
|
736
|
+
end
|
737
|
+
|
730
738
|
######################################################################
|
731
739
|
# :section: Specification internals
|
732
740
|
|
@@ -1449,7 +1457,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1449
1457
|
@activated = true
|
1450
1458
|
@loaded = true
|
1451
1459
|
|
1452
|
-
|
1460
|
+
true
|
1453
1461
|
end
|
1454
1462
|
|
1455
1463
|
##
|
@@ -1520,7 +1528,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1520
1528
|
def sanitize_string(string)
|
1521
1529
|
return string unless string
|
1522
1530
|
|
1523
|
-
# HACK the #to_s is in here because RSpec has an Array of Arrays of
|
1531
|
+
# HACK: the #to_s is in here because RSpec has an Array of Arrays of
|
1524
1532
|
# Strings for authors. Need a way to disallow bad values on gemspec
|
1525
1533
|
# generation. (Probably won't happen.)
|
1526
1534
|
string.to_s
|
@@ -1539,7 +1547,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1539
1547
|
executables
|
1540
1548
|
end
|
1541
1549
|
rescue StandardError
|
1542
|
-
|
1550
|
+
nil
|
1543
1551
|
end
|
1544
1552
|
|
1545
1553
|
##
|
@@ -2398,8 +2406,8 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2398
2406
|
# Checks if this specification meets the requirement of +dependency+.
|
2399
2407
|
|
2400
2408
|
def satisfies_requirement?(dependency)
|
2401
|
-
|
2402
|
-
|
2409
|
+
@name == dependency.name &&
|
2410
|
+
dependency.requirement.satisfied_by?(@version)
|
2403
2411
|
end
|
2404
2412
|
|
2405
2413
|
##
|
@@ -2685,7 +2693,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2685
2693
|
end
|
2686
2694
|
invalidate_memoized_attributes
|
2687
2695
|
|
2688
|
-
|
2696
|
+
@version
|
2689
2697
|
end
|
2690
2698
|
|
2691
2699
|
def stubbed?
|
@@ -144,7 +144,7 @@ class Gem::SpecificationPolicy
|
|
144
144
|
end
|
145
145
|
|
146
146
|
next unless METADATA_LINK_KEYS.include? key
|
147
|
-
|
147
|
+
unless VALID_URI_PATTERN.match?(value)
|
148
148
|
error "#{entry} has invalid link: #{value.inspect}"
|
149
149
|
end
|
150
150
|
end
|
@@ -279,11 +279,11 @@ duplicate dependency on #{dep}, (#{prev.requirement}) use:
|
|
279
279
|
|
280
280
|
if !name.is_a?(String)
|
281
281
|
error "invalid value for attribute name: \"#{name.inspect}\" must be a string"
|
282
|
-
elsif
|
282
|
+
elsif !/[a-zA-Z]/.match?(name)
|
283
283
|
error "invalid value for attribute name: #{name.dump} must include at least one letter"
|
284
|
-
elsif name
|
284
|
+
elsif !VALID_NAME_PATTERN.match?(name)
|
285
285
|
error "invalid value for attribute name: #{name.dump} can only include letters, numbers, dashes, and underscores"
|
286
|
-
elsif name
|
286
|
+
elsif SPECIAL_CHARACTERS.match?(name)
|
287
287
|
error "invalid value for attribute name: #{name.dump} can not begin with a period, dash, or underscore"
|
288
288
|
end
|
289
289
|
end
|
@@ -401,11 +401,11 @@ or set it to nil if you don't want to specify a license.
|
|
401
401
|
error "#{LAZY} is not an email"
|
402
402
|
end
|
403
403
|
|
404
|
-
if @specification.description
|
404
|
+
if LAZY_PATTERN.match?(@specification.description)
|
405
405
|
error "#{LAZY} is not a description"
|
406
406
|
end
|
407
407
|
|
408
|
-
if @specification.summary
|
408
|
+
if LAZY_PATTERN.match?(@specification.summary)
|
409
409
|
error "#{LAZY} is not a summary"
|
410
410
|
end
|
411
411
|
|
data/lib/rubygems/uninstaller.rb
CHANGED
@@ -46,7 +46,7 @@ class Gem::Uninstaller
|
|
46
46
|
# Constructs an uninstaller that will uninstall +gem+
|
47
47
|
|
48
48
|
def initialize(gem, options = {})
|
49
|
-
# TODO document the valid options
|
49
|
+
# TODO: document the valid options
|
50
50
|
@gem = gem
|
51
51
|
@version = options[:version] || Gem::Requirement.default
|
52
52
|
@gem_home = File.realpath(options[:install_dir] || Gem.dir)
|
@@ -350,7 +350,7 @@ class Gem::Uninstaller
|
|
350
350
|
|
351
351
|
msg << "If you remove this gem, these dependencies will not be met."
|
352
352
|
msg << "Continue with Uninstall?"
|
353
|
-
|
353
|
+
ask_yes_no(msg.join("\n"), false)
|
354
354
|
end
|
355
355
|
|
356
356
|
##
|
@@ -241,7 +241,7 @@ class Gem::StreamUI
|
|
241
241
|
|
242
242
|
result = result.strip.to_i - 1
|
243
243
|
return nil, nil unless (0...list.size) === result
|
244
|
-
|
244
|
+
[list[result], result]
|
245
245
|
end
|
246
246
|
|
247
247
|
##
|
@@ -279,7 +279,7 @@ class Gem::StreamUI
|
|
279
279
|
end
|
280
280
|
end
|
281
281
|
|
282
|
-
|
282
|
+
result
|
283
283
|
end
|
284
284
|
|
285
285
|
##
|