rubygems-update 2.6.8 → 2.6.9
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rubygems-update might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.travis.yml +9 -6
- data/CODE_OF_CONDUCT.md +36 -33
- data/History.txt +16 -0
- data/Manifest.txt +5 -3
- data/Rakefile +5 -0
- data/bundler/CHANGELOG.md +72 -0
- data/bundler/DEVELOPMENT.md +2 -2
- data/bundler/README.md +5 -0
- data/bundler/lib/bundler.rb +1 -1
- data/bundler/lib/bundler/cli.rb +42 -29
- data/bundler/lib/bundler/cli/common.rb +17 -0
- data/bundler/lib/bundler/cli/exec.rb +6 -0
- data/bundler/lib/bundler/cli/gem.rb +16 -3
- data/bundler/lib/bundler/cli/install.rb +7 -20
- data/bundler/lib/bundler/cli/lock.rb +1 -1
- data/bundler/lib/bundler/cli/open.rb +2 -1
- data/bundler/lib/bundler/cli/outdated.rb +91 -43
- data/bundler/lib/bundler/cli/update.rb +3 -10
- data/bundler/lib/bundler/compact_index_client.rb +7 -1
- data/bundler/lib/bundler/current_ruby.rb +1 -0
- data/bundler/lib/bundler/definition.rb +9 -5
- data/bundler/lib/bundler/dependency.rb +12 -0
- data/bundler/lib/bundler/env.rb +25 -20
- data/bundler/lib/bundler/errors.rb +21 -0
- data/bundler/lib/bundler/fetcher.rb +2 -2
- data/bundler/lib/bundler/fetcher/compact_index.rb +15 -3
- data/bundler/lib/bundler/friendly_errors.rb +23 -7
- data/bundler/lib/bundler/index.rb +9 -4
- data/bundler/lib/bundler/inline.rb +1 -1
- data/bundler/lib/bundler/installer.rb +1 -1
- data/bundler/lib/bundler/installer/gem_installer.rb +2 -2
- data/bundler/lib/bundler/installer/parallel_installer.rb +40 -9
- data/bundler/lib/bundler/lockfile_parser.rb +0 -1
- data/bundler/lib/bundler/match_platform.rb +12 -4
- data/bundler/lib/bundler/plugin/api.rb +2 -1
- data/bundler/lib/bundler/plugin/api/source.rb +1 -1
- data/bundler/lib/bundler/postit_trampoline.rb +3 -3
- data/bundler/lib/bundler/resolver.rb +6 -1
- data/bundler/lib/bundler/retry.rb +4 -1
- data/bundler/lib/bundler/rubygems_gem_installer.rb +18 -6
- data/bundler/lib/bundler/rubygems_integration.rb +16 -3
- data/bundler/lib/bundler/settings.rb +8 -3
- data/bundler/lib/bundler/shared_helpers.rb +15 -12
- data/bundler/lib/bundler/source.rb +4 -0
- data/bundler/lib/bundler/source/git/git_proxy.rb +2 -1
- data/bundler/lib/bundler/source/rubygems.rb +9 -0
- data/bundler/lib/bundler/spec_set.rb +4 -0
- data/bundler/lib/bundler/templates/newgem/gitignore.tt +5 -0
- data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +1 -1
- data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +10 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +10 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -2
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -2
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +62 -0
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +10 -3
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +12 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -2
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +2 -2
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +2 -0
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +27 -19
- data/bundler/lib/bundler/vendor/{net → net-http-persistent/lib/net}/http/faster.rb +1 -0
- data/bundler/lib/bundler/vendor/{net → net-http-persistent/lib/net}/http/persistent.rb +24 -23
- data/bundler/lib/bundler/vendor/{net → net-http-persistent/lib/net}/http/persistent/ssl_reuse.rb +2 -1
- data/bundler/lib/bundler/vendored_persistent.rb +9 -4
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/lib/bundler/worker.rb +27 -5
- data/bundler/man/bundle-config.ronn +28 -1
- data/bundler/man/bundle-install.ronn +1 -1
- data/bundler/man/bundle-lock.ronn +47 -0
- data/bundler/man/bundle-outdated.ronn +107 -0
- data/bundler/man/bundle-update.ronn +152 -3
- data/bundler/man/bundle.ronn +22 -4
- data/bundler/man/gemfile.5.ronn +16 -0
- data/lib/rubygems.rb +1 -1
- data/lib/rubygems/ext/ext_conf_builder.rb +5 -3
- data/lib/rubygems/ext/rake_builder.rb +1 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +3 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +9 -2
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +2 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +17 -17
- data/lib/rubygems/server.rb +11 -4
- data/lib/rubygems/stub_specification.rb +6 -1
- data/lib/rubygems/version.rb +6 -2
- data/test/rubygems/test_gem.rb +2 -0
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +23 -0
- data/test/rubygems/test_gem_ext_rake_builder.rb +34 -17
- data/test/rubygems/test_gem_server.rb +16 -0
- data/test/rubygems/test_gem_specification.rb +1 -1
- data/test/rubygems/test_gem_stub_specification.rb +61 -0
- data/test/rubygems/test_gem_version.rb +6 -0
- data/util/ci +5 -5
- metadata +31 -29
@@ -91,6 +91,12 @@ module Bundler
|
|
91
91
|
"#!/usr/bin/env jruby\n",
|
92
92
|
"#!#{Gem.ruby}\n",
|
93
93
|
]
|
94
|
+
|
95
|
+
if File.zero?(file)
|
96
|
+
Bundler.ui.warn "#{file} is empty"
|
97
|
+
return false
|
98
|
+
end
|
99
|
+
|
94
100
|
first_line = File.open(file, "rb") {|f| f.read(possibilities.map(&:size).max) }
|
95
101
|
possibilities.any? {|shebang| first_line.start_with?(shebang) }
|
96
102
|
end
|
@@ -202,10 +202,23 @@ module Bundler
|
|
202
202
|
if name =~ /^\d/
|
203
203
|
Bundler.ui.error "Invalid gem name #{name} Please give a name which does not start with numbers."
|
204
204
|
exit 1
|
205
|
-
elsif constant_array.inject(Object) {|c, s| (c.const_defined?(s) && c.const_get(s)) || break }
|
206
|
-
Bundler.ui.error "Invalid gem name #{name} constant #{constant_array.join("::")} is already in use. Please choose another gem name."
|
207
|
-
exit 1
|
208
205
|
end
|
206
|
+
|
207
|
+
constant_name = constant_array.join("::")
|
208
|
+
|
209
|
+
existing_constant = constant_array.inject(Object) do |c, s|
|
210
|
+
defined = begin
|
211
|
+
c.const_defined?(s)
|
212
|
+
rescue NameError
|
213
|
+
Bundler.ui.error "Invalid gem name #{name} -- `#{constant_name}` is an invalid constant name"
|
214
|
+
exit 1
|
215
|
+
end
|
216
|
+
(defined && c.const_get(s)) || break
|
217
|
+
end
|
218
|
+
|
219
|
+
return unless existing_constant
|
220
|
+
Bundler.ui.error "Invalid gem name #{name} constant #{constant_name} is already in use. Please choose another gem name."
|
221
|
+
exit 1
|
209
222
|
end
|
210
223
|
|
211
224
|
def open_editor(editor, file)
|
@@ -1,4 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
require "bundler/cli/common"
|
3
|
+
|
2
4
|
module Bundler
|
3
5
|
class CLI::Install
|
4
6
|
attr_reader :options
|
@@ -57,7 +59,7 @@ module Bundler
|
|
57
59
|
|
58
60
|
if options["binstubs"]
|
59
61
|
Bundler::SharedHelpers.major_deprecation \
|
60
|
-
"
|
62
|
+
"The --binstubs option will be removed in favor of `bundle binstubs`"
|
61
63
|
end
|
62
64
|
|
63
65
|
Plugin.gemfile_install(Bundler.default_gemfile) if Bundler.feature_flag.plugins?
|
@@ -69,7 +71,7 @@ module Bundler
|
|
69
71
|
Bundler.load.cache if Bundler.app_cache.exist? && !options["no-cache"] && !Bundler.settings[:frozen]
|
70
72
|
|
71
73
|
Bundler.ui.confirm "Bundle complete! #{dependencies_count_for(definition)}, #{gems_installed_for(definition)}."
|
72
|
-
|
74
|
+
Bundler::CLI::Common.output_without_groups_message
|
73
75
|
|
74
76
|
if Bundler.settings[:path]
|
75
77
|
absolute_path = File.expand_path(Bundler.settings[:path])
|
@@ -79,11 +81,7 @@ module Bundler
|
|
79
81
|
Bundler.ui.confirm "Use `bundle show [gemname]` to see where a bundled gem is installed."
|
80
82
|
end
|
81
83
|
|
82
|
-
|
83
|
-
installer.post_install_messages.to_a.each do |name, msg|
|
84
|
-
print_post_install_message(name, msg) unless Bundler.settings["ignore_messages.#{name}"]
|
85
|
-
end
|
86
|
-
end
|
84
|
+
Bundler::CLI::Common.output_post_install_messages installer.post_install_messages
|
87
85
|
|
88
86
|
warn_ambiguous_gems
|
89
87
|
|
@@ -132,12 +130,6 @@ module Bundler
|
|
132
130
|
end
|
133
131
|
end
|
134
132
|
|
135
|
-
def confirm_without_groups
|
136
|
-
return unless Bundler.settings.without.any?
|
137
|
-
require "bundler/cli/common"
|
138
|
-
Bundler.ui.confirm Bundler::CLI::Common.without_groups_message
|
139
|
-
end
|
140
|
-
|
141
133
|
def dependencies_count_for(definition)
|
142
134
|
count = definition.dependencies.count
|
143
135
|
"#{count} Gemfile #{count == 1 ? "dependency" : "dependencies"}"
|
@@ -148,11 +140,6 @@ module Bundler
|
|
148
140
|
"#{count} #{count == 1 ? "gem" : "gems"} now installed"
|
149
141
|
end
|
150
142
|
|
151
|
-
def print_post_install_message(name, msg)
|
152
|
-
Bundler.ui.confirm "Post-install message from #{name}:"
|
153
|
-
Bundler.ui.info msg
|
154
|
-
end
|
155
|
-
|
156
143
|
def check_for_group_conflicts
|
157
144
|
if options[:without] && options[:with]
|
158
145
|
conflicting_groups = options[:without] & options[:with]
|
@@ -167,8 +154,8 @@ module Bundler
|
|
167
154
|
def check_for_options_conflicts
|
168
155
|
if (options[:path] || options[:deployment]) && options[:system]
|
169
156
|
error_message = String.new
|
170
|
-
error_message << "You have specified both
|
171
|
-
error_message << "You have specified both --deployment as well as --system. Please choose.\n" if options[:deployment]
|
157
|
+
error_message << "You have specified both --path as well as --system. Please choose only one option.\n" if options[:path]
|
158
|
+
error_message << "You have specified both --deployment as well as --system. Please choose only one option.\n" if options[:deployment]
|
172
159
|
raise InvalidOption.new(error_message)
|
173
160
|
end
|
174
161
|
end
|
@@ -33,7 +33,7 @@ module Bundler
|
|
33
33
|
|
34
34
|
options["add-platform"].each do |platform_string|
|
35
35
|
platform = Gem::Platform.new(platform_string)
|
36
|
-
if platform.
|
36
|
+
if platform.to_s == "unknown"
|
37
37
|
Bundler.ui.warn "The platform `#{platform_string}` is unknown to RubyGems " \
|
38
38
|
"and adding it will likely lead to resolution errors"
|
39
39
|
end
|
@@ -13,7 +13,8 @@ module Bundler
|
|
13
13
|
def run
|
14
14
|
editor = [ENV["BUNDLER_EDITOR"], ENV["VISUAL"], ENV["EDITOR"]].find {|e| !e.nil? && !e.empty? }
|
15
15
|
return Bundler.ui.info("To open a bundled gem, set $EDITOR or $BUNDLER_EDITOR") unless editor
|
16
|
-
|
16
|
+
return unless spec = Bundler::CLI::Common.select_spec(name, :regex_match)
|
17
|
+
path = spec.full_gem_path
|
17
18
|
Dir.chdir(path) do
|
18
19
|
command = Shellwords.split(editor) + [path]
|
19
20
|
Bundler.with_clean_env do
|
@@ -22,7 +22,11 @@ module Bundler
|
|
22
22
|
Bundler.definition.validate_runtime!
|
23
23
|
current_specs = Bundler.ui.silence { Bundler.load.specs }
|
24
24
|
current_dependencies = {}
|
25
|
-
Bundler.ui.silence
|
25
|
+
Bundler.ui.silence do
|
26
|
+
Bundler.load.dependencies.each do |dep|
|
27
|
+
current_dependencies[dep.name] = dep
|
28
|
+
end
|
29
|
+
end
|
26
30
|
|
27
31
|
definition = if gems.empty? && sources.empty?
|
28
32
|
# We're doing a full update
|
@@ -31,11 +35,24 @@ module Bundler
|
|
31
35
|
Bundler.definition(:gems => gems, :sources => sources)
|
32
36
|
end
|
33
37
|
|
34
|
-
Bundler::CLI::Common.configure_gem_version_promoter(
|
35
|
-
|
36
|
-
|
38
|
+
Bundler::CLI::Common.configure_gem_version_promoter(
|
39
|
+
Bundler.definition,
|
40
|
+
options
|
41
|
+
)
|
42
|
+
|
43
|
+
# the patch level options imply strict is also true. It wouldn't make
|
44
|
+
# sense otherwise.
|
45
|
+
strict = options[:strict] ||
|
46
|
+
Bundler::CLI::Common.patch_level_options(options).any?
|
47
|
+
|
48
|
+
filter_options_patch = options.keys &
|
49
|
+
%w(filter-major filter-minor filter-patch)
|
50
|
+
|
51
|
+
definition_resolution = proc do
|
52
|
+
return definition.resolve_with_cache! if options[:local]
|
53
|
+
definition.resolve_remotely!
|
54
|
+
end
|
37
55
|
|
38
|
-
definition_resolution = proc { options[:local] ? definition.resolve_with_cache! : definition.resolve_remotely! }
|
39
56
|
if options[:parseable]
|
40
57
|
Bundler.ui.silence(&definition_resolution)
|
41
58
|
else
|
@@ -47,32 +64,24 @@ module Bundler
|
|
47
64
|
outdated_gems_list = []
|
48
65
|
|
49
66
|
# Loop through the current specs
|
50
|
-
gemfile_specs, dependency_specs = current_specs.partition
|
51
|
-
|
67
|
+
gemfile_specs, dependency_specs = current_specs.partition do |spec|
|
68
|
+
current_dependencies.key? spec.name
|
69
|
+
end
|
70
|
+
|
71
|
+
(gemfile_specs + dependency_specs).sort_by(&:name).each do |current_spec|
|
52
72
|
next if !gems.empty? && !gems.include?(current_spec.name)
|
53
73
|
|
54
74
|
dependency = current_dependencies[current_spec.name]
|
75
|
+
active_spec = retrieve_active_spec(strict, definition, current_spec)
|
55
76
|
|
56
|
-
if
|
57
|
-
|
58
|
-
else
|
59
|
-
active_specs = definition.index[current_spec.name].select {|spec| spec.platform == current_spec.platform }.sort_by(&:version)
|
60
|
-
if !current_spec.version.prerelease? && !options[:pre] && active_specs.size > 1
|
61
|
-
active_spec = active_specs.delete_if {|b| b.respond_to?(:version) && b.version.prerelease? }
|
62
|
-
end
|
63
|
-
active_spec = active_specs.last
|
64
|
-
end
|
65
|
-
|
66
|
-
if options["filter-major"] || options["filter-minor"] || options["filter-patch"]
|
77
|
+
next if active_spec.nil?
|
78
|
+
if filter_options_patch.any?
|
67
79
|
update_present = update_present_via_semver_portions(current_spec, active_spec, options)
|
68
|
-
|
80
|
+
next unless update_present
|
69
81
|
end
|
70
82
|
|
71
|
-
next if active_spec.nil?
|
72
|
-
|
73
83
|
gem_outdated = Gem::Version.new(active_spec.version) > Gem::Version.new(current_spec.version)
|
74
|
-
|
75
|
-
if gem_outdated || git_outdated
|
84
|
+
if gem_outdated || (current_spec.git_version != active_spec.git_version)
|
76
85
|
groups = nil
|
77
86
|
if dependency && !options[:parseable]
|
78
87
|
groups = dependency.groups.join(", ")
|
@@ -94,17 +103,21 @@ module Bundler
|
|
94
103
|
end
|
95
104
|
|
96
105
|
if outdated_gems_list.empty?
|
97
|
-
display_nothing_outdated_message
|
106
|
+
display_nothing_outdated_message(filter_options_patch)
|
98
107
|
else
|
99
108
|
unless options[:parseable]
|
100
109
|
if options[:pre]
|
101
|
-
Bundler.ui.info "Outdated gems included in the bundle (including
|
110
|
+
Bundler.ui.info "Outdated gems included in the bundle (including " \
|
111
|
+
"pre-releases):"
|
102
112
|
else
|
103
113
|
Bundler.ui.info "Outdated gems included in the bundle:"
|
104
114
|
end
|
105
115
|
end
|
106
116
|
|
107
|
-
options_include_groups = [:group, :groups].select
|
117
|
+
options_include_groups = [:group, :groups].select do |v|
|
118
|
+
options.keys.include?(v.to_s)
|
119
|
+
end
|
120
|
+
|
108
121
|
if options_include_groups.any?
|
109
122
|
ordered_groups = outdated_gems_by_groups.keys.compact.sort
|
110
123
|
[nil, ordered_groups].flatten.each do |groups|
|
@@ -126,12 +139,24 @@ module Bundler
|
|
126
139
|
end
|
127
140
|
|
128
141
|
gems.each do |gem|
|
129
|
-
print_gem(
|
142
|
+
print_gem(
|
143
|
+
gem[:current_spec],
|
144
|
+
gem[:active_spec],
|
145
|
+
gem[:dependency],
|
146
|
+
groups,
|
147
|
+
options_include_groups.any?
|
148
|
+
)
|
130
149
|
end
|
131
150
|
end
|
132
151
|
else
|
133
152
|
outdated_gems_list.each do |gem|
|
134
|
-
print_gem(
|
153
|
+
print_gem(
|
154
|
+
gem[:current_spec],
|
155
|
+
gem[:active_spec],
|
156
|
+
gem[:dependency],
|
157
|
+
gem[:groups],
|
158
|
+
options_include_groups.any?
|
159
|
+
)
|
135
160
|
end
|
136
161
|
end
|
137
162
|
|
@@ -141,11 +166,27 @@ module Bundler
|
|
141
166
|
|
142
167
|
private
|
143
168
|
|
144
|
-
def
|
169
|
+
def retrieve_active_spec(strict, definition, current_spec)
|
170
|
+
if strict
|
171
|
+
active_spec = definition.find_resolved_spec(current_spec)
|
172
|
+
else
|
173
|
+
active_specs = definition.find_indexed_specs(current_spec)
|
174
|
+
if !current_spec.version.prerelease? && !options[:pre] && active_specs.size > 1
|
175
|
+
active_specs.delete_if {|b| b.respond_to?(:version) && b.version.prerelease? }
|
176
|
+
end
|
177
|
+
active_spec = active_specs.last
|
178
|
+
end
|
179
|
+
|
180
|
+
active_spec
|
181
|
+
end
|
182
|
+
|
183
|
+
def display_nothing_outdated_message(filter_options_patch)
|
145
184
|
unless options[:parseable]
|
146
|
-
|
147
|
-
|
148
|
-
|
185
|
+
if filter_options_patch.any?
|
186
|
+
display = filter_options_patch.map do |o|
|
187
|
+
o.sub("filter-", "")
|
188
|
+
end.join(" or ")
|
189
|
+
|
149
190
|
Bundler.ui.info "No #{display} updates to display.\n"
|
150
191
|
else
|
151
192
|
Bundler.ui.info "Bundle up to date!\n"
|
@@ -156,25 +197,32 @@ module Bundler
|
|
156
197
|
def print_gem(current_spec, active_spec, dependency, groups, options_include_groups)
|
157
198
|
spec_version = "#{active_spec.version}#{active_spec.git_version}"
|
158
199
|
current_version = "#{current_spec.version}#{current_spec.git_version}"
|
159
|
-
dependency_version = %(, requested #{dependency.requirement}) if dependency && dependency.specific?
|
160
200
|
|
161
|
-
|
162
|
-
|
163
|
-
|
201
|
+
if dependency && dependency.specific?
|
202
|
+
dependency_version = %(, requested #{dependency.requirement})
|
203
|
+
end
|
204
|
+
|
205
|
+
spec_outdated_info = "#{active_spec.name} (newest #{spec_version}, " \
|
206
|
+
"installed #{current_version}#{dependency_version})"
|
207
|
+
|
208
|
+
output_message = if options[:parseable]
|
209
|
+
spec_outdated_info.to_s
|
164
210
|
elsif options_include_groups || !groups
|
165
|
-
|
211
|
+
" * #{spec_outdated_info}"
|
166
212
|
else
|
167
|
-
|
213
|
+
" * #{spec_outdated_info} in groups \"#{groups}\""
|
168
214
|
end
|
215
|
+
|
216
|
+
Bundler.ui.info output_message.rstrip
|
169
217
|
end
|
170
218
|
|
171
219
|
def check_for_deployment_mode
|
172
220
|
if Bundler.settings[:frozen]
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
221
|
+
raise ProductionError, "You are trying to check outdated gems in " \
|
222
|
+
"deployment mode. Run `bundle outdated` elsewhere.\n" \
|
223
|
+
"\nIf this is a development machine, remove the " \
|
224
|
+
"#{Bundler.default_gemfile} freeze" \
|
225
|
+
"\nby running `bundle install --no-deployment`."
|
178
226
|
end
|
179
227
|
end
|
180
228
|
|
@@ -52,7 +52,7 @@ module Bundler
|
|
52
52
|
Bundler.settings[:jobs] = opts["jobs"] if opts["jobs"]
|
53
53
|
|
54
54
|
Bundler.definition.validate_runtime!
|
55
|
-
Installer.install Bundler.root, Bundler.definition, opts
|
55
|
+
installer = Installer.install Bundler.root, Bundler.definition, opts
|
56
56
|
Bundler.load.cache if Bundler.app_cache.exist?
|
57
57
|
|
58
58
|
if Bundler.settings[:clean] && Bundler.settings[:path]
|
@@ -61,15 +61,8 @@ module Bundler
|
|
61
61
|
end
|
62
62
|
|
63
63
|
Bundler.ui.confirm "Bundle updated!"
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
private
|
68
|
-
|
69
|
-
def without_groups_messages
|
70
|
-
return unless Bundler.settings.without.any?
|
71
|
-
require "bundler/cli/common"
|
72
|
-
Bundler.ui.confirm Bundler::CLI::Common.without_groups_message
|
64
|
+
Bundler::CLI::Common.output_without_groups_message
|
65
|
+
Bundler::CLI::Common.output_post_install_messages installer.post_install_messages
|
73
66
|
end
|
74
67
|
end
|
75
68
|
end
|
@@ -28,6 +28,8 @@ module Bundler
|
|
28
28
|
@cache = Cache.new(@directory)
|
29
29
|
@endpoints = Set.new
|
30
30
|
@info_checksums_by_name = {}
|
31
|
+
@parsed_checksums = false
|
32
|
+
@mutex = Mutex.new
|
31
33
|
@in_parallel = lambda do |inputs, &blk|
|
32
34
|
inputs.map(&blk)
|
33
35
|
end
|
@@ -72,7 +74,7 @@ module Bundler
|
|
72
74
|
|
73
75
|
def update(local_path, remote_path)
|
74
76
|
Bundler::CompactIndexClient.debug { "update(#{local_path}, #{remote_path})" }
|
75
|
-
unless @endpoints.add?(remote_path)
|
77
|
+
unless synchronize { @endpoints.add?(remote_path) }
|
76
78
|
Bundler::CompactIndexClient.debug { "already fetched #{remote_path}" }
|
77
79
|
return
|
78
80
|
end
|
@@ -98,5 +100,9 @@ module Bundler
|
|
98
100
|
def url(path)
|
99
101
|
path
|
100
102
|
end
|
103
|
+
|
104
|
+
def synchronize
|
105
|
+
@mutex.synchronize { yield }
|
106
|
+
end
|
101
107
|
end
|
102
108
|
end
|
@@ -499,14 +499,10 @@ module Bundler
|
|
499
499
|
end
|
500
500
|
end
|
501
501
|
|
502
|
-
# TODO: refactor this so that `match_platform` can be called with two platforms
|
503
|
-
DummyPlatform = Struct.new(:platform)
|
504
|
-
class DummyPlatform; include MatchPlatform; end
|
505
502
|
def validate_platforms!
|
506
503
|
return if @platforms.any? do |bundle_platform|
|
507
|
-
bundle_platform = DummyPlatform.new(bundle_platform)
|
508
504
|
Bundler.rubygems.platforms.any? do |local_platform|
|
509
|
-
|
505
|
+
MatchPlatform.platforms_match?(bundle_platform, local_platform)
|
510
506
|
end
|
511
507
|
end
|
512
508
|
|
@@ -531,6 +527,14 @@ module Bundler
|
|
531
527
|
add_platform(generic(current_platform))
|
532
528
|
end
|
533
529
|
|
530
|
+
def find_resolved_spec(current_spec)
|
531
|
+
specs.find_by_name_and_platform(current_spec.name, current_spec.platform)
|
532
|
+
end
|
533
|
+
|
534
|
+
def find_indexed_specs(current_spec)
|
535
|
+
index[current_spec.name].select {|spec| spec.match_platform(current_spec.platform) }.sort_by(&:version)
|
536
|
+
end
|
537
|
+
|
534
538
|
attr_reader :sources
|
535
539
|
private :sources
|
536
540
|
|
@@ -17,6 +17,8 @@ module Bundler
|
|
17
17
|
:ruby_21 => Gem::Platform::RUBY,
|
18
18
|
:ruby_22 => Gem::Platform::RUBY,
|
19
19
|
:ruby_23 => Gem::Platform::RUBY,
|
20
|
+
:ruby_24 => Gem::Platform::RUBY,
|
21
|
+
:ruby_25 => Gem::Platform::RUBY,
|
20
22
|
:mri => Gem::Platform::RUBY,
|
21
23
|
:mri_18 => Gem::Platform::RUBY,
|
22
24
|
:mri_19 => Gem::Platform::RUBY,
|
@@ -24,6 +26,8 @@ module Bundler
|
|
24
26
|
:mri_21 => Gem::Platform::RUBY,
|
25
27
|
:mri_22 => Gem::Platform::RUBY,
|
26
28
|
:mri_23 => Gem::Platform::RUBY,
|
29
|
+
:mri_24 => Gem::Platform::RUBY,
|
30
|
+
:mri_25 => Gem::Platform::RUBY,
|
27
31
|
:rbx => Gem::Platform::RUBY,
|
28
32
|
:jruby => Gem::Platform::JAVA,
|
29
33
|
:jruby_18 => Gem::Platform::JAVA,
|
@@ -35,12 +39,16 @@ module Bundler
|
|
35
39
|
:mswin_21 => Gem::Platform::MSWIN,
|
36
40
|
:mswin_22 => Gem::Platform::MSWIN,
|
37
41
|
:mswin_23 => Gem::Platform::MSWIN,
|
42
|
+
:mswin_24 => Gem::Platform::MSWIN,
|
43
|
+
:mswin_25 => Gem::Platform::MSWIN,
|
38
44
|
:mswin64 => Gem::Platform::MSWIN64,
|
39
45
|
:mswin64_19 => Gem::Platform::MSWIN64,
|
40
46
|
:mswin64_20 => Gem::Platform::MSWIN64,
|
41
47
|
:mswin64_21 => Gem::Platform::MSWIN64,
|
42
48
|
:mswin64_22 => Gem::Platform::MSWIN64,
|
43
49
|
:mswin64_23 => Gem::Platform::MSWIN64,
|
50
|
+
:mswin64_24 => Gem::Platform::MSWIN64,
|
51
|
+
:mswin64_25 => Gem::Platform::MSWIN64,
|
44
52
|
:mingw => Gem::Platform::MINGW,
|
45
53
|
:mingw_18 => Gem::Platform::MINGW,
|
46
54
|
:mingw_19 => Gem::Platform::MINGW,
|
@@ -48,11 +56,15 @@ module Bundler
|
|
48
56
|
:mingw_21 => Gem::Platform::MINGW,
|
49
57
|
:mingw_22 => Gem::Platform::MINGW,
|
50
58
|
:mingw_23 => Gem::Platform::MINGW,
|
59
|
+
:mingw_24 => Gem::Platform::MINGW,
|
60
|
+
:mingw_25 => Gem::Platform::MINGW,
|
51
61
|
:x64_mingw => Gem::Platform::X64_MINGW,
|
52
62
|
:x64_mingw_20 => Gem::Platform::X64_MINGW,
|
53
63
|
:x64_mingw_21 => Gem::Platform::X64_MINGW,
|
54
64
|
:x64_mingw_22 => Gem::Platform::X64_MINGW,
|
55
65
|
:x64_mingw_23 => Gem::Platform::X64_MINGW,
|
66
|
+
:x64_mingw_24 => Gem::Platform::X64_MINGW,
|
67
|
+
:x64_mingw_25 => Gem::Platform::X64_MINGW,
|
56
68
|
}.freeze
|
57
69
|
|
58
70
|
REVERSE_PLATFORM_MAP = {}.tap do |reverse_platform_map|
|