rubygems-update 3.4.20 → 3.4.21
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 +22 -0
- data/Manifest.txt +1 -0
- data/bundler/CHANGELOG.md +34 -3
- data/bundler/lib/bundler/build_metadata.rb +3 -3
- data/bundler/lib/bundler/cli/check.rb +1 -1
- data/bundler/lib/bundler/cli/gem.rb +1 -3
- data/bundler/lib/bundler/cli/install.rb +2 -2
- data/bundler/lib/bundler/cli/lock.rb +26 -23
- data/bundler/lib/bundler/cli/open.rb +5 -7
- data/bundler/lib/bundler/definition.rb +42 -25
- data/bundler/lib/bundler/env.rb +2 -2
- data/bundler/lib/bundler/gem_version_promoter.rb +2 -2
- data/bundler/lib/bundler/injector.rb +1 -1
- data/bundler/lib/bundler/installer/parallel_installer.rb +0 -26
- data/bundler/lib/bundler/installer/standalone.rb +13 -6
- data/bundler/lib/bundler/lockfile_parser.rb +29 -24
- data/bundler/lib/bundler/man/bundle-add.1 +1 -1
- data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
- data/bundler/lib/bundler/man/bundle-cache.1 +1 -1
- data/bundler/lib/bundler/man/bundle-check.1 +1 -1
- data/bundler/lib/bundler/man/bundle-clean.1 +1 -1
- data/bundler/lib/bundler/man/bundle-config.1 +1 -1
- data/bundler/lib/bundler/man/bundle-console.1 +1 -1
- data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
- data/bundler/lib/bundler/man/bundle-exec.1 +2 -2
- data/bundler/lib/bundler/man/bundle-exec.1.ronn +2 -3
- data/bundler/lib/bundler/man/bundle-gem.1 +1 -1
- data/bundler/lib/bundler/man/bundle-help.1 +1 -1
- data/bundler/lib/bundler/man/bundle-info.1 +1 -1
- data/bundler/lib/bundler/man/bundle-init.1 +1 -1
- data/bundler/lib/bundler/man/bundle-inject.1 +1 -1
- data/bundler/lib/bundler/man/bundle-install.1 +1 -1
- data/bundler/lib/bundler/man/bundle-list.1 +1 -1
- data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
- data/bundler/lib/bundler/man/bundle-open.1 +1 -1
- data/bundler/lib/bundler/man/bundle-outdated.1 +1 -1
- data/bundler/lib/bundler/man/bundle-platform.1 +1 -1
- data/bundler/lib/bundler/man/bundle-plugin.1 +17 -17
- data/bundler/lib/bundler/man/bundle-plugin.1.ronn +5 -5
- data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
- data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
- data/bundler/lib/bundler/man/bundle-show.1 +1 -1
- data/bundler/lib/bundler/man/bundle-update.1 +1 -1
- data/bundler/lib/bundler/man/bundle-version.1 +1 -1
- data/bundler/lib/bundler/man/bundle-viz.1 +1 -1
- data/bundler/lib/bundler/man/bundle.1 +1 -1
- data/bundler/lib/bundler/man/gemfile.5 +1 -1
- data/bundler/lib/bundler/resolver/package.rb +5 -0
- data/bundler/lib/bundler/resolver.rb +27 -7
- data/bundler/lib/bundler/ruby_version.rb +8 -1
- data/bundler/lib/bundler/settings.rb +53 -16
- data/bundler/lib/bundler/shared_helpers.rb +16 -1
- data/bundler/lib/bundler/source/git/git_proxy.rb +13 -4
- data/bundler/lib/bundler/spec_set.rb +2 -2
- data/bundler/lib/bundler/stub_specification.rb +4 -2
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +6 -2
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/lib/bundler/yaml_serializer.rb +6 -7
- data/lib/rubygems/basic_specification.rb +1 -1
- data/lib/rubygems/command.rb +2 -2
- data/lib/rubygems/command_manager.rb +1 -1
- data/lib/rubygems/commands/cert_command.rb +2 -2
- data/lib/rubygems/commands/check_command.rb +5 -1
- data/lib/rubygems/commands/cleanup_command.rb +1 -1
- data/lib/rubygems/commands/contents_command.rb +1 -1
- data/lib/rubygems/commands/help_command.rb +2 -2
- data/lib/rubygems/commands/open_command.rb +1 -3
- data/lib/rubygems/commands/owner_command.rb +1 -1
- data/lib/rubygems/commands/setup_command.rb +8 -8
- data/lib/rubygems/commands/specification_command.rb +5 -1
- data/lib/rubygems/commands/stale_command.rb +1 -1
- data/lib/rubygems/commands/update_command.rb +3 -3
- data/lib/rubygems/commands/yank_command.rb +1 -1
- data/lib/rubygems/config_file.rb +60 -13
- data/lib/rubygems/core_ext/kernel_gem.rb +1 -1
- data/lib/rubygems/core_ext/kernel_require.rb +1 -1
- data/lib/rubygems/defaults.rb +6 -2
- data/lib/rubygems/deprecate.rb +2 -1
- data/lib/rubygems/doctor.rb +1 -1
- data/lib/rubygems/errors.rb +1 -1
- data/lib/rubygems/exceptions.rb +1 -1
- data/lib/rubygems/ext/builder.rb +5 -4
- data/lib/rubygems/ext/cargo_builder.rb +2 -2
- data/lib/rubygems/gem_runner.rb +5 -1
- data/lib/rubygems/gemcutter_utilities.rb +2 -2
- data/lib/rubygems/indexer.rb +1 -1
- data/lib/rubygems/install_update_options.rb +1 -1
- data/lib/rubygems/installer.rb +8 -8
- data/lib/rubygems/package/old.rb +1 -1
- data/lib/rubygems/package/tar_writer.rb +1 -1
- data/lib/rubygems/package.rb +8 -8
- data/lib/rubygems/platform.rb +6 -2
- data/lib/rubygems/query_utils.rb +4 -4
- data/lib/rubygems/remote_fetcher.rb +10 -2
- data/lib/rubygems/request_set.rb +2 -1
- data/lib/rubygems/requirement.rb +1 -1
- data/lib/rubygems/resolver/api_set.rb +2 -1
- data/lib/rubygems/resolver/api_specification.rb +1 -1
- data/lib/rubygems/security/signer.rb +10 -2
- data/lib/rubygems/security/trust_dir.rb +4 -4
- data/lib/rubygems/security.rb +1 -1
- data/lib/rubygems/security_option.rb +1 -1
- data/lib/rubygems/source.rb +5 -1
- data/lib/rubygems/specification.rb +9 -10
- data/lib/rubygems/specification_policy.rb +5 -5
- data/lib/rubygems/uninstaller.rb +1 -1
- data/lib/rubygems/update_suggestion.rb +1 -1
- data/lib/rubygems/util.rb +5 -1
- data/lib/rubygems/version.rb +3 -2
- data/lib/rubygems/yaml_serializer.rb +88 -0
- data/lib/rubygems.rb +4 -4
- data/rubygems-update.gemspec +1 -1
- data/setup.rb +2 -0
- data/test/rubygems/bundler_test_gem.rb +6 -3
- data/test/rubygems/helper.rb +23 -15
- data/test/rubygems/package/tar_test_case.rb +2 -2
- data/test/rubygems/test_gem.rb +51 -26
- data/test/rubygems/test_gem_command.rb +3 -1
- data/test/rubygems/test_gem_commands_cert_command.rb +22 -22
- data/test/rubygems/test_gem_commands_cleanup_command.rb +2 -2
- data/test/rubygems/test_gem_commands_environment_command.rb +2 -1
- data/test/rubygems/test_gem_commands_exec_command.rb +5 -1
- data/test/rubygems/test_gem_commands_install_command.rb +3 -3
- data/test/rubygems/test_gem_commands_open_command.rb +5 -2
- data/test/rubygems/test_gem_commands_pristine_command.rb +2 -2
- data/test/rubygems/test_gem_commands_push_command.rb +7 -6
- data/test/rubygems/test_gem_commands_signin_command.rb +8 -8
- data/test/rubygems/test_gem_commands_uninstall_command.rb +1 -1
- data/test/rubygems/test_gem_commands_unpack_command.rb +2 -2
- data/test/rubygems/test_gem_config_file.rb +46 -12
- data/test/rubygems/test_gem_ext_cargo_builder.rb +2 -2
- data/test/rubygems/test_gem_gemcutter_utilities.rb +8 -5
- data/test/rubygems/test_gem_install_update_options.rb +3 -3
- data/test/rubygems/test_gem_installer.rb +15 -15
- data/test/rubygems/test_gem_package.rb +35 -34
- data/test/rubygems/test_gem_package_old.rb +1 -1
- data/test/rubygems/test_gem_package_tar_header.rb +3 -3
- data/test/rubygems/test_gem_package_tar_reader.rb +4 -4
- data/test/rubygems/test_gem_package_tar_writer.rb +28 -28
- data/test/rubygems/test_gem_rdoc.rb +2 -2
- data/test/rubygems/test_gem_remote_fetcher.rb +13 -9
- data/test/rubygems/test_gem_request.rb +5 -5
- data/test/rubygems/test_gem_request_connection_pools.rb +2 -1
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +14 -7
- data/test/rubygems/test_gem_security.rb +2 -2
- data/test/rubygems/test_gem_security_signer.rb +2 -2
- data/test/rubygems/test_gem_security_trust_dir.rb +6 -6
- data/test/rubygems/test_gem_spec_fetcher.rb +2 -2
- data/test/rubygems/test_gem_specification.rb +29 -29
- data/test/rubygems/test_gem_update_suggestion.rb +12 -6
- data/test/rubygems/test_gem_util.rb +2 -2
- data/test/rubygems/test_gem_version.rb +4 -2
- data/test/rubygems/utilities.rb +2 -1
- metadata +4 -3
@@ -95,6 +95,8 @@ module Bundler
|
|
95
95
|
|
96
96
|
@global_config = load_config(global_config_file)
|
97
97
|
@temporary = {}
|
98
|
+
|
99
|
+
@key_cache = {}
|
98
100
|
end
|
99
101
|
|
100
102
|
def [](name)
|
@@ -310,7 +312,7 @@ module Bundler
|
|
310
312
|
end
|
311
313
|
|
312
314
|
def key_for(key)
|
313
|
-
self.class.key_for(key)
|
315
|
+
@key_cache[key] ||= self.class.key_for(key)
|
314
316
|
end
|
315
317
|
|
316
318
|
private
|
@@ -342,12 +344,12 @@ module Bundler
|
|
342
344
|
end
|
343
345
|
|
344
346
|
def is_bool(name)
|
345
|
-
name = name
|
347
|
+
name = self.class.key_to_s(name)
|
346
348
|
BOOL_KEYS.include?(name) || BOOL_KEYS.include?(parent_setting_for(name))
|
347
349
|
end
|
348
350
|
|
349
351
|
def is_string(name)
|
350
|
-
name = name
|
352
|
+
name = self.class.key_to_s(name)
|
351
353
|
STRING_KEYS.include?(name) || name.start_with?("local.") || name.start_with?("mirror.") || name.start_with?("build.")
|
352
354
|
end
|
353
355
|
|
@@ -363,11 +365,11 @@ module Bundler
|
|
363
365
|
end
|
364
366
|
|
365
367
|
def is_num(key)
|
366
|
-
NUMBER_KEYS.include?(key
|
368
|
+
NUMBER_KEYS.include?(self.class.key_to_s(key))
|
367
369
|
end
|
368
370
|
|
369
371
|
def is_array(key)
|
370
|
-
ARRAY_KEYS.include?(key
|
372
|
+
ARRAY_KEYS.include?(self.class.key_to_s(key))
|
371
373
|
end
|
372
374
|
|
373
375
|
def is_credential(key)
|
@@ -390,7 +392,7 @@ module Bundler
|
|
390
392
|
end
|
391
393
|
|
392
394
|
def set_key(raw_key, value, hash, file)
|
393
|
-
raw_key = raw_key
|
395
|
+
raw_key = self.class.key_to_s(raw_key)
|
394
396
|
value = array_to_s(value) if is_array(raw_key)
|
395
397
|
|
396
398
|
key = key_for(raw_key)
|
@@ -405,13 +407,12 @@ module Bundler
|
|
405
407
|
return unless file
|
406
408
|
SharedHelpers.filesystem_access(file) do |p|
|
407
409
|
FileUtils.mkdir_p(p.dirname)
|
408
|
-
|
409
|
-
p.open("w") {|f| f.write(YAMLSerializer.dump(hash)) }
|
410
|
+
p.open("w") {|f| f.write(serializer_class.dump(hash)) }
|
410
411
|
end
|
411
412
|
end
|
412
413
|
|
413
414
|
def converted_value(value, key)
|
414
|
-
key = key
|
415
|
+
key = self.class.key_to_s(key)
|
415
416
|
|
416
417
|
if is_array(key)
|
417
418
|
to_array(value)
|
@@ -470,24 +471,31 @@ module Bundler
|
|
470
471
|
SharedHelpers.filesystem_access(config_file, :read) do |file|
|
471
472
|
valid_file = file.exist? && !file.size.zero?
|
472
473
|
return {} unless valid_file
|
473
|
-
|
474
|
-
YAMLSerializer.load(file.read).inject({}) do |config, (k, v)|
|
475
|
-
new_k = k
|
476
|
-
|
474
|
+
serializer_class.load(file.read).inject({}) do |config, (k, v)|
|
477
475
|
if k.include?("-")
|
478
476
|
Bundler.ui.warn "Your #{file} config includes `#{k}`, which contains the dash character (`-`).\n" \
|
479
477
|
"This is deprecated, because configuration through `ENV` should be possible, but `ENV` keys cannot include dashes.\n" \
|
480
478
|
"Please edit #{file} and replace any dashes in configuration keys with a triple underscore (`___`)."
|
481
479
|
|
482
|
-
|
480
|
+
# string hash keys are frozen
|
481
|
+
k = k.gsub("-", "___")
|
483
482
|
end
|
484
483
|
|
485
|
-
config[
|
484
|
+
config[k] = v
|
486
485
|
config
|
487
486
|
end
|
488
487
|
end
|
489
488
|
end
|
490
489
|
|
490
|
+
def serializer_class
|
491
|
+
require "rubygems/yaml_serializer"
|
492
|
+
Gem::YAMLSerializer
|
493
|
+
rescue LoadError
|
494
|
+
# TODO: Remove this when RubyGems 3.4 is EOL
|
495
|
+
require_relative "yaml_serializer"
|
496
|
+
YAMLSerializer
|
497
|
+
end
|
498
|
+
|
491
499
|
PER_URI_OPTIONS = %w[
|
492
500
|
fallback_timeout
|
493
501
|
].freeze
|
@@ -503,7 +511,7 @@ module Bundler
|
|
503
511
|
|
504
512
|
def self.key_for(key)
|
505
513
|
key = normalize_uri(key).to_s if key.is_a?(String) && key.start_with?("http", "mirror.http")
|
506
|
-
key = key.
|
514
|
+
key = key_to_s(key).gsub(".", "__")
|
507
515
|
key.gsub!("-", "___")
|
508
516
|
key.upcase!
|
509
517
|
|
@@ -527,5 +535,34 @@ module Bundler
|
|
527
535
|
end
|
528
536
|
"#{prefix}#{uri}#{suffix}"
|
529
537
|
end
|
538
|
+
|
539
|
+
# This is a hot method, so avoid respond_to? checks on every invocation
|
540
|
+
if :read.respond_to?(:name)
|
541
|
+
def self.key_to_s(key)
|
542
|
+
case key
|
543
|
+
when String
|
544
|
+
key
|
545
|
+
when Symbol
|
546
|
+
key.name
|
547
|
+
when Bundler::URI::HTTP
|
548
|
+
key.to_s
|
549
|
+
else
|
550
|
+
raise ArgumentError, "Invalid key: #{key.inspect}"
|
551
|
+
end
|
552
|
+
end
|
553
|
+
else
|
554
|
+
def self.key_to_s(key)
|
555
|
+
case key
|
556
|
+
when String
|
557
|
+
key
|
558
|
+
when Symbol
|
559
|
+
key.to_s
|
560
|
+
when Bundler::URI::HTTP
|
561
|
+
key.to_s
|
562
|
+
else
|
563
|
+
raise ArgumentError, "Invalid key: #{key.inspect}"
|
564
|
+
end
|
565
|
+
end
|
566
|
+
end
|
530
567
|
end
|
531
568
|
end
|
@@ -197,6 +197,21 @@ module Bundler
|
|
197
197
|
filesystem_access(gemfile_path) {|g| File.open(g, "w") {|file| file.puts contents } }
|
198
198
|
end
|
199
199
|
|
200
|
+
def relative_gemfile_path
|
201
|
+
relative_path_to(Bundler.default_gemfile)
|
202
|
+
end
|
203
|
+
|
204
|
+
def relative_lockfile_path
|
205
|
+
relative_path_to(Bundler.default_lockfile)
|
206
|
+
end
|
207
|
+
|
208
|
+
def relative_path_to(destination, from: pwd)
|
209
|
+
Pathname.new(destination).relative_path_from(from).to_s
|
210
|
+
rescue ArgumentError
|
211
|
+
# on Windows, if source and destination are on different drivers, there's no relative path from one to the other
|
212
|
+
destination
|
213
|
+
end
|
214
|
+
|
200
215
|
private
|
201
216
|
|
202
217
|
def validate_bundle_path
|
@@ -297,7 +312,7 @@ module Bundler
|
|
297
312
|
def set_rubyopt
|
298
313
|
rubyopt = [ENV["RUBYOPT"]].compact
|
299
314
|
setup_require = "-r#{File.expand_path("setup", __dir__)}"
|
300
|
-
return if !rubyopt.empty? && rubyopt.first =~ /#{setup_require}/
|
315
|
+
return if !rubyopt.empty? && rubyopt.first =~ /#{Regexp.escape(setup_require)}/
|
301
316
|
rubyopt.unshift setup_require
|
302
317
|
Bundler::SharedHelpers.set_env "RUBYOPT", rubyopt.join(" ")
|
303
318
|
end
|
@@ -130,7 +130,8 @@ module Bundler
|
|
130
130
|
end
|
131
131
|
end
|
132
132
|
|
133
|
-
|
133
|
+
ref = @commit_ref || (locked_to_full_sha? && @revision)
|
134
|
+
git "fetch", "--force", "--quiet", *extra_fetch_args(ref), :dir => destination if ref
|
134
135
|
|
135
136
|
git "reset", "--hard", @revision, :dir => destination
|
136
137
|
|
@@ -247,7 +248,15 @@ module Bundler
|
|
247
248
|
end
|
248
249
|
|
249
250
|
def pinned_to_full_sha?
|
250
|
-
ref
|
251
|
+
full_sha_revision?(ref)
|
252
|
+
end
|
253
|
+
|
254
|
+
def locked_to_full_sha?
|
255
|
+
full_sha_revision?(@revision)
|
256
|
+
end
|
257
|
+
|
258
|
+
def full_sha_revision?(ref)
|
259
|
+
ref&.match?(/\A\h{40}\z/)
|
251
260
|
end
|
252
261
|
|
253
262
|
def git_null(*command, dir: nil)
|
@@ -411,9 +420,9 @@ module Bundler
|
|
411
420
|
["--depth", depth.to_s]
|
412
421
|
end
|
413
422
|
|
414
|
-
def extra_fetch_args
|
423
|
+
def extra_fetch_args(ref)
|
415
424
|
extra_args = [path.to_s, *depth_args]
|
416
|
-
extra_args.push(
|
425
|
+
extra_args.push(ref)
|
417
426
|
extra_args
|
418
427
|
end
|
419
428
|
|
@@ -100,12 +100,12 @@ module Bundler
|
|
100
100
|
end
|
101
101
|
end
|
102
102
|
|
103
|
-
def
|
103
|
+
def incomplete_for_platform?(deps, platform)
|
104
104
|
return false if @specs.empty?
|
105
105
|
|
106
106
|
@incomplete_specs = []
|
107
107
|
|
108
|
-
self.for(deps, true, [
|
108
|
+
self.for(deps, true, [platform])
|
109
109
|
|
110
110
|
@incomplete_specs.any?
|
111
111
|
end
|
@@ -16,7 +16,8 @@ module Bundler
|
|
16
16
|
# Stub has no concept of source, which means that extension_dir may be wrong
|
17
17
|
# This is the case for git-based gems. So, instead manually assign the extension dir
|
18
18
|
return unless source.respond_to?(:extension_dir_name)
|
19
|
-
|
19
|
+
unique_extension_dir = [source.extension_dir_name, File.basename(full_gem_path)].uniq.join("-")
|
20
|
+
path = File.join(stub.extensions_dir, unique_extension_dir)
|
20
21
|
stub.extension_dir = File.expand_path(path)
|
21
22
|
end
|
22
23
|
|
@@ -56,7 +57,7 @@ module Bundler
|
|
56
57
|
end
|
57
58
|
|
58
59
|
def gem_build_complete_path
|
59
|
-
|
60
|
+
stub.gem_build_complete_path
|
60
61
|
end
|
61
62
|
|
62
63
|
def default_gem?
|
@@ -108,6 +109,7 @@ module Bundler
|
|
108
109
|
end
|
109
110
|
|
110
111
|
rs.source = source
|
112
|
+
rs.base_dir = stub.base_dir
|
111
113
|
|
112
114
|
rs
|
113
115
|
end
|
@@ -46,7 +46,9 @@ require "rb_sys/extensiontask"
|
|
46
46
|
|
47
47
|
task build: :compile
|
48
48
|
|
49
|
-
|
49
|
+
GEMSPEC = Gem::Specification.load("<%= config[:underscored_name] %>.gemspec")
|
50
|
+
|
51
|
+
RbSys::ExtensionTask.new(<%= config[:name].inspect %>, GEMSPEC) do |ext|
|
50
52
|
ext.lib_dir = "lib/<%= config[:namespaced_path] %>"
|
51
53
|
end
|
52
54
|
<% else -%>
|
@@ -54,7 +56,9 @@ require "rake/extensiontask"
|
|
54
56
|
|
55
57
|
task build: :compile
|
56
58
|
|
57
|
-
|
59
|
+
GEMSPEC = Gem::Specification.load("<%= config[:underscored_name] %>.gemspec")
|
60
|
+
|
61
|
+
Rake::ExtensionTask.new("<%= config[:underscored_name] %>", GEMSPEC) do |ext|
|
58
62
|
ext.lib_dir = "lib/<%= config[:namespaced_path] %>"
|
59
63
|
end
|
60
64
|
<% end -%>
|
@@ -54,8 +54,8 @@ module Bundler
|
|
54
54
|
str.split(/\r?\n/).each do |line|
|
55
55
|
if match = HASH_REGEX.match(line)
|
56
56
|
indent, key, quote, val = match.captures
|
57
|
-
|
58
|
-
depth = indent.
|
57
|
+
convert_to_backward_compatible_key!(key)
|
58
|
+
depth = indent.size / 2
|
59
59
|
if quote.empty? && val.empty?
|
60
60
|
new_hash = {}
|
61
61
|
stack[depth][key] = new_hash
|
@@ -76,14 +76,13 @@ module Bundler
|
|
76
76
|
end
|
77
77
|
|
78
78
|
# for settings' keys
|
79
|
-
def convert_to_backward_compatible_key(key)
|
80
|
-
key
|
81
|
-
key
|
82
|
-
key
|
79
|
+
def convert_to_backward_compatible_key!(key)
|
80
|
+
key << "/" if /https?:/i.match?(key) && !%r{/\Z}.match?(key)
|
81
|
+
key.gsub!(".", "__")
|
83
82
|
end
|
84
83
|
|
85
84
|
class << self
|
86
|
-
private :dump_hash, :convert_to_backward_compatible_key
|
85
|
+
private :dump_hash, :convert_to_backward_compatible_key!
|
87
86
|
end
|
88
87
|
end
|
89
88
|
end
|
@@ -291,7 +291,7 @@ class Gem::BasicSpecification
|
|
291
291
|
def lib_dirs_glob
|
292
292
|
dirs = if self.raw_require_paths
|
293
293
|
if self.raw_require_paths.size > 1
|
294
|
-
"{#{self.raw_require_paths.join(
|
294
|
+
"{#{self.raw_require_paths.join(",")}}"
|
295
295
|
else
|
296
296
|
self.raw_require_paths.first
|
297
297
|
end
|
data/lib/rubygems/command.rb
CHANGED
@@ -228,7 +228,7 @@ class Gem::Command
|
|
228
228
|
|
229
229
|
if args.size > 1
|
230
230
|
raise Gem::CommandLineError,
|
231
|
-
"Too many gem names (#{args.join(
|
231
|
+
"Too many gem names (#{args.join(", ")}); please specify only one"
|
232
232
|
end
|
233
233
|
|
234
234
|
args.first
|
@@ -431,7 +431,7 @@ class Gem::Command
|
|
431
431
|
def handles?(args)
|
432
432
|
parser.parse!(args.dup)
|
433
433
|
return true
|
434
|
-
rescue
|
434
|
+
rescue StandardError
|
435
435
|
return false
|
436
436
|
end
|
437
437
|
|
@@ -201,7 +201,7 @@ class Gem::CommandManager
|
|
201
201
|
|
202
202
|
if possibilities.size > 1
|
203
203
|
raise Gem::CommandLineError,
|
204
|
-
"Ambiguous command #{cmd_name} matches [#{possibilities.join(
|
204
|
+
"Ambiguous command #{cmd_name} matches [#{possibilities.join(", ")}]"
|
205
205
|
elsif possibilities.empty?
|
206
206
|
raise Gem::UnknownCommandError.new(cmd_name)
|
207
207
|
end
|
@@ -178,7 +178,7 @@ class Gem::Commands::CertCommand < Gem::Command
|
|
178
178
|
|
179
179
|
algorithm = options[:key_algorithm] || Gem::Security::DEFAULT_KEY_ALGORITHM
|
180
180
|
key = Gem::Security.create_key(algorithm)
|
181
|
-
key_path = Gem::Security.write key, "gem-private_key.pem",
|
181
|
+
key_path = Gem::Security.write key, "gem-private_key.pem", 0o600, passphrase
|
182
182
|
|
183
183
|
return key, key_path
|
184
184
|
end
|
@@ -292,7 +292,7 @@ For further reading on signing gems see `ri Gem::Security`.
|
|
292
292
|
cert = File.read cert_file
|
293
293
|
cert = OpenSSL::X509::Certificate.new cert
|
294
294
|
|
295
|
-
permissions = File.stat(cert_file).mode &
|
295
|
+
permissions = File.stat(cert_file).mode & 0o777
|
296
296
|
|
297
297
|
issuer_cert = options[:issuer_cert]
|
298
298
|
issuer_key = options[:key]
|
@@ -41,7 +41,11 @@ class Gem::Commands::CheckCommand < Gem::Command
|
|
41
41
|
def check_gems
|
42
42
|
say "Checking gems..."
|
43
43
|
say
|
44
|
-
gems =
|
44
|
+
gems = begin
|
45
|
+
get_all_gem_names
|
46
|
+
rescue StandardError
|
47
|
+
[]
|
48
|
+
end
|
45
49
|
|
46
50
|
Gem::Validator.new.alien(gems).sort.each do |key, val|
|
47
51
|
unless val.empty?
|
@@ -92,7 +92,7 @@ prefix or only the files that are requireable.
|
|
92
92
|
|
93
93
|
def files_in_gem(spec)
|
94
94
|
gem_path = spec.full_gem_path
|
95
|
-
extra = "/{#{spec.require_paths.join
|
95
|
+
extra = "/{#{spec.require_paths.join ","}}" if options[:lib_only]
|
96
96
|
glob = "#{gem_path}#{extra}/**/*"
|
97
97
|
prefix_re = /#{Regexp.escape(gem_path)}\//
|
98
98
|
|
@@ -328,7 +328,7 @@ platform.
|
|
328
328
|
|
329
329
|
summary_width = 80 - margin_width - desc_width
|
330
330
|
wrap_indent = " " * (margin_width + desc_width)
|
331
|
-
format = "#{
|
331
|
+
format = "#{" " * margin_width}%-#{desc_width}s%s"
|
332
332
|
|
333
333
|
@command_manager.command_names.each do |cmd_name|
|
334
334
|
command = @command_manager[cmd_name]
|
@@ -367,7 +367,7 @@ platform.
|
|
367
367
|
command = @command_manager[possibilities.first]
|
368
368
|
command.invoke("--help")
|
369
369
|
elsif possibilities.size > 1
|
370
|
-
alert_warning "Ambiguous command #{command_name} (#{possibilities.join(
|
370
|
+
alert_warning "Ambiguous command #{command_name} (#{possibilities.join(", ")})"
|
371
371
|
else
|
372
372
|
alert_warning "Unknown command #{command_name}. Try: gem help commands"
|
373
373
|
end
|
@@ -134,7 +134,7 @@ prefix and suffix. If ruby was installed as `ruby18`, gem will be
|
|
134
134
|
installed as `gem18`.
|
135
135
|
|
136
136
|
By default, this RubyGems will install gem as:
|
137
|
-
#{Gem.default_exec_format %
|
137
|
+
#{Gem.default_exec_format % "gem"}
|
138
138
|
EOF
|
139
139
|
end
|
140
140
|
|
@@ -243,7 +243,7 @@ By default, this RubyGems will install gem as:
|
|
243
243
|
end
|
244
244
|
|
245
245
|
def install_executables(bin_dir)
|
246
|
-
prog_mode = options[:prog_mode] ||
|
246
|
+
prog_mode = options[:prog_mode] || 0o755
|
247
247
|
|
248
248
|
executables = { "gem" => "exe" }
|
249
249
|
executables.each do |tool, path|
|
@@ -369,7 +369,7 @@ By default, this RubyGems will install gem as:
|
|
369
369
|
File.dirname(loaded_from)
|
370
370
|
else
|
371
371
|
target_specs_dir = File.join(default_dir, "specifications", "default")
|
372
|
-
mkdir_p target_specs_dir, :mode =>
|
372
|
+
mkdir_p target_specs_dir, :mode => 0o755
|
373
373
|
target_specs_dir
|
374
374
|
end
|
375
375
|
|
@@ -393,7 +393,7 @@ By default, this RubyGems will install gem as:
|
|
393
393
|
end
|
394
394
|
|
395
395
|
bundler_bin_dir = bundler_spec.bin_dir
|
396
|
-
mkdir_p bundler_bin_dir, :mode =>
|
396
|
+
mkdir_p bundler_bin_dir, :mode => 0o755
|
397
397
|
bundler_spec.executables.each do |e|
|
398
398
|
cp File.join("bundler", bundler_spec.bindir, e), File.join(bundler_bin_dir, e)
|
399
399
|
end
|
@@ -430,8 +430,8 @@ By default, this RubyGems will install gem as:
|
|
430
430
|
lib_dir, bin_dir = generate_default_dirs
|
431
431
|
end
|
432
432
|
|
433
|
-
mkdir_p lib_dir, :mode =>
|
434
|
-
mkdir_p bin_dir, :mode =>
|
433
|
+
mkdir_p lib_dir, :mode => 0o755
|
434
|
+
mkdir_p bin_dir, :mode => 0o755
|
435
435
|
|
436
436
|
return lib_dir, bin_dir
|
437
437
|
end
|
@@ -639,10 +639,10 @@ abort "#{deprecation_message}"
|
|
639
639
|
dest_file = File.join dest_dir, file
|
640
640
|
dest_dir = File.dirname dest_file
|
641
641
|
unless File.directory? dest_dir
|
642
|
-
mkdir_p dest_dir, :mode =>
|
642
|
+
mkdir_p dest_dir, :mode => 0o755
|
643
643
|
end
|
644
644
|
|
645
|
-
install file, dest_file, :mode => options[:data_mode] ||
|
645
|
+
install file, dest_file, :mode => options[:data_mode] || 0o644
|
646
646
|
end
|
647
647
|
|
648
648
|
def remove_file_list(files, dir)
|
@@ -107,7 +107,11 @@ Specific fields in the specification can be extracted in YAML format:
|
|
107
107
|
|
108
108
|
if local?
|
109
109
|
if File.exist? gem
|
110
|
-
|
110
|
+
begin
|
111
|
+
specs << Gem::Package.new(gem).spec
|
112
|
+
rescue StandardError
|
113
|
+
nil
|
114
|
+
end
|
111
115
|
end
|
112
116
|
|
113
117
|
if specs.empty?
|
@@ -128,10 +128,10 @@ command to remove old versions.
|
|
128
128
|
if updated.empty?
|
129
129
|
say "Nothing to update"
|
130
130
|
else
|
131
|
-
say "Gems updated: #{updated_names.join(
|
131
|
+
say "Gems updated: #{updated_names.join(" ")}"
|
132
132
|
end
|
133
|
-
say "Gems already up-to-date: #{up_to_date_names.join(
|
134
|
-
say "Gems not currently installed: #{not_installed_names.join(
|
133
|
+
say "Gems already up-to-date: #{up_to_date_names.join(" ")}" unless up_to_date_names.empty?
|
134
|
+
say "Gems not currently installed: #{not_installed_names.join(" ")}" unless not_installed_names.empty?
|
135
135
|
end
|
136
136
|
|
137
137
|
def fetch_remote_gems(spec) # :nodoc:
|