bundler 1.11.2 → 1.12.0.pre.1
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/.codeclimate.yml +24 -0
- data/.gitignore +2 -2
- data/.rubocop.yml +17 -2
- data/.rubocop_todo.yml +145 -18
- data/.travis.yml +9 -2
- data/CHANGELOG.md +42 -0
- data/Rakefile +20 -13
- data/bin/rake +5 -0
- data/bin/rspec +5 -0
- data/bin/rubocop +7 -1
- data/bundler.gemspec +2 -1
- data/exe/bundle +10 -2
- data/exe/bundle_ruby +2 -1
- data/exe/bundler +3 -1
- data/lib/bundler.rb +54 -51
- data/lib/bundler/capistrano.rb +1 -0
- data/lib/bundler/cli.rb +26 -4
- data/lib/bundler/cli/binstubs.rb +1 -0
- data/lib/bundler/cli/cache.rb +1 -0
- data/lib/bundler/cli/check.rb +4 -1
- data/lib/bundler/cli/clean.rb +1 -0
- data/lib/bundler/cli/common.rb +1 -0
- data/lib/bundler/cli/config.rb +5 -5
- data/lib/bundler/cli/console.rb +1 -0
- data/lib/bundler/cli/exec.rb +4 -9
- data/lib/bundler/cli/gem.rb +12 -9
- data/lib/bundler/cli/init.rb +1 -0
- data/lib/bundler/cli/inject.rb +1 -0
- data/lib/bundler/cli/install.rb +8 -5
- data/lib/bundler/cli/lock.rb +2 -0
- data/lib/bundler/cli/open.rb +1 -0
- data/lib/bundler/cli/outdated.rb +36 -9
- data/lib/bundler/cli/package.rb +1 -0
- data/lib/bundler/cli/platform.rb +4 -1
- data/lib/bundler/cli/show.rb +1 -0
- data/lib/bundler/cli/update.rb +6 -6
- data/lib/bundler/cli/viz.rb +4 -6
- data/lib/bundler/constants.rb +1 -0
- data/lib/bundler/current_ruby.rb +34 -168
- data/lib/bundler/definition.rb +41 -15
- data/lib/bundler/dep_proxy.rb +1 -0
- data/lib/bundler/dependency.rb +10 -0
- data/lib/bundler/deployment.rb +1 -0
- data/lib/bundler/deprecate.rb +1 -0
- data/lib/bundler/dsl.rb +19 -9
- data/lib/bundler/endpoint_specification.rb +37 -8
- data/lib/bundler/env.rb +4 -3
- data/lib/bundler/environment.rb +1 -0
- data/lib/bundler/errors.rb +51 -32
- data/lib/bundler/fetcher.rb +44 -30
- data/lib/bundler/fetcher/base.rb +3 -2
- data/lib/bundler/fetcher/compact_index.rb +98 -0
- data/lib/bundler/fetcher/dependency.rb +36 -36
- data/lib/bundler/fetcher/downloader.rb +14 -8
- data/lib/bundler/fetcher/index.rb +28 -5
- data/lib/bundler/friendly_errors.rb +93 -85
- data/lib/bundler/gem_helper.rb +20 -21
- data/lib/bundler/gem_helpers.rb +9 -2
- data/lib/bundler/gem_remote_fetcher.rb +1 -0
- data/lib/bundler/gem_tasks.rb +1 -0
- data/lib/bundler/graph.rb +16 -17
- data/lib/bundler/index.rb +4 -6
- data/lib/bundler/injector.rb +1 -0
- data/lib/bundler/inline.rb +8 -2
- data/lib/bundler/installer.rb +4 -4
- data/lib/bundler/installer/gem_installer.rb +1 -0
- data/lib/bundler/installer/parallel_installer.rb +3 -2
- data/lib/bundler/installer/standalone.rb +5 -1
- data/lib/bundler/lazy_specification.rb +5 -2
- data/lib/bundler/lockfile_parser.rb +22 -15
- data/lib/bundler/match_platform.rb +1 -0
- data/lib/bundler/mirror.rb +218 -0
- data/lib/bundler/path_preserver.rb +12 -0
- data/lib/bundler/psyched_yaml.rb +1 -0
- data/lib/bundler/remote_specification.rb +4 -1
- data/lib/bundler/resolver.rb +17 -16
- data/lib/bundler/retry.rb +1 -0
- data/lib/bundler/ruby_dsl.rb +8 -2
- data/lib/bundler/ruby_version.rb +58 -61
- data/lib/bundler/rubygems_ext.rb +4 -3
- data/lib/bundler/rubygems_gem_installer.rb +1 -0
- data/lib/bundler/rubygems_integration.rb +9 -14
- data/lib/bundler/runtime.rb +17 -22
- data/lib/bundler/settings.rb +17 -21
- data/lib/bundler/setup.rb +1 -0
- data/lib/bundler/shared_helpers.rb +47 -17
- data/lib/bundler/similarity_detector.rb +1 -0
- data/lib/bundler/source.rb +2 -1
- data/lib/bundler/source/git.rb +2 -1
- data/lib/bundler/source/git/git_proxy.rb +33 -7
- data/lib/bundler/source/path.rb +17 -10
- data/lib/bundler/source/path/installer.rb +1 -0
- data/lib/bundler/source/rubygems.rb +4 -3
- data/lib/bundler/source/rubygems/remote.rb +16 -0
- data/lib/bundler/source_list.rb +1 -0
- data/lib/bundler/spec_set.rb +1 -0
- data/lib/bundler/ssl_certs/certificate_manager.rb +1 -0
- data/lib/bundler/stub_specification.rb +1 -0
- data/lib/bundler/templates/Executable +1 -0
- data/lib/bundler/templates/Gemfile +1 -0
- data/lib/bundler/templates/newgem/.travis.yml.tt +1 -0
- data/lib/bundler/templates/newgem/newgem.gemspec.tt +2 -2
- data/lib/bundler/ui.rb +1 -0
- data/lib/bundler/ui/rg_proxy.rb +1 -0
- data/lib/bundler/ui/shell.rb +2 -1
- data/lib/bundler/ui/silent.rb +1 -0
- data/lib/bundler/vendor/compact_index_client/lib/compact_index_client.rb +78 -0
- data/lib/bundler/vendor/compact_index_client/lib/compact_index_client/cache.rb +97 -0
- data/lib/bundler/vendor/compact_index_client/lib/compact_index_client/updater.rb +55 -0
- data/lib/bundler/vendor/compact_index_client/lib/compact_index_client/version.rb +3 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo.rb +4 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +13 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +5 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +2 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +2 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +37 -14
- data/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +2 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +7 -7
- data/lib/bundler/vendored_molinillo.rb +1 -0
- data/lib/bundler/vendored_persistent.rb +1 -0
- data/lib/bundler/vendored_thor.rb +1 -0
- data/lib/bundler/version.rb +6 -1
- data/lib/bundler/vlad.rb +1 -0
- data/lib/bundler/worker.rb +12 -2
- data/man/bundle-config.ronn +6 -0
- data/man/bundle-gem.ronn +5 -5
- metadata +14 -6
- data/lib/bundler/gem_path_manipulation.rb +0 -8
data/lib/bundler/definition.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require "bundler/lockfile_parser"
|
2
3
|
require "digest/sha1"
|
3
4
|
require "set"
|
@@ -53,14 +54,16 @@ module Bundler
|
|
53
54
|
@specs = nil
|
54
55
|
@ruby_version = ruby_version
|
55
56
|
|
56
|
-
@lockfile_contents =
|
57
|
+
@lockfile_contents = String.new
|
57
58
|
@locked_bundler_version = nil
|
59
|
+
@locked_ruby_version = nil
|
58
60
|
|
59
61
|
if lockfile && File.exist?(lockfile)
|
60
62
|
@lockfile_contents = Bundler.read_file(lockfile)
|
61
63
|
locked = LockfileParser.new(@lockfile_contents)
|
62
64
|
@platforms = locked.platforms
|
63
65
|
@locked_bundler_version = locked.bundler_version
|
66
|
+
@locked_ruby_version = locked.ruby_version
|
64
67
|
|
65
68
|
if unlock != true
|
66
69
|
@locked_deps = locked.dependencies
|
@@ -194,8 +197,7 @@ module Bundler
|
|
194
197
|
last_resolve
|
195
198
|
else
|
196
199
|
# Run a resolve against the locally available gems
|
197
|
-
|
198
|
-
last_resolve.merge Resolver.resolve(expanded_dependencies, index, source_requirements, last_resolve, requested_ruby_version)
|
200
|
+
last_resolve.merge Resolver.resolve(expanded_dependencies, index, source_requirements, last_resolve, ruby_version)
|
199
201
|
end
|
200
202
|
end
|
201
203
|
end
|
@@ -269,9 +271,7 @@ module Bundler
|
|
269
271
|
end
|
270
272
|
end
|
271
273
|
|
272
|
-
|
273
|
-
# Gemfile.lock. Used in #to_lock.
|
274
|
-
def lock_version
|
274
|
+
def locked_bundler_version
|
275
275
|
if @locked_bundler_version && @locked_bundler_version < Gem::Version.new(Bundler::VERSION)
|
276
276
|
new_version = Bundler::VERSION
|
277
277
|
end
|
@@ -279,8 +279,28 @@ module Bundler
|
|
279
279
|
new_version || @locked_bundler_version || Bundler::VERSION
|
280
280
|
end
|
281
281
|
|
282
|
+
def locked_ruby_version
|
283
|
+
if @unlock[:ruby]
|
284
|
+
if ruby_version && !@locked_ruby_version
|
285
|
+
return Bundler::RubyVersion.system
|
286
|
+
elsif ruby_version && @locked_ruby_version
|
287
|
+
return Bundler::RubyVersion.system
|
288
|
+
elsif !ruby_version && @locked_ruby_version
|
289
|
+
return nil
|
290
|
+
end
|
291
|
+
else
|
292
|
+
if ruby_version && !@locked_ruby_version
|
293
|
+
return Bundler::RubyVersion.system
|
294
|
+
elsif ruby_version && @locked_ruby_version
|
295
|
+
return @locked_ruby_version
|
296
|
+
elsif !ruby_version && @locked_ruby_version
|
297
|
+
return @locked_ruby_version
|
298
|
+
end
|
299
|
+
end
|
300
|
+
end
|
301
|
+
|
282
302
|
def to_lock
|
283
|
-
out =
|
303
|
+
out = String.new
|
284
304
|
|
285
305
|
sources.lock_sources.each do |source|
|
286
306
|
# Add the source header
|
@@ -315,20 +335,26 @@ module Bundler
|
|
315
335
|
handled << dep.name
|
316
336
|
end
|
317
337
|
|
338
|
+
if locked_ruby_version
|
339
|
+
out << "\nRUBY VERSION\n"
|
340
|
+
out << " #{locked_ruby_version}\n"
|
341
|
+
end
|
342
|
+
|
318
343
|
# Record the version of Bundler that was used to create the lockfile
|
319
344
|
out << "\nBUNDLED WITH\n"
|
320
|
-
out << " #{
|
345
|
+
out << " #{locked_bundler_version}\n"
|
321
346
|
|
322
347
|
out
|
323
348
|
end
|
324
349
|
|
325
350
|
def ensure_equivalent_gemfile_and_lockfile(explicit_flag = false)
|
326
|
-
msg =
|
327
|
-
|
328
|
-
|
351
|
+
msg = String.new
|
352
|
+
msg << "You are trying to install in deployment mode after changing\n" \
|
353
|
+
"your Gemfile. Run `bundle install` elsewhere and add the\n" \
|
354
|
+
"updated #{Bundler.default_lockfile.relative_path_from(SharedHelpers.pwd)} to version control."
|
329
355
|
|
330
356
|
unless explicit_flag
|
331
|
-
msg
|
357
|
+
msg << "\n\nIf this is a development machine, remove the #{Bundler.default_gemfile} " \
|
332
358
|
"freeze \nby running `bundle install --no-deployment`."
|
333
359
|
end
|
334
360
|
|
@@ -381,7 +407,7 @@ module Bundler
|
|
381
407
|
def validate_ruby!
|
382
408
|
return unless ruby_version
|
383
409
|
|
384
|
-
if diff = ruby_version.diff(Bundler.
|
410
|
+
if diff = ruby_version.diff(Bundler::RubyVersion.system)
|
385
411
|
problem, expected, actual = diff
|
386
412
|
|
387
413
|
msg = case problem
|
@@ -390,7 +416,7 @@ module Bundler
|
|
390
416
|
when :version
|
391
417
|
"Your Ruby version is #{actual}, but your Gemfile specified #{expected}"
|
392
418
|
when :engine_version
|
393
|
-
"Your #{Bundler.
|
419
|
+
"Your #{Bundler::RubyVersion.system.engine} version is #{actual}, but your Gemfile specified #{ruby_version.engine} #{expected}"
|
394
420
|
when :patchlevel
|
395
421
|
if !expected.is_a?(String)
|
396
422
|
"The Ruby patchlevel in your Gemfile must be a string"
|
@@ -612,7 +638,7 @@ module Bundler
|
|
612
638
|
dep = Dependency.new(dep, ">= 0") unless dep.respond_to?(:name)
|
613
639
|
next unless remote || dep.current_platform?
|
614
640
|
dep.gem_platforms(@platforms).each do |p|
|
615
|
-
deps << DepProxy.new(dep, p) if remote || p ==
|
641
|
+
deps << DepProxy.new(dep, p) if remote || p == generic_local_platform
|
616
642
|
end
|
617
643
|
end
|
618
644
|
deps
|
data/lib/bundler/dep_proxy.rb
CHANGED
data/lib/bundler/dependency.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require "rubygems/dependency"
|
2
3
|
require "bundler/shared_helpers"
|
3
4
|
require "bundler/rubygems_ext"
|
@@ -54,6 +55,15 @@ module Bundler
|
|
54
55
|
:x64_mingw_23 => Gem::Platform::X64_MINGW
|
55
56
|
}.freeze
|
56
57
|
|
58
|
+
REVERSE_PLATFORM_MAP = {}.tap do |reverse_platform_map|
|
59
|
+
PLATFORM_MAP.each do |key, value|
|
60
|
+
reverse_platform_map[value] ||= []
|
61
|
+
reverse_platform_map[value] << key
|
62
|
+
end
|
63
|
+
|
64
|
+
reverse_platform_map.each {|_, platforms| platforms.freeze }
|
65
|
+
end.freeze
|
66
|
+
|
57
67
|
def initialize(name, version, options = {}, &blk)
|
58
68
|
type = options["type"] || :runtime
|
59
69
|
super(name, version, type)
|
data/lib/bundler/deployment.rb
CHANGED
data/lib/bundler/deprecate.rb
CHANGED
data/lib/bundler/dsl.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require "bundler/dependency"
|
2
3
|
require "bundler/ruby_dsl"
|
3
4
|
|
@@ -28,10 +29,12 @@ module Bundler
|
|
28
29
|
@env = nil
|
29
30
|
@ruby_version = nil
|
30
31
|
@gemspecs = []
|
32
|
+
@gemfile = nil
|
31
33
|
add_git_sources
|
32
34
|
end
|
33
35
|
|
34
36
|
def eval_gemfile(gemfile, contents = nil)
|
37
|
+
@gemfile = Pathname.new(gemfile)
|
35
38
|
contents ||= Bundler.read_file(gemfile.to_s)
|
36
39
|
instance_eval(contents, gemfile.to_s, 1)
|
37
40
|
rescue Exception => e
|
@@ -47,7 +50,7 @@ module Bundler
|
|
47
50
|
glob = opts && opts[:glob]
|
48
51
|
name = opts && opts[:name] || "{,*}"
|
49
52
|
development_group = opts && opts[:development_group] || :development
|
50
|
-
expanded_path =
|
53
|
+
expanded_path = gemfile_root.join(path)
|
51
54
|
|
52
55
|
gemspecs = Dir[File.join(expanded_path, "#{name}.gemspec")]
|
53
56
|
|
@@ -60,7 +63,8 @@ module Bundler
|
|
60
63
|
"#{file}. Make sure you can build the gem, then try again"
|
61
64
|
end
|
62
65
|
|
63
|
-
|
66
|
+
gem_platforms = Bundler::Dependency::REVERSE_PLATFORM_MAP[Bundler::GemHelpers.generic_local_platform]
|
67
|
+
gem spec.name, :path => path, :glob => glob, :platforms => gem_platforms
|
64
68
|
|
65
69
|
group(development_group) do
|
66
70
|
spec.development_dependencies.each do |dep|
|
@@ -90,9 +94,8 @@ module Bundler
|
|
90
94
|
if current.requirement != dep.requirement
|
91
95
|
if current.type == :development
|
92
96
|
@dependencies.delete current
|
93
|
-
elsif dep.type == :development
|
94
|
-
return
|
95
97
|
else
|
98
|
+
return if dep.type == :development
|
96
99
|
raise GemfileError, "You cannot specify the same gem twice with different version requirements.\n" \
|
97
100
|
"You specified: #{current.name} (#{current.requirement}) and #{dep.name} (#{dep.requirement})"
|
98
101
|
end
|
@@ -106,9 +109,8 @@ module Bundler
|
|
106
109
|
if current.source != dep.source
|
107
110
|
if current.type == :development
|
108
111
|
@dependencies.delete current
|
109
|
-
elsif dep.type == :development
|
110
|
-
return
|
111
112
|
else
|
113
|
+
return if dep.type == :development
|
112
114
|
raise GemfileError, "You cannot specify the same gem twice coming from different sources.\n" \
|
113
115
|
"You specified that #{dep.name} (#{dep.requirement}) should come from " \
|
114
116
|
"#{current.source || "an unspecified source"} and #{dep.source}\n"
|
@@ -143,7 +145,9 @@ module Bundler
|
|
143
145
|
end
|
144
146
|
|
145
147
|
def path(path, options = {}, &blk)
|
146
|
-
|
148
|
+
source_options = normalize_hash(options).merge("path" => Pathname.new(path), "root_path" => gemfile_root)
|
149
|
+
source = @sources.add_path_source(source_options)
|
150
|
+
with_source(source, &blk)
|
147
151
|
end
|
148
152
|
|
149
153
|
def git(uri, options = {}, &blk)
|
@@ -342,7 +346,8 @@ module Bundler
|
|
342
346
|
def validate_keys(command, opts, valid_keys)
|
343
347
|
invalid_keys = opts.keys - valid_keys
|
344
348
|
if invalid_keys.any?
|
345
|
-
message =
|
349
|
+
message = String.new
|
350
|
+
message << "You passed #{invalid_keys.map {|k| ":" + k }.join(", ")} "
|
346
351
|
message << if invalid_keys.size > 1
|
347
352
|
"as options for #{command}, but they are invalid."
|
348
353
|
else
|
@@ -447,7 +452,7 @@ module Bundler
|
|
447
452
|
@to_s ||= begin
|
448
453
|
trace_line, description = parse_line_number_from_description
|
449
454
|
|
450
|
-
m = "\n[!] "
|
455
|
+
m = String.new("\n[!] ")
|
451
456
|
m << description
|
452
457
|
m << ". Bundler cannot continue.\n"
|
453
458
|
|
@@ -486,5 +491,10 @@ module Bundler
|
|
486
491
|
[trace_line, description]
|
487
492
|
end
|
488
493
|
end
|
494
|
+
|
495
|
+
def gemfile_root
|
496
|
+
@gemfile ||= Bundler.default_gemfile
|
497
|
+
@gemfile.dirname
|
498
|
+
end
|
489
499
|
end
|
490
500
|
end
|
@@ -1,16 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module Bundler
|
2
3
|
# used for Creating Specifications from the Gemcutter Endpoint
|
3
4
|
class EndpointSpecification < Gem::Specification
|
5
|
+
ILLFORMED_MESSAGE = 'Ill-formed requirement ["#<YAML::Syck::DefaultKey'.freeze
|
4
6
|
include MatchPlatform
|
5
7
|
|
6
|
-
attr_reader :name, :version, :platform, :dependencies
|
8
|
+
attr_reader :name, :version, :platform, :dependencies, :required_rubygems_version, :required_ruby_version, :checksum
|
7
9
|
attr_accessor :source, :remote
|
8
10
|
|
9
|
-
def initialize(name, version, platform, dependencies)
|
11
|
+
def initialize(name, version, platform, dependencies, metadata = nil)
|
10
12
|
@name = name
|
11
|
-
@version = version
|
13
|
+
@version = Gem::Version.create version
|
12
14
|
@platform = platform
|
13
|
-
@dependencies = dependencies
|
15
|
+
@dependencies = dependencies.map {|dep, reqs| build_dependency(dep, reqs) }
|
16
|
+
|
17
|
+
parse_metadata(metadata)
|
14
18
|
end
|
15
19
|
|
16
20
|
def fetch_platform
|
@@ -80,10 +84,9 @@ module Bundler
|
|
80
84
|
end
|
81
85
|
|
82
86
|
def _local_specification
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
end
|
87
|
+
return unless @loaded_from && File.exist?(local_specification_path)
|
88
|
+
eval(File.read(local_specification_path)).tap do |spec|
|
89
|
+
spec.loaded_from = @loaded_from
|
87
90
|
end
|
88
91
|
end
|
89
92
|
|
@@ -96,5 +99,31 @@ module Bundler
|
|
96
99
|
def local_specification_path
|
97
100
|
"#{base_dir}/specifications/#{full_name}.gemspec"
|
98
101
|
end
|
102
|
+
|
103
|
+
def parse_metadata(data)
|
104
|
+
return unless data
|
105
|
+
data.each do |k, v|
|
106
|
+
next unless v
|
107
|
+
case k.to_s
|
108
|
+
when "checksum"
|
109
|
+
@checksum = v.last
|
110
|
+
when "rubygems"
|
111
|
+
@required_rubygems_version = Gem::Requirement.new(v)
|
112
|
+
when "ruby"
|
113
|
+
@required_ruby_version = Gem::Requirement.new(v)
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
def build_dependency(name, *requirements)
|
119
|
+
Gem::Dependency.new(name, *requirements)
|
120
|
+
rescue ArgumentError => e
|
121
|
+
raise unless e.message.include?(ILLFORMED_MESSAGE)
|
122
|
+
puts # we shouldn't print the error message on the "fetching info" status line
|
123
|
+
raise GemspecError,
|
124
|
+
"Unfortunately, the gem #{name} (#{version}) has an invalid " \
|
125
|
+
"gemspec.\nPlease ask the gem author to yank the bad version to fix " \
|
126
|
+
"this issue. For more information, see http://bit.ly/syck-defaultkey."
|
127
|
+
end
|
99
128
|
end
|
100
129
|
end
|
data/lib/bundler/env.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require "bundler/rubygems_integration"
|
2
3
|
require "bundler/source/git/git_proxy"
|
3
4
|
|
@@ -11,7 +12,7 @@ module Bundler
|
|
11
12
|
print_gemfile = options.delete(:print_gemfile)
|
12
13
|
print_gemspecs = options.delete(:print_gemspecs)
|
13
14
|
|
14
|
-
out = "Environment\n\n"
|
15
|
+
out = String.new("Environment\n\n")
|
15
16
|
out << " Bundler #{Bundler::VERSION}\n"
|
16
17
|
out << " Rubygems #{Gem::VERSION}\n"
|
17
18
|
out << " Ruby #{ruby_version}"
|
@@ -43,7 +44,7 @@ module Bundler
|
|
43
44
|
if print_gemspecs
|
44
45
|
dsl = Dsl.new.tap {|d| d.eval_gemfile(Bundler.default_gemfile) }
|
45
46
|
dsl.gemspecs.each do |gs|
|
46
|
-
out << "\n#{Pathname.new(gs).basename}
|
47
|
+
out << "\n#{Pathname.new(gs).basename}"
|
47
48
|
out << "\n\n " << read_file(gs).gsub(/\n/, "\n ") << "\n"
|
48
49
|
end
|
49
50
|
end
|
@@ -62,7 +63,7 @@ module Bundler
|
|
62
63
|
end
|
63
64
|
|
64
65
|
def ruby_version
|
65
|
-
str = "#{RUBY_VERSION}"
|
66
|
+
str = String.new("#{RUBY_VERSION}")
|
66
67
|
if RUBY_VERSION < "1.9"
|
67
68
|
str << " (#{RUBY_RELEASE_DATE}"
|
68
69
|
str << " patchlevel #{RUBY_PATCHLEVEL}" if defined? RUBY_PATCHLEVEL
|
data/lib/bundler/environment.rb
CHANGED
data/lib/bundler/errors.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module Bundler
|
2
3
|
class BundlerError < StandardError
|
3
4
|
def self.status_code(code)
|
@@ -5,14 +6,27 @@ module Bundler
|
|
5
6
|
end
|
6
7
|
end
|
7
8
|
|
8
|
-
class GemfileNotFound < BundlerError; status_code(10); end
|
9
|
-
class GemNotFound < BundlerError; status_code(7); end
|
10
9
|
class GemfileError < BundlerError; status_code(4); end
|
11
10
|
class InstallError < BundlerError; status_code(5); end
|
11
|
+
|
12
|
+
# Internal error, should be rescued
|
13
|
+
class VersionConflict < BundlerError
|
14
|
+
attr_reader :conflicts
|
15
|
+
|
16
|
+
def initialize(conflicts, msg = nil)
|
17
|
+
super(msg)
|
18
|
+
@conflicts = conflicts
|
19
|
+
end
|
20
|
+
|
21
|
+
status_code(6)
|
22
|
+
end
|
23
|
+
|
24
|
+
class GemNotFound < BundlerError; status_code(7); end
|
12
25
|
class InstallHookError < BundlerError; status_code(8); end
|
13
|
-
class
|
26
|
+
class GemfileNotFound < BundlerError; status_code(10); end
|
14
27
|
class GitError < BundlerError; status_code(11); end
|
15
28
|
class DeprecatedError < BundlerError; status_code(12); end
|
29
|
+
class PathError < BundlerError; status_code(13); end
|
16
30
|
class GemspecError < BundlerError; status_code(14); end
|
17
31
|
class InvalidOption < BundlerError; status_code(15); end
|
18
32
|
class ProductionError < BundlerError; status_code(16); end
|
@@ -25,42 +39,22 @@ module Bundler
|
|
25
39
|
class GemfileEvalError < GemfileError; end
|
26
40
|
class MarshalError < StandardError; end
|
27
41
|
|
28
|
-
# Internal errors, should be rescued
|
29
|
-
class VersionConflict < BundlerError
|
30
|
-
attr_reader :conflicts
|
31
|
-
|
32
|
-
def initialize(conflicts, msg = nil)
|
33
|
-
super(msg)
|
34
|
-
@conflicts = conflicts
|
35
|
-
end
|
36
|
-
|
37
|
-
status_code(6)
|
38
|
-
end
|
39
|
-
|
40
|
-
class GemRequireError < BundlerError
|
41
|
-
attr_reader :orig_exception
|
42
|
-
|
43
|
-
def initialize(orig_exception, msg)
|
44
|
-
super(msg)
|
45
|
-
@orig_exception = orig_exception
|
46
|
-
end
|
47
|
-
|
48
|
-
status_code(24)
|
49
|
-
end
|
50
|
-
|
51
42
|
class PermissionError < BundlerError
|
52
43
|
def initialize(path, permission_type = :write)
|
53
44
|
@path = path
|
54
45
|
@permission_type = permission_type
|
55
46
|
end
|
56
47
|
|
57
|
-
def
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
48
|
+
def action
|
49
|
+
case @permission_type
|
50
|
+
when :read then "read from"
|
51
|
+
when :write then "write to"
|
52
|
+
when :executable, :exec then "execute"
|
53
|
+
else @permission_type.to_s
|
63
54
|
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def message
|
64
58
|
"There was an error while trying to #{action} `#{@path}`. " \
|
65
59
|
"It is likely that you need to grant #{@permission_type} permissions " \
|
66
60
|
"for that path."
|
@@ -69,6 +63,21 @@ module Bundler
|
|
69
63
|
status_code(23)
|
70
64
|
end
|
71
65
|
|
66
|
+
class GemRequireError < BundlerError
|
67
|
+
attr_reader :orig_exception
|
68
|
+
|
69
|
+
def initialize(orig_exception, msg)
|
70
|
+
full_message = msg + "\nGem Load Error is: #{orig_exception.message}\n"\
|
71
|
+
"Backtrace for gem load error is:\n"\
|
72
|
+
"#{orig_exception.backtrace.join("\n")}\n"\
|
73
|
+
"Bundler Error Backtrace:\n"
|
74
|
+
super(full_message)
|
75
|
+
@orig_exception = orig_exception
|
76
|
+
end
|
77
|
+
|
78
|
+
status_code(24)
|
79
|
+
end
|
80
|
+
|
72
81
|
class YamlSyntaxError < BundlerError
|
73
82
|
attr_reader :orig_exception
|
74
83
|
|
@@ -79,4 +88,14 @@ module Bundler
|
|
79
88
|
|
80
89
|
status_code(25)
|
81
90
|
end
|
91
|
+
|
92
|
+
class TemporaryResourceError < PermissionError
|
93
|
+
def message
|
94
|
+
"There was an error while trying to #{action} `#{@path}`. " \
|
95
|
+
"Some resource was temporarily unavailable. It's suggested that you try" \
|
96
|
+
"the operation again."
|
97
|
+
end
|
98
|
+
|
99
|
+
status_code(26)
|
100
|
+
end
|
82
101
|
end
|