rubygems-update 3.3.5 → 3.3.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +34 -0
- data/CONTRIBUTING.md +9 -6
- data/Manifest.txt +0 -1
- data/bundler/CHANGELOG.md +38 -0
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/cli/config.rb +10 -1
- data/bundler/lib/bundler/cli/doctor.rb +9 -1
- data/bundler/lib/bundler/cli/gem.rb +11 -1
- data/bundler/lib/bundler/cli/info.rb +10 -1
- data/bundler/lib/bundler/cli/install.rb +6 -25
- data/bundler/lib/bundler/cli/platform.rb +1 -1
- data/bundler/lib/bundler/definition.rb +4 -2
- data/bundler/lib/bundler/env.rb +1 -1
- data/bundler/lib/bundler/fetcher.rb +5 -5
- 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 +2 -2
- data/bundler/lib/bundler/man/bundle-config.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
- data/bundler/lib/bundler/man/bundle-exec.1 +1 -1
- data/bundler/lib/bundler/man/bundle-gem.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-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-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/remote_specification.rb +7 -0
- data/bundler/lib/bundler/resolver.rb +5 -4
- data/bundler/lib/bundler/rubygems_ext.rb +13 -10
- data/bundler/lib/bundler/rubygems_integration.rb +2 -14
- data/bundler/lib/bundler/settings.rb +1 -1
- data/bundler/lib/bundler/shared_helpers.rb +1 -1
- data/bundler/lib/bundler/source_map.rb +15 -2
- data/bundler/lib/bundler/templates/newgem/standard.yml.tt +1 -0
- data/bundler/lib/bundler/templates/newgem/test/minitest/test_newgem.rb.tt +1 -1
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/lib/bundler.rb +1 -1
- data/lib/rubygems/basic_specification.rb +8 -8
- data/lib/rubygems/bundler_version_finder.rb +3 -3
- data/lib/rubygems/command.rb +4 -4
- data/lib/rubygems/commands/cleanup_command.rb +6 -6
- data/lib/rubygems/commands/dependency_command.rb +20 -30
- data/lib/rubygems/commands/list_command.rb +1 -1
- data/lib/rubygems/commands/pristine_command.rb +12 -12
- data/lib/rubygems/commands/push_command.rb +8 -8
- data/lib/rubygems/commands/query_command.rb +1 -1
- data/lib/rubygems/commands/rdoc_command.rb +6 -6
- data/lib/rubygems/commands/search_command.rb +1 -1
- data/lib/rubygems/commands/setup_command.rb +8 -8
- data/lib/rubygems/commands/specification_command.rb +4 -4
- data/lib/rubygems/commands/update_command.rb +8 -6
- data/lib/rubygems/config_file.rb +4 -4
- data/lib/rubygems/doctor.rb +5 -5
- data/lib/rubygems/gem_runner.rb +5 -5
- data/lib/rubygems/install_update_options.rb +4 -4
- data/lib/rubygems/installer.rb +51 -12
- data/lib/rubygems/package.rb +10 -10
- data/lib/rubygems/platform.rb +42 -42
- data/lib/rubygems/query_utils.rb +16 -18
- data/lib/rubygems/remote_fetcher.rb +4 -4
- data/lib/rubygems/request_set/lockfile.rb +4 -4
- data/lib/rubygems/source.rb +6 -6
- data/lib/rubygems/source_list.rb +7 -7
- data/lib/rubygems/spec_fetcher.rb +25 -25
- data/lib/rubygems/specification.rb +47 -47
- data/lib/rubygems/specification_policy.rb +16 -16
- data/lib/rubygems/stub_specification.rb +16 -16
- data/lib/rubygems/uninstaller.rb +7 -7
- data/lib/rubygems/user_interaction.rb +12 -12
- data/lib/rubygems/version.rb +12 -9
- data/lib/rubygems.rb +7 -7
- data/rubygems-update.gemspec +1 -1
- data/test/rubygems/helper.rb +4 -4
- data/test/rubygems/test_gem.rb +2 -0
- data/test/rubygems/test_gem_command_manager.rb +1 -1
- data/test/rubygems/test_gem_commands_setup_command.rb +2 -0
- data/test/rubygems/test_gem_commands_update_command.rb +34 -0
- data/test/rubygems/test_gem_installer.rb +170 -58
- data/test/rubygems/test_gem_stream_ui.rb +1 -1
- data/test/rubygems/test_gem_version.rb +4 -0
- data/test/rubygems/test_rubygems.rb +5 -1
- data/test/rubygems/utilities.rb +4 -4
- metadata +3 -4
- data/bundler/lib/bundler/psyched_yaml.rb +0 -10
@@ -27,6 +27,13 @@ module Bundler
|
|
27
27
|
@platform = _remote_specification.platform
|
28
28
|
end
|
29
29
|
|
30
|
+
# A fallback is included because the original version of the specification
|
31
|
+
# API didn't include that field, so some marshalled specs in the index have it
|
32
|
+
# set to +nil+.
|
33
|
+
def required_rubygems_version
|
34
|
+
@required_rubygems_version ||= _remote_specification.required_rubygems_version || Gem::Requirement.default
|
35
|
+
end
|
36
|
+
|
30
37
|
def full_name
|
31
38
|
if platform == Gem::Platform::RUBY || platform.nil?
|
32
39
|
"#{@name}-#{@version}"
|
@@ -249,10 +249,11 @@ module Bundler
|
|
249
249
|
end
|
250
250
|
|
251
251
|
def verify_gemfile_dependencies_are_found!(requirements)
|
252
|
-
requirements.
|
252
|
+
requirements.map! do |requirement|
|
253
253
|
name = requirement.name
|
254
|
-
next if name == "bundler"
|
255
|
-
next unless search_for(requirement).empty?
|
254
|
+
next requirement if name == "bundler"
|
255
|
+
next requirement unless search_for(requirement).empty?
|
256
|
+
next unless requirement.current_platform?
|
256
257
|
|
257
258
|
if (base = @base[name]) && !base.empty?
|
258
259
|
version = base.first.version
|
@@ -266,7 +267,7 @@ module Bundler
|
|
266
267
|
message = gem_not_found_message(name, requirement, source_for(name))
|
267
268
|
end
|
268
269
|
raise GemNotFound, message
|
269
|
-
end
|
270
|
+
end.compact!
|
270
271
|
end
|
271
272
|
|
272
273
|
def gem_not_found_message(name, requirement, source, extra_message = "")
|
@@ -4,14 +4,12 @@ require "pathname"
|
|
4
4
|
|
5
5
|
require "rubygems/specification"
|
6
6
|
|
7
|
-
# Possible use in Gem::Specification#source below and require
|
8
|
-
# shouldn't be deferred.
|
9
|
-
require "rubygems/source"
|
10
|
-
|
11
7
|
require_relative "match_platform"
|
12
8
|
|
13
9
|
module Gem
|
14
10
|
class Specification
|
11
|
+
include ::Bundler::MatchPlatform
|
12
|
+
|
15
13
|
attr_accessor :remote, :location, :relative_loaded_from
|
16
14
|
|
17
15
|
remove_method :source
|
@@ -81,6 +79,17 @@ module Gem
|
|
81
79
|
gemfile
|
82
80
|
end
|
83
81
|
|
82
|
+
# Backfill missing YAML require when not defined. Fixed since 3.1.0.pre1.
|
83
|
+
module YamlBackfiller
|
84
|
+
def to_yaml(opts = {})
|
85
|
+
Gem.load_yaml unless defined?(::YAML)
|
86
|
+
|
87
|
+
super(opts)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
prepend YamlBackfiller
|
92
|
+
|
84
93
|
def nondevelopment_dependencies
|
85
94
|
dependencies - development_dependencies
|
86
95
|
end
|
@@ -228,9 +237,3 @@ module Gem
|
|
228
237
|
end
|
229
238
|
end
|
230
239
|
end
|
231
|
-
|
232
|
-
module Gem
|
233
|
-
class Specification
|
234
|
-
include ::Bundler::MatchPlatform
|
235
|
-
end
|
236
|
-
end
|
@@ -104,18 +104,6 @@ module Bundler
|
|
104
104
|
obj.to_s
|
105
105
|
end
|
106
106
|
|
107
|
-
def configuration
|
108
|
-
require_relative "psyched_yaml"
|
109
|
-
Gem.configuration
|
110
|
-
rescue Gem::SystemExitException, LoadError => e
|
111
|
-
Bundler.ui.error "#{e.class}: #{e.message}"
|
112
|
-
Bundler.ui.trace e
|
113
|
-
raise
|
114
|
-
rescue ::Psych::SyntaxError => e
|
115
|
-
raise YamlSyntaxError.new(e, "Your RubyGems configuration, which is " \
|
116
|
-
"usually located in ~/.gemrc, contains invalid YAML syntax.")
|
117
|
-
end
|
118
|
-
|
119
107
|
def ruby_engine
|
120
108
|
Gem.ruby_engine
|
121
109
|
end
|
@@ -217,7 +205,7 @@ module Bundler
|
|
217
205
|
|
218
206
|
def spec_from_gem(path, policy = nil)
|
219
207
|
require "rubygems/security"
|
220
|
-
|
208
|
+
require "psych"
|
221
209
|
gem_from_path(path, security_policies[policy]).spec
|
222
210
|
rescue Exception, Gem::Exception, Gem::Security::Exception => e # rubocop:disable Lint/RescueException
|
223
211
|
if e.is_a?(Gem::Security::Exception) ||
|
@@ -522,7 +510,7 @@ module Bundler
|
|
522
510
|
|
523
511
|
def gem_remote_fetcher
|
524
512
|
require "rubygems/remote_fetcher"
|
525
|
-
proxy = configuration[:http_proxy]
|
513
|
+
proxy = Gem.configuration[:http_proxy]
|
526
514
|
Gem::RemoteFetcher.new(proxy)
|
527
515
|
end
|
528
516
|
|
@@ -141,7 +141,7 @@ module Bundler
|
|
141
141
|
end
|
142
142
|
return unless multiple_gemfiles
|
143
143
|
message = "Multiple gemfiles (gems.rb and Gemfile) detected. " \
|
144
|
-
"Make sure you remove Gemfile and Gemfile.lock since bundler is ignoring them in favor of gems.rb and gems.
|
144
|
+
"Make sure you remove Gemfile and Gemfile.lock since bundler is ignoring them in favor of gems.rb and gems.locked."
|
145
145
|
Bundler.ui.warn message
|
146
146
|
end
|
147
147
|
|
@@ -2,11 +2,12 @@
|
|
2
2
|
|
3
3
|
module Bundler
|
4
4
|
class SourceMap
|
5
|
-
attr_reader :sources, :dependencies
|
5
|
+
attr_reader :sources, :dependencies, :locked_specs
|
6
6
|
|
7
|
-
def initialize(sources, dependencies)
|
7
|
+
def initialize(sources, dependencies, locked_specs)
|
8
8
|
@sources = sources
|
9
9
|
@dependencies = dependencies
|
10
|
+
@locked_specs = locked_specs
|
10
11
|
end
|
11
12
|
|
12
13
|
def pinned_spec_names(skip = nil)
|
@@ -54,5 +55,17 @@ module Bundler
|
|
54
55
|
requirements
|
55
56
|
end
|
56
57
|
end
|
58
|
+
|
59
|
+
def locked_requirements
|
60
|
+
@locked_requirements ||= begin
|
61
|
+
requirements = {}
|
62
|
+
locked_specs.each do |locked_spec|
|
63
|
+
source = locked_spec.source
|
64
|
+
source.add_dependency_names(locked_spec.name)
|
65
|
+
requirements[locked_spec.name] = source
|
66
|
+
end
|
67
|
+
requirements
|
68
|
+
end
|
69
|
+
end
|
57
70
|
end
|
58
71
|
end
|
data/bundler/lib/bundler.rb
CHANGED
@@ -654,7 +654,7 @@ EOF
|
|
654
654
|
private
|
655
655
|
|
656
656
|
def eval_yaml_gemspec(path, contents)
|
657
|
-
|
657
|
+
Kernel.require "psych"
|
658
658
|
|
659
659
|
Gem::Specification.from_yaml(contents)
|
660
660
|
rescue ::Psych::SyntaxError, ArgumentError, Gem::EndOfYAMLException, Gem::Exception
|
@@ -289,14 +289,14 @@ class Gem::BasicSpecification
|
|
289
289
|
|
290
290
|
def lib_dirs_glob
|
291
291
|
dirs = if self.raw_require_paths
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
292
|
+
if self.raw_require_paths.size > 1
|
293
|
+
"{#{self.raw_require_paths.join(',')}}"
|
294
|
+
else
|
295
|
+
self.raw_require_paths.first
|
296
|
+
end
|
297
|
+
else
|
298
|
+
"lib" # default value for require_paths for bundler/inline
|
299
|
+
end
|
300
300
|
|
301
301
|
"#{self.full_gem_path}/#{dirs}".dup.tap(&Gem::UNTAINT)
|
302
302
|
end
|
@@ -65,9 +65,9 @@ module Gem::BundlerVersionFinder
|
|
65
65
|
return unless gemfile
|
66
66
|
|
67
67
|
lockfile = case gemfile
|
68
|
-
|
69
|
-
|
70
|
-
|
68
|
+
when "gems.rb" then "gems.locked"
|
69
|
+
else "#{gemfile}.lock"
|
70
|
+
end.dup.tap(&Gem::UNTAINT)
|
71
71
|
|
72
72
|
return unless File.file?(lockfile)
|
73
73
|
|
data/lib/rubygems/command.rb
CHANGED
@@ -398,10 +398,10 @@ class Gem::Command
|
|
398
398
|
version_to_expire = deprecation["rg_version_to_expire"]
|
399
399
|
|
400
400
|
deprecate_option_msg = if version_to_expire
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
401
|
+
"The \"#{option}\" option has been deprecated and will be removed in Rubygems #{version_to_expire}."
|
402
|
+
else
|
403
|
+
"The \"#{option}\" option has been deprecated and will be removed in future versions of Rubygems."
|
404
|
+
end
|
405
405
|
|
406
406
|
extra_msg = deprecation["extra_msg"]
|
407
407
|
|
@@ -117,12 +117,12 @@ If no gems are named all gems in GEM_HOME are cleaned.
|
|
117
117
|
|
118
118
|
def get_candidate_gems
|
119
119
|
@candidate_gems = unless options[:args].empty?
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
120
|
+
options[:args].map do |gem_name|
|
121
|
+
Gem::Specification.find_all_by_name gem_name
|
122
|
+
end.flatten
|
123
|
+
else
|
124
|
+
Gem::Specification.to_a
|
125
|
+
end
|
126
126
|
end
|
127
127
|
|
128
128
|
def get_gems_to_cleanup
|
@@ -53,41 +53,41 @@ use with other commands.
|
|
53
53
|
"#{program_name} REGEXP"
|
54
54
|
end
|
55
55
|
|
56
|
-
def fetch_remote_specs(
|
56
|
+
def fetch_remote_specs(name, requirement, prerelease) # :nodoc:
|
57
57
|
fetcher = Gem::SpecFetcher.fetcher
|
58
58
|
|
59
|
-
|
59
|
+
specs_type = prerelease ? :complete : :released
|
60
60
|
|
61
|
-
ss
|
61
|
+
ss = if name.nil?
|
62
|
+
fetcher.detect(specs_type) { true }
|
63
|
+
else
|
64
|
+
fetcher.detect(specs_type) do |name_tuple|
|
65
|
+
name === name_tuple.name && requirement.satisfied_by?(name_tuple.version)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
ss.map {|tuple, source| source.fetch_spec(tuple) }
|
62
70
|
end
|
63
71
|
|
64
|
-
def fetch_specs(name_pattern,
|
72
|
+
def fetch_specs(name_pattern, requirement, prerelease) # :nodoc:
|
65
73
|
specs = []
|
66
74
|
|
67
75
|
if local?
|
68
76
|
specs.concat Gem::Specification.stubs.find_all {|spec|
|
69
|
-
name_pattern =~ spec.name
|
70
|
-
|
77
|
+
name_matches = name_pattern ? name_pattern =~ spec.name : true
|
78
|
+
version_matches = requirement.satisfied_by?(spec.version)
|
79
|
+
|
80
|
+
name_matches and version_matches
|
71
81
|
}.map(&:to_spec)
|
72
82
|
end
|
73
83
|
|
74
|
-
specs.concat fetch_remote_specs
|
84
|
+
specs.concat fetch_remote_specs name_pattern, requirement, prerelease if remote?
|
75
85
|
|
76
86
|
ensure_specs specs
|
77
87
|
|
78
88
|
specs.uniq.sort
|
79
89
|
end
|
80
90
|
|
81
|
-
def gem_dependency(pattern, version, prerelease) # :nodoc:
|
82
|
-
dependency = Gem::Deprecate.skip_during do
|
83
|
-
Gem::Dependency.new pattern, version
|
84
|
-
end
|
85
|
-
|
86
|
-
dependency.prerelease = prerelease
|
87
|
-
|
88
|
-
dependency
|
89
|
-
end
|
90
|
-
|
91
91
|
def display_pipe(specs) # :nodoc:
|
92
92
|
specs.each do |spec|
|
93
93
|
unless spec.dependencies.empty?
|
@@ -119,11 +119,9 @@ use with other commands.
|
|
119
119
|
ensure_local_only_reverse_dependencies
|
120
120
|
|
121
121
|
pattern = name_pattern options[:args]
|
122
|
+
requirement = Gem::Requirement.new options[:version]
|
122
123
|
|
123
|
-
|
124
|
-
gem_dependency pattern, options[:version], options[:prerelease]
|
125
|
-
|
126
|
-
specs = fetch_specs pattern, dependency
|
124
|
+
specs = fetch_specs pattern, requirement, options[:prerelease]
|
127
125
|
|
128
126
|
reverse = reverse_dependencies specs
|
129
127
|
|
@@ -162,14 +160,6 @@ use with other commands.
|
|
162
160
|
response
|
163
161
|
end
|
164
162
|
|
165
|
-
def remote_specs(dependency) # :nodoc:
|
166
|
-
fetcher = Gem::SpecFetcher.fetcher
|
167
|
-
|
168
|
-
ss, _ = fetcher.spec_for_dependency dependency
|
169
|
-
|
170
|
-
ss.map {|s,o| s }
|
171
|
-
end
|
172
|
-
|
173
163
|
def reverse_dependencies(specs) # :nodoc:
|
174
164
|
reverse = Hash.new {|h, k| h[k] = [] }
|
175
165
|
|
@@ -205,7 +195,7 @@ use with other commands.
|
|
205
195
|
private
|
206
196
|
|
207
197
|
def name_pattern(args)
|
208
|
-
|
198
|
+
return if args.empty?
|
209
199
|
|
210
200
|
if args.length == 1 and args.first =~ /\A(.*)(i)?\z/m
|
211
201
|
flags = $2 ? Regexp::IGNORECASE : nil
|
@@ -10,7 +10,7 @@ class Gem::Commands::ListCommand < Gem::Command
|
|
10
10
|
|
11
11
|
def initialize
|
12
12
|
super 'list', 'Display local gems whose name matches REGEXP',
|
13
|
-
:
|
13
|
+
:domain => :local, :details => false, :versions => true,
|
14
14
|
:installed => nil, :version => Gem::Requirement.default
|
15
15
|
|
16
16
|
add_query_options
|
@@ -98,20 +98,20 @@ extensions will be restored.
|
|
98
98
|
|
99
99
|
def execute
|
100
100
|
specs = if options[:all]
|
101
|
-
|
101
|
+
Gem::Specification.map
|
102
102
|
|
103
|
-
|
104
|
-
|
105
|
-
|
103
|
+
# `--extensions` must be explicitly given to pristine only gems
|
104
|
+
# with extensions.
|
105
|
+
elsif options[:extensions_set] and
|
106
106
|
options[:extensions] and options[:args].empty?
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
107
|
+
Gem::Specification.select do |spec|
|
108
|
+
spec.extensions and not spec.extensions.empty?
|
109
|
+
end
|
110
|
+
else
|
111
|
+
get_all_gem_names.sort.map do |gem_name|
|
112
|
+
Gem::Specification.find_all_by_name(gem_name, options[:version]).reverse
|
113
|
+
end.flatten
|
114
|
+
end
|
115
115
|
|
116
116
|
specs = specs.select{|spec| RUBY_ENGINE == spec.platform || Gem::Platform.local === spec.platform || spec.platform == Gem::Platform::RUBY }
|
117
117
|
|
@@ -52,14 +52,14 @@ The push command will use ~/.gem/credentials to authenticate to a server, but yo
|
|
52
52
|
default_gem_server, push_host = get_hosts_for(gem_name)
|
53
53
|
|
54
54
|
@host = if @user_defined_host
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
55
|
+
options[:host]
|
56
|
+
elsif default_gem_server
|
57
|
+
default_gem_server
|
58
|
+
elsif push_host
|
59
|
+
push_host
|
60
|
+
else
|
61
|
+
options[:host]
|
62
|
+
end
|
63
63
|
|
64
64
|
sign_in @host, scope: get_push_scope
|
65
65
|
|
@@ -20,7 +20,7 @@ class Gem::Commands::QueryCommand < Gem::Command
|
|
20
20
|
def initialize(name = 'query',
|
21
21
|
summary = 'Query gem information in local or remote repositories')
|
22
22
|
super name, summary,
|
23
|
-
:
|
23
|
+
:domain => :local, :details => false, :versions => true,
|
24
24
|
:installed => nil, :version => Gem::Requirement.default
|
25
25
|
|
26
26
|
add_option('-n', '--name-matches REGEXP',
|
@@ -61,12 +61,12 @@ Use --overwrite to force rebuilding of documentation.
|
|
61
61
|
|
62
62
|
def execute
|
63
63
|
specs = if options[:all]
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
64
|
+
Gem::Specification.to_a
|
65
|
+
else
|
66
|
+
get_all_gem_names.map do |name|
|
67
|
+
Gem::Specification.find_by_name name, options[:version]
|
68
|
+
end.flatten.uniq
|
69
|
+
end
|
70
70
|
|
71
71
|
if specs.empty?
|
72
72
|
alert_error 'No matching gems found'
|
@@ -7,7 +7,7 @@ class Gem::Commands::SearchCommand < Gem::Command
|
|
7
7
|
|
8
8
|
def initialize
|
9
9
|
super 'search', 'Display remote gems whose name matches REGEXP',
|
10
|
-
:
|
10
|
+
:domain => :remote, :details => false, :versions => true,
|
11
11
|
:installed => nil, :version => Gem::Requirement.default
|
12
12
|
|
13
13
|
add_query_options
|
@@ -54,10 +54,10 @@ class Gem::Commands::SetupCommand < Gem::Command
|
|
54
54
|
'List the documentation types you wish to',
|
55
55
|
'generate. For example: rdoc,ri' do |value, options|
|
56
56
|
options[:document] = case value
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
57
|
+
when nil then %w[rdoc ri]
|
58
|
+
when false then []
|
59
|
+
else value
|
60
|
+
end
|
61
61
|
end
|
62
62
|
|
63
63
|
add_option '--[no-]rdoc',
|
@@ -666,10 +666,10 @@ abort "#{deprecation_message}"
|
|
666
666
|
|
667
667
|
def target_bin_path(bin_dir, bin_file)
|
668
668
|
bin_file_formatted = if options[:format_executable]
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
|
669
|
+
Gem.default_exec_format % bin_file
|
670
|
+
else
|
671
|
+
bin_file
|
672
|
+
end
|
673
673
|
File.join bin_dir, bin_file_formatted
|
674
674
|
end
|
675
675
|
|
@@ -140,10 +140,10 @@ Specific fields in the specification can be extracted in YAML format:
|
|
140
140
|
s = s.send field if field
|
141
141
|
|
142
142
|
say case options[:format]
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
143
|
+
when :ruby then s.to_ruby
|
144
|
+
when :marshal then Marshal.dump s
|
145
|
+
else s.to_yaml
|
146
|
+
end
|
147
147
|
|
148
148
|
say "\n"
|
149
149
|
end
|
@@ -233,10 +233,10 @@ command to remove old versions.
|
|
233
233
|
up_ver = gems_to_update.first.version
|
234
234
|
|
235
235
|
target = if update_latest
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
236
|
+
up_ver
|
237
|
+
else
|
238
|
+
version
|
239
|
+
end
|
240
240
|
|
241
241
|
return target, requirement
|
242
242
|
end
|
@@ -287,7 +287,7 @@ command to remove old versions.
|
|
287
287
|
check_oldest_rubygems version
|
288
288
|
|
289
289
|
installed_gems = Gem::Specification.find_all_by_name 'rubygems-update', requirement
|
290
|
-
installed_gems = update_gem('rubygems-update', version) if installed_gems.empty?
|
290
|
+
installed_gems = update_gem('rubygems-update', version) if installed_gems.empty? || installed_gems.first.version != version
|
291
291
|
return if installed_gems.empty?
|
292
292
|
|
293
293
|
version = installed_gems.first.version
|
@@ -336,7 +336,9 @@ command to remove old versions.
|
|
336
336
|
#
|
337
337
|
def oldest_supported_version
|
338
338
|
@oldest_supported_version ||=
|
339
|
-
if Gem.ruby_version > Gem::Version.new("3.
|
339
|
+
if Gem.ruby_version > Gem::Version.new("3.1.a")
|
340
|
+
Gem::Version.new("3.3.3")
|
341
|
+
elsif Gem.ruby_version > Gem::Version.new("3.0.a")
|
340
342
|
Gem::Version.new("3.2.3")
|
341
343
|
elsif Gem.ruby_version > Gem::Version.new("2.7.a")
|
342
344
|
Gem::Version.new("3.1.2")
|
data/lib/rubygems/config_file.rb
CHANGED
@@ -281,10 +281,10 @@ if you believe they were disclosed to a third party.
|
|
281
281
|
check_credentials_permissions
|
282
282
|
|
283
283
|
@api_keys = if File.exist? credentials_path
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
284
|
+
load_file(credentials_path)
|
285
|
+
else
|
286
|
+
@hash
|
287
|
+
end
|
288
288
|
|
289
289
|
if @api_keys.key? :rubygems_api_key
|
290
290
|
@rubygems_api_key = @api_keys[:rubygems_api_key]
|
data/lib/rubygems/doctor.rb
CHANGED
@@ -117,11 +117,11 @@ class Gem::Doctor
|
|
117
117
|
type = File.directory?(child) ? 'directory' : 'file'
|
118
118
|
|
119
119
|
action = if @dry_run
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
120
|
+
'Extra'
|
121
|
+
else
|
122
|
+
FileUtils.rm_r(child)
|
123
|
+
'Removed'
|
124
|
+
end
|
125
125
|
|
126
126
|
say "#{action} #{type} #{sub_directory}/#{File.basename(child)}"
|
127
127
|
end
|
data/lib/rubygems/gem_runner.rb
CHANGED
@@ -42,11 +42,11 @@ class Gem::GemRunner
|
|
42
42
|
cmd.command_names.each do |command_name|
|
43
43
|
config_args = Gem.configuration[command_name]
|
44
44
|
config_args = case config_args
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
45
|
+
when String
|
46
|
+
config_args.split ' '
|
47
|
+
else
|
48
|
+
Array(config_args)
|
49
|
+
end
|
50
50
|
Gem::Command.add_specific_extra_args command_name, config_args
|
51
51
|
end
|
52
52
|
|
@@ -35,10 +35,10 @@ module Gem::InstallUpdateOptions
|
|
35
35
|
'List the documentation types you wish to',
|
36
36
|
'generate. For example: rdoc,ri') do |value, options|
|
37
37
|
options[:document] = case value
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
38
|
+
when nil then %w[ri]
|
39
|
+
when false then []
|
40
|
+
else value
|
41
|
+
end
|
42
42
|
end
|
43
43
|
|
44
44
|
add_option(:"Install/Update", '--build-root DIR',
|