bundler 1.17.0.pre.2 → 2.1.0.pre.2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of bundler might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +769 -570
- data/LICENSE.md +18 -19
- data/README.md +9 -8
- data/bundler.gemspec +12 -23
- data/exe/bundle +19 -3
- data/lib/bundler.rb +121 -68
- data/lib/bundler/build_metadata.rb +14 -7
- data/lib/bundler/capistrano.rb +4 -4
- data/lib/bundler/cli.rb +129 -121
- data/lib/bundler/cli/add.rb +27 -16
- data/lib/bundler/cli/common.rb +11 -12
- data/lib/bundler/cli/config.rb +161 -86
- data/lib/bundler/cli/console.rb +1 -1
- data/lib/bundler/cli/doctor.rb +4 -4
- data/lib/bundler/cli/exec.rb +4 -9
- data/lib/bundler/cli/gem.rb +5 -5
- data/lib/bundler/cli/info.rb +17 -5
- data/lib/bundler/cli/init.rb +1 -1
- data/lib/bundler/cli/install.rb +11 -10
- data/lib/bundler/cli/issue.rb +3 -3
- data/lib/bundler/cli/open.rb +10 -6
- data/lib/bundler/cli/outdated.rb +85 -81
- data/lib/bundler/cli/package.rb +8 -9
- data/lib/bundler/cli/plugin.rb +9 -2
- data/lib/bundler/cli/pristine.rb +1 -1
- data/lib/bundler/cli/show.rb +1 -1
- data/lib/bundler/cli/update.rb +31 -11
- data/lib/bundler/compact_index_client.rb +25 -9
- data/lib/bundler/compact_index_client/updater.rb +2 -6
- data/lib/bundler/current_ruby.rb +9 -7
- data/lib/bundler/definition.rb +35 -26
- data/lib/bundler/dependency.rb +16 -4
- data/lib/bundler/deployment.rb +1 -1
- data/lib/bundler/dsl.rb +15 -39
- data/lib/bundler/env.rb +8 -13
- data/lib/bundler/environment_preserver.rb +0 -1
- data/lib/bundler/feature_flag.rb +23 -32
- data/lib/bundler/fetcher.rb +14 -11
- data/lib/bundler/fetcher/compact_index.rb +26 -12
- data/lib/bundler/fetcher/dependency.rb +1 -1
- data/lib/bundler/fetcher/downloader.rb +4 -1
- data/lib/bundler/fetcher/index.rb +4 -2
- data/lib/bundler/friendly_errors.rb +4 -5
- data/lib/bundler/gem_helper.rb +39 -24
- data/lib/bundler/gem_helpers.rb +2 -4
- data/lib/bundler/gem_tasks.rb +1 -1
- data/lib/bundler/gem_version_promoter.rb +3 -3
- data/lib/bundler/graph.rb +2 -2
- data/lib/bundler/injector.rb +10 -8
- data/lib/bundler/inline.rb +19 -18
- data/lib/bundler/installer.rb +7 -14
- data/lib/bundler/installer/gem_installer.rb +5 -1
- data/lib/bundler/installer/parallel_installer.rb +4 -8
- data/lib/bundler/installer/standalone.rb +1 -2
- data/lib/bundler/lazy_specification.rb +2 -2
- data/lib/bundler/lockfile_parser.rb +13 -21
- data/lib/bundler/match_platform.rb +1 -1
- data/lib/bundler/plugin.rb +42 -29
- data/lib/bundler/plugin/api.rb +1 -1
- data/lib/bundler/plugin/api/source.rb +2 -2
- data/lib/bundler/plugin/index.rb +14 -3
- data/lib/bundler/plugin/installer.rb +28 -15
- data/lib/bundler/psyched_yaml.rb +1 -1
- data/lib/bundler/resolver.rb +72 -24
- data/lib/bundler/resolver/spec_group.rb +3 -2
- data/lib/bundler/retry.rb +2 -2
- data/lib/bundler/ruby_version.rb +4 -19
- data/lib/bundler/rubygems_ext.rb +10 -66
- data/lib/bundler/rubygems_gem_installer.rb +1 -1
- data/lib/bundler/rubygems_integration.rb +144 -395
- data/lib/bundler/runtime.rb +2 -9
- data/lib/bundler/settings.rb +15 -47
- data/lib/bundler/setup.rb +6 -5
- data/lib/bundler/shared_helpers.rb +64 -67
- data/lib/bundler/similarity_detector.rb +2 -2
- data/lib/bundler/source.rb +5 -5
- data/lib/bundler/source/git.rb +19 -12
- data/lib/bundler/source/git/git_proxy.rb +35 -39
- data/lib/bundler/source/metadata.rb +9 -5
- data/lib/bundler/source/path.rb +13 -8
- data/lib/bundler/source/rubygems.rb +11 -5
- data/lib/bundler/source/rubygems/remote.rb +1 -2
- data/lib/bundler/source_list.rb +9 -12
- data/lib/bundler/spec_set.rb +23 -12
- data/lib/bundler/stub_specification.rb +18 -30
- data/lib/bundler/templates/Executable.bundler +23 -14
- data/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +3 -3
- data/lib/bundler/templates/newgem/Gemfile.tt +8 -2
- data/lib/bundler/templates/newgem/README.md.tt +4 -3
- data/lib/bundler/templates/newgem/newgem.gemspec.tt +6 -27
- data/lib/bundler/templates/newgem/test/test_helper.rb.tt +1 -1
- data/lib/bundler/templates/newgem/travis.yml.tt +0 -1
- data/lib/bundler/ui.rb +3 -3
- data/lib/bundler/ui/rg_proxy.rb +1 -1
- data/lib/bundler/ui/shell.rb +4 -8
- data/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +161 -0
- data/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +66 -0
- data/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +176 -0
- data/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
- data/lib/bundler/vendor/fileutils/lib/fileutils.rb +151 -48
- data/lib/bundler/vendor/fileutils/lib/fileutils/version.rb +5 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo.rb +6 -6
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +2 -2
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +6 -6
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +30 -8
- data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +4 -4
- data/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +2 -2
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +248 -279
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +40 -0
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +53 -0
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +79 -0
- data/lib/bundler/vendor/thor/lib/thor.rb +7 -2
- data/lib/bundler/vendor/thor/lib/thor/actions.rb +21 -11
- data/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +11 -2
- data/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/base.rb +16 -17
- data/lib/bundler/vendor/thor/lib/thor/error.rb +82 -0
- data/lib/bundler/vendor/thor/lib/thor/group.rb +3 -3
- data/lib/bundler/vendor/thor/lib/thor/line_editor.rb +2 -2
- data/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -4
- data/lib/bundler/vendor/thor/lib/thor/parser/options.rb +7 -2
- data/lib/bundler/vendor/thor/lib/thor/runner.rb +6 -6
- data/lib/bundler/vendor/thor/lib/thor/shell.rb +4 -4
- data/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +52 -7
- data/lib/bundler/vendor/thor/lib/thor/shell/color.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/shell/html.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/lib/bundler/vendored_fileutils.rb +1 -6
- data/lib/bundler/vendored_molinillo.rb +1 -1
- data/lib/bundler/vendored_persistent.rb +7 -5
- data/lib/bundler/vendored_thor.rb +2 -2
- data/lib/bundler/version.rb +1 -20
- data/lib/bundler/version_ranges.rb +51 -5
- data/lib/bundler/vlad.rb +2 -2
- data/lib/bundler/worker.rb +1 -3
- data/lib/bundler/yaml_serializer.rb +2 -3
- data/man/bundle-add.1 +10 -2
- data/man/bundle-add.1.txt +11 -5
- data/man/bundle-add.ronn +7 -1
- data/man/bundle-binstubs.1 +2 -2
- data/man/bundle-binstubs.1.txt +2 -2
- data/man/bundle-binstubs.ronn +1 -1
- data/man/bundle-check.1 +1 -1
- data/man/bundle-check.1.txt +6 -6
- data/man/bundle-clean.1 +1 -1
- data/man/bundle-clean.1.txt +1 -1
- data/man/bundle-config.1 +52 -36
- data/man/bundle-config.1.txt +82 -67
- data/man/bundle-config.ronn +56 -40
- data/man/bundle-doctor.1 +1 -1
- data/man/bundle-doctor.1.txt +1 -1
- data/man/bundle-exec.1 +2 -2
- data/man/bundle-exec.1.txt +2 -2
- data/man/bundle-exec.ronn +1 -1
- data/man/bundle-gem.1 +1 -1
- data/man/bundle-gem.1.txt +3 -3
- data/man/bundle-info.1 +1 -1
- data/man/bundle-info.1.txt +1 -1
- data/man/bundle-init.1 +2 -2
- data/man/bundle-init.1.txt +2 -2
- data/man/bundle-init.ronn +1 -1
- data/man/bundle-inject.1 +1 -1
- data/man/bundle-inject.1.txt +1 -1
- data/man/bundle-install.1 +8 -5
- data/man/bundle-install.1.txt +56 -51
- data/man/bundle-install.ronn +9 -4
- data/man/bundle-list.1 +1 -1
- data/man/bundle-list.1.txt +1 -1
- data/man/bundle-lock.1 +1 -1
- data/man/bundle-lock.1.txt +16 -16
- data/man/bundle-open.1 +1 -1
- data/man/bundle-open.1.txt +1 -1
- data/man/bundle-outdated.1 +1 -1
- data/man/bundle-outdated.1.txt +1 -1
- data/man/bundle-package.1 +1 -1
- data/man/bundle-package.1.txt +1 -1
- data/man/bundle-platform.1 +1 -1
- data/man/bundle-platform.1.txt +1 -1
- data/man/bundle-pristine.1 +1 -1
- data/man/bundle-pristine.1.txt +1 -1
- data/man/bundle-remove.1 +1 -1
- data/man/bundle-remove.1.txt +1 -1
- data/man/bundle-show.1 +1 -1
- data/man/bundle-show.1.txt +1 -1
- data/man/bundle-update.1 +4 -4
- data/man/bundle-update.1.txt +64 -65
- data/man/bundle-update.ronn +3 -3
- data/man/bundle-viz.1 +1 -1
- data/man/bundle-viz.1.txt +1 -1
- data/man/bundle.1 +7 -3
- data/man/bundle.1.txt +11 -8
- data/man/bundle.ronn +5 -2
- data/man/gemfile.5 +17 -20
- data/man/gemfile.5.ronn +14 -18
- data/man/gemfile.5.txt +108 -112
- metadata +17 -104
- data/exe/bundle_ruby +0 -60
- data/lib/bundler/cli/cache.rb +0 -36
- data/lib/bundler/compatibility_guard.rb +0 -14
- data/lib/bundler/ssl_certs/.document +0 -1
- data/lib/bundler/ssl_certs/certificate_manager.rb +0 -66
- data/lib/bundler/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem +0 -21
- data/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
- data/lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb +0 -27
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/ssl_reuse.rb +0 -129
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative "base"
|
2
2
|
|
3
3
|
# Bundler::Thor has a special class called Bundler::Thor::Group. The main difference to Bundler::Thor class
|
4
4
|
# is that it invokes all commands at once. It also include some methods that allows
|
@@ -61,7 +61,7 @@ class Bundler::Thor::Group
|
|
61
61
|
invocations[name] = false
|
62
62
|
invocation_blocks[name] = block if block_given?
|
63
63
|
|
64
|
-
class_eval <<-METHOD, __FILE__, __LINE__
|
64
|
+
class_eval <<-METHOD, __FILE__, __LINE__ + 1
|
65
65
|
def _invoke_#{name.to_s.gsub(/\W/, '_')}
|
66
66
|
klass, command = self.class.prepare_for_invocation(nil, #{name.inspect})
|
67
67
|
|
@@ -120,7 +120,7 @@ class Bundler::Thor::Group
|
|
120
120
|
invocations[name] = true
|
121
121
|
invocation_blocks[name] = block if block_given?
|
122
122
|
|
123
|
-
class_eval <<-METHOD, __FILE__, __LINE__
|
123
|
+
class_eval <<-METHOD, __FILE__, __LINE__ + 1
|
124
124
|
def _invoke_from_option_#{name.to_s.gsub(/\W/, '_')}
|
125
125
|
return unless options[#{name.inspect}]
|
126
126
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
require_relative "parser/argument"
|
2
|
+
require_relative "parser/arguments"
|
3
|
+
require_relative "parser/option"
|
4
|
+
require_relative "parser/options"
|
@@ -44,6 +44,7 @@ class Bundler::Thor
|
|
44
44
|
@shorts = {}
|
45
45
|
@switches = {}
|
46
46
|
@extra = []
|
47
|
+
@stopped_parsing_after_extra_index = nil
|
47
48
|
|
48
49
|
options.each do |option|
|
49
50
|
@switches[option.switch_name] = option
|
@@ -66,6 +67,7 @@ class Bundler::Thor
|
|
66
67
|
if result == OPTS_END
|
67
68
|
shift
|
68
69
|
@parsing_options = false
|
70
|
+
@stopped_parsing_after_extra_index ||= @extra.size
|
69
71
|
super
|
70
72
|
else
|
71
73
|
result
|
@@ -99,6 +101,7 @@ class Bundler::Thor
|
|
99
101
|
elsif @stop_on_unknown
|
100
102
|
@parsing_options = false
|
101
103
|
@extra << shifted
|
104
|
+
@stopped_parsing_after_extra_index ||= @extra.size
|
102
105
|
@extra << shift while peek
|
103
106
|
break
|
104
107
|
elsif match
|
@@ -120,9 +123,11 @@ class Bundler::Thor
|
|
120
123
|
end
|
121
124
|
|
122
125
|
def check_unknown!
|
126
|
+
to_check = @stopped_parsing_after_extra_index ? @extra[0...@stopped_parsing_after_extra_index] : @extra
|
127
|
+
|
123
128
|
# an unknown option starts with - or -- and has no more --'s afterward.
|
124
|
-
unknown =
|
125
|
-
raise UnknownArgumentError
|
129
|
+
unknown = to_check.select { |str| str =~ /^--?(?:(?!--).)*$/ }
|
130
|
+
raise UnknownArgumentError.new(@switches.keys, unknown) unless unknown.empty?
|
126
131
|
end
|
127
132
|
|
128
133
|
protected
|
@@ -1,9 +1,9 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
require_relative "../thor"
|
2
|
+
require_relative "group"
|
3
|
+
require_relative "core_ext/io_binary_read"
|
4
4
|
|
5
5
|
require "yaml"
|
6
|
-
require "digest"
|
6
|
+
require "digest/md5"
|
7
7
|
require "pathname"
|
8
8
|
|
9
9
|
class Bundler::Thor::Runner < Bundler::Thor #:nodoc: # rubocop:disable ClassLength
|
@@ -90,7 +90,7 @@ class Bundler::Thor::Runner < Bundler::Thor #:nodoc: # rubocop:disable ClassLeng
|
|
90
90
|
end
|
91
91
|
|
92
92
|
thor_yaml[as] = {
|
93
|
-
:filename => Digest
|
93
|
+
:filename => Digest::MD5.hexdigest(name + as),
|
94
94
|
:location => location,
|
95
95
|
:namespaces => Bundler::Thor::Util.namespaces_in_content(contents, base)
|
96
96
|
}
|
@@ -111,7 +111,7 @@ class Bundler::Thor::Runner < Bundler::Thor #:nodoc: # rubocop:disable ClassLeng
|
|
111
111
|
|
112
112
|
desc "version", "Show Bundler::Thor version"
|
113
113
|
def version
|
114
|
-
|
114
|
+
require_relative "version"
|
115
115
|
say "Bundler::Thor #{Bundler::Thor::VERSION}"
|
116
116
|
end
|
117
117
|
|
@@ -24,9 +24,9 @@ class Bundler::Thor
|
|
24
24
|
SHELL_DELEGATED_METHODS = [:ask, :error, :set_color, :yes?, :no?, :say, :say_status, :print_in_columns, :print_table, :print_wrapped, :file_collision, :terminal_width]
|
25
25
|
attr_writer :shell
|
26
26
|
|
27
|
-
autoload :Basic, "
|
28
|
-
autoload :Color, "
|
29
|
-
autoload :HTML, "
|
27
|
+
autoload :Basic, File.expand_path("shell/basic", __dir__)
|
28
|
+
autoload :Color, File.expand_path("shell/color", __dir__)
|
29
|
+
autoload :HTML, File.expand_path("shell/html", __dir__)
|
30
30
|
|
31
31
|
# Add shell to initialize config values.
|
32
32
|
#
|
@@ -55,7 +55,7 @@ class Bundler::Thor
|
|
55
55
|
|
56
56
|
# Common methods that are delegated to the shell.
|
57
57
|
SHELL_DELEGATED_METHODS.each do |method|
|
58
|
-
module_eval <<-METHOD, __FILE__, __LINE__
|
58
|
+
module_eval <<-METHOD, __FILE__, __LINE__ + 1
|
59
59
|
def #{method}(*args,&block)
|
60
60
|
shell.#{method}(*args,&block)
|
61
61
|
end
|
@@ -1,6 +1,8 @@
|
|
1
1
|
class Bundler::Thor
|
2
2
|
module Shell
|
3
3
|
class Basic
|
4
|
+
DEFAULT_TERMINAL_WIDTH = 80
|
5
|
+
|
4
6
|
attr_accessor :base
|
5
7
|
attr_reader :padding
|
6
8
|
|
@@ -45,6 +47,10 @@ class Bundler::Thor
|
|
45
47
|
|
46
48
|
# Asks something to the user and receives a response.
|
47
49
|
#
|
50
|
+
# If a default value is specified it will be presented to the user
|
51
|
+
# and allows them to select that value with an empty response. This
|
52
|
+
# option is ignored when limited answers are supplied.
|
53
|
+
#
|
48
54
|
# If asked to limit the correct responses, you can pass in an
|
49
55
|
# array of acceptable answers. If one of those is not supplied,
|
50
56
|
# they will be shown a message stating that one of those answers
|
@@ -61,6 +67,8 @@ class Bundler::Thor
|
|
61
67
|
# ==== Example
|
62
68
|
# ask("What is your name?")
|
63
69
|
#
|
70
|
+
# ask("What is the planet furthest from the sun?", :default => "Pluto")
|
71
|
+
#
|
64
72
|
# ask("What is your favorite Neopolitan flavor?", :limited_to => ["strawberry", "chocolate", "vanilla"])
|
65
73
|
#
|
66
74
|
# ask("What is your password?", :echo => false)
|
@@ -222,8 +230,20 @@ class Bundler::Thor
|
|
222
230
|
paras = message.split("\n\n")
|
223
231
|
|
224
232
|
paras.map! do |unwrapped|
|
225
|
-
|
226
|
-
|
233
|
+
counter = 0
|
234
|
+
unwrapped.split(" ").inject do |memo, word|
|
235
|
+
word = word.gsub(/\n\005/, "\n").gsub(/\005/, "\n")
|
236
|
+
counter = 0 if word.include? "\n"
|
237
|
+
if (counter + word.length + 1) < width
|
238
|
+
memo = "#{memo} #{word}"
|
239
|
+
counter += (word.length + 1)
|
240
|
+
else
|
241
|
+
memo = "#{memo}\n#{word}"
|
242
|
+
counter = word.length
|
243
|
+
end
|
244
|
+
memo
|
245
|
+
end
|
246
|
+
end.compact!
|
227
247
|
|
228
248
|
paras.each do |para|
|
229
249
|
para.split("\n").each do |line|
|
@@ -239,11 +259,11 @@ class Bundler::Thor
|
|
239
259
|
#
|
240
260
|
# ==== Parameters
|
241
261
|
# destination<String>:: the destination file to solve conflicts
|
242
|
-
# block<Proc>:: an optional block that returns the value to be used in diff
|
262
|
+
# block<Proc>:: an optional block that returns the value to be used in diff and merge
|
243
263
|
#
|
244
264
|
def file_collision(destination)
|
245
265
|
return true if @always_force
|
246
|
-
options = block_given? ? "[
|
266
|
+
options = block_given? ? "[Ynaqdhm]" : "[Ynaqh]"
|
247
267
|
|
248
268
|
loop do
|
249
269
|
answer = ask(
|
@@ -267,6 +287,13 @@ class Bundler::Thor
|
|
267
287
|
when is?(:diff)
|
268
288
|
show_diff(destination, yield) if block_given?
|
269
289
|
say "Retrying..."
|
290
|
+
when is?(:merge)
|
291
|
+
if block_given? && !merge_tool.empty?
|
292
|
+
merge(destination, yield)
|
293
|
+
return nil
|
294
|
+
end
|
295
|
+
|
296
|
+
say "Please specify merge tool to `THOR_MERGE` env."
|
270
297
|
else
|
271
298
|
say file_collision_help
|
272
299
|
end
|
@@ -279,11 +306,11 @@ class Bundler::Thor
|
|
279
306
|
result = if ENV["THOR_COLUMNS"]
|
280
307
|
ENV["THOR_COLUMNS"].to_i
|
281
308
|
else
|
282
|
-
unix? ? dynamic_width :
|
309
|
+
unix? ? dynamic_width : DEFAULT_TERMINAL_WIDTH
|
283
310
|
end
|
284
|
-
result < 10 ?
|
311
|
+
result < 10 ? DEFAULT_TERMINAL_WIDTH : result
|
285
312
|
rescue
|
286
|
-
|
313
|
+
DEFAULT_TERMINAL_WIDTH
|
287
314
|
end
|
288
315
|
|
289
316
|
# Called if something goes wrong during the execution. This is used by Bundler::Thor
|
@@ -344,6 +371,7 @@ class Bundler::Thor
|
|
344
371
|
q - quit, abort
|
345
372
|
d - diff, show the differences between the old and the new
|
346
373
|
h - help, show this help
|
374
|
+
m - merge, run merge tool
|
347
375
|
HELP
|
348
376
|
end
|
349
377
|
|
@@ -432,6 +460,23 @@ class Bundler::Thor
|
|
432
460
|
end
|
433
461
|
correct_answer
|
434
462
|
end
|
463
|
+
|
464
|
+
def merge(destination, content) #:nodoc:
|
465
|
+
require "tempfile"
|
466
|
+
Tempfile.open([File.basename(destination), File.extname(destination)], File.dirname(destination)) do |temp|
|
467
|
+
temp.write content
|
468
|
+
temp.rewind
|
469
|
+
system %(#{merge_tool} "#{temp.path}" "#{destination}")
|
470
|
+
end
|
471
|
+
end
|
472
|
+
|
473
|
+
def merge_tool #:nodoc:
|
474
|
+
@merge_tool ||= ENV["THOR_MERGE"] || git_merge_tool
|
475
|
+
end
|
476
|
+
|
477
|
+
def git_merge_tool #:nodoc:
|
478
|
+
`git config merge.tool`.rstrip rescue ""
|
479
|
+
end
|
435
480
|
end
|
436
481
|
end
|
437
482
|
end
|
@@ -27,7 +27,7 @@ class Bundler::Thor
|
|
27
27
|
end
|
28
28
|
|
29
29
|
# Receives a constant and converts it to a Bundler::Thor namespace. Since Bundler::Thor
|
30
|
-
# commands can be added to a sandbox, this method is also
|
30
|
+
# commands can be added to a sandbox, this method is also responsible for
|
31
31
|
# removing the sandbox namespace.
|
32
32
|
#
|
33
33
|
# This method should not be used in general because it's used to deal with
|
@@ -15,18 +15,20 @@ module Bundler
|
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
18
|
-
|
18
|
+
require_relative "vendor/net-http-persistent/lib/net/http/persistent"
|
19
19
|
|
20
20
|
module Bundler
|
21
21
|
class PersistentHTTP < Persistent::Net::HTTP::Persistent
|
22
22
|
def connection_for(uri)
|
23
|
-
|
24
|
-
|
25
|
-
|
23
|
+
super(uri) do |connection|
|
24
|
+
result = yield connection
|
25
|
+
warn_old_tls_version_rubygems_connection(uri, connection)
|
26
|
+
result
|
27
|
+
end
|
26
28
|
end
|
27
29
|
|
28
30
|
def warn_old_tls_version_rubygems_connection(uri, connection)
|
29
|
-
return unless connection.use_ssl?
|
31
|
+
return unless connection.http.use_ssl?
|
30
32
|
return unless (uri.host || "").end_with?("rubygems.org")
|
31
33
|
|
32
34
|
socket = connection.instance_variable_get(:@socket)
|
data/lib/bundler/version.rb
CHANGED
@@ -1,26 +1,7 @@
|
|
1
1
|
# frozen_string_literal: false
|
2
2
|
|
3
|
-
# Ruby 1.9.3 and old RubyGems don't play nice with frozen version strings
|
4
|
-
# rubocop:disable MutableConstant
|
5
|
-
|
6
3
|
module Bundler
|
7
|
-
|
8
|
-
# with other versions of bundler and we are unsure how to
|
9
|
-
# handle this better.
|
10
|
-
VERSION = "1.17.0.pre.2" unless defined?(::Bundler::VERSION)
|
11
|
-
|
12
|
-
def self.overwrite_loaded_gem_version
|
13
|
-
begin
|
14
|
-
require "rubygems"
|
15
|
-
rescue LoadError
|
16
|
-
return
|
17
|
-
end
|
18
|
-
return unless bundler_spec = Gem.loaded_specs["bundler"]
|
19
|
-
return if bundler_spec.version == VERSION
|
20
|
-
bundler_spec.version = Bundler::VERSION
|
21
|
-
end
|
22
|
-
private_class_method :overwrite_loaded_gem_version
|
23
|
-
overwrite_loaded_gem_version
|
4
|
+
VERSION = "2.1.0.pre.2".freeze
|
24
5
|
|
25
6
|
def self.bundler_major_version
|
26
7
|
@bundler_major_version ||= VERSION.split(".").first.to_i
|
@@ -5,11 +5,42 @@ module Bundler
|
|
5
5
|
NEq = Struct.new(:version)
|
6
6
|
ReqR = Struct.new(:left, :right)
|
7
7
|
class ReqR
|
8
|
-
Endpoint = Struct.new(:version, :inclusive)
|
8
|
+
Endpoint = Struct.new(:version, :inclusive) do
|
9
|
+
def <=>(other)
|
10
|
+
if version.equal?(INFINITY)
|
11
|
+
return 0 if other.version.equal?(INFINITY)
|
12
|
+
return 1
|
13
|
+
elsif other.version.equal?(INFINITY)
|
14
|
+
return -1
|
15
|
+
end
|
16
|
+
|
17
|
+
comp = version <=> other.version
|
18
|
+
return comp unless comp.zero?
|
19
|
+
|
20
|
+
if inclusive && !other.inclusive
|
21
|
+
1
|
22
|
+
elsif !inclusive && other.inclusive
|
23
|
+
-1
|
24
|
+
else
|
25
|
+
0
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
9
30
|
def to_s
|
10
31
|
"#{left.inclusive ? "[" : "("}#{left.version}, #{right.version}#{right.inclusive ? "]" : ")"}"
|
11
32
|
end
|
12
|
-
INFINITY =
|
33
|
+
INFINITY = begin
|
34
|
+
inf = Object.new
|
35
|
+
def inf.to_s
|
36
|
+
"∞"
|
37
|
+
end
|
38
|
+
def inf.<=>(other)
|
39
|
+
return 0 if other.equal?(self)
|
40
|
+
1
|
41
|
+
end
|
42
|
+
inf.freeze
|
43
|
+
end
|
13
44
|
ZERO = Gem::Version.new("0.a")
|
14
45
|
|
15
46
|
def cover?(v)
|
@@ -32,6 +63,15 @@ module Bundler
|
|
32
63
|
left.version == right.version
|
33
64
|
end
|
34
65
|
|
66
|
+
def <=>(other)
|
67
|
+
return -1 if other.equal?(INFINITY)
|
68
|
+
|
69
|
+
comp = left <=> other.left
|
70
|
+
return comp unless comp.zero?
|
71
|
+
|
72
|
+
right <=> other.right
|
73
|
+
end
|
74
|
+
|
35
75
|
UNIVERSAL = ReqR.new(ReqR::Endpoint.new(Gem::Version.new("0.a"), true), ReqR::Endpoint.new(ReqR::INFINITY, false)).freeze
|
36
76
|
end
|
37
77
|
|
@@ -57,7 +97,7 @@ module Bundler
|
|
57
97
|
end.uniq
|
58
98
|
ranges, neqs = ranges.partition {|r| !r.is_a?(NEq) }
|
59
99
|
|
60
|
-
[ranges.
|
100
|
+
[ranges.sort, neqs.map(&:version)]
|
61
101
|
end
|
62
102
|
|
63
103
|
def self.empty?(ranges, neqs)
|
@@ -66,8 +106,14 @@ module Bundler
|
|
66
106
|
next false if curr_range.single? && neqs.include?(curr_range.left.version)
|
67
107
|
next curr_range if last_range.right.version == ReqR::INFINITY
|
68
108
|
case last_range.right.version <=> curr_range.left.version
|
69
|
-
|
70
|
-
when
|
109
|
+
# higher
|
110
|
+
when 1 then next ReqR.new(curr_range.left, last_range.right)
|
111
|
+
# equal
|
112
|
+
when 0
|
113
|
+
if last_range.right.inclusive && curr_range.left.inclusive && !neqs.include?(curr_range.left.version)
|
114
|
+
ReqR.new(curr_range.left, [curr_range.right, last_range.right].max)
|
115
|
+
end
|
116
|
+
# lower
|
71
117
|
when -1 then next false
|
72
118
|
end
|
73
119
|
end
|