bundler 1.15.4 → 1.16.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 +5 -5
- data/CHANGELOG.md +43 -0
- data/README.md +12 -7
- data/exe/bundle +1 -1
- data/exe/bundle_ruby +4 -3
- data/lib/bundler.rb +47 -37
- data/lib/bundler/build_metadata.rb +38 -0
- data/lib/bundler/capistrano.rb +5 -0
- data/lib/bundler/cli.rb +155 -67
- data/lib/bundler/cli/add.rb +0 -1
- data/lib/bundler/cli/binstubs.rb +9 -7
- data/lib/bundler/cli/cache.rb +5 -4
- data/lib/bundler/cli/check.rb +3 -5
- data/lib/bundler/cli/clean.rb +5 -6
- data/lib/bundler/cli/common.rb +11 -2
- data/lib/bundler/cli/config.rb +2 -1
- data/lib/bundler/cli/console.rb +2 -1
- data/lib/bundler/cli/doctor.rb +1 -0
- data/lib/bundler/cli/exec.rb +2 -1
- data/lib/bundler/cli/gem.rb +3 -2
- data/lib/bundler/cli/info.rb +0 -1
- data/lib/bundler/cli/init.rb +17 -6
- data/lib/bundler/cli/inject.rb +1 -0
- data/lib/bundler/cli/install.rb +61 -61
- data/lib/bundler/cli/issue.rb +1 -1
- data/lib/bundler/cli/list.rb +22 -0
- data/lib/bundler/cli/lock.rb +0 -1
- data/lib/bundler/cli/open.rb +2 -2
- data/lib/bundler/cli/outdated.rb +13 -8
- data/lib/bundler/cli/package.rb +9 -6
- data/lib/bundler/cli/platform.rb +1 -0
- data/lib/bundler/cli/plugin.rb +1 -0
- data/lib/bundler/cli/pristine.rb +9 -2
- data/lib/bundler/cli/show.rb +0 -1
- data/lib/bundler/cli/update.rb +31 -5
- data/lib/bundler/cli/viz.rb +1 -0
- data/lib/bundler/compact_index_client.rb +1 -0
- data/lib/bundler/compact_index_client/cache.rb +1 -0
- data/lib/bundler/compact_index_client/updater.rb +3 -2
- data/lib/bundler/compatibility_guard.rb +14 -0
- data/lib/bundler/constants.rb +1 -0
- data/lib/bundler/current_ruby.rb +5 -4
- data/lib/bundler/definition.rb +140 -95
- data/lib/bundler/dep_proxy.rb +2 -0
- data/lib/bundler/dependency.rb +6 -7
- data/lib/bundler/deployment.rb +1 -1
- data/lib/bundler/deprecate.rb +1 -0
- data/lib/bundler/dsl.rb +97 -62
- data/lib/bundler/endpoint_specification.rb +9 -0
- data/lib/bundler/env.rb +63 -27
- data/lib/bundler/environment_preserver.rb +26 -6
- data/lib/bundler/errors.rb +1 -0
- data/lib/bundler/feature_flag.rb +39 -4
- data/lib/bundler/fetcher.rb +15 -8
- data/lib/bundler/fetcher/base.rb +1 -0
- data/lib/bundler/fetcher/compact_index.rb +2 -11
- data/lib/bundler/fetcher/dependency.rb +1 -0
- data/lib/bundler/fetcher/downloader.rb +1 -0
- data/lib/bundler/fetcher/index.rb +1 -0
- data/lib/bundler/friendly_errors.rb +2 -1
- data/lib/bundler/gem_helper.rb +14 -9
- data/lib/bundler/gem_helpers.rb +1 -0
- data/lib/bundler/gem_remote_fetcher.rb +1 -0
- data/lib/bundler/gem_tasks.rb +1 -0
- data/lib/bundler/gem_version_promoter.rb +1 -0
- data/lib/bundler/gemdeps.rb +1 -0
- data/lib/bundler/graph.rb +1 -0
- data/lib/bundler/index.rb +15 -8
- data/lib/bundler/injector.rb +25 -22
- data/lib/bundler/inline.rb +5 -7
- data/lib/bundler/installer.rb +93 -45
- data/lib/bundler/installer/gem_installer.rb +2 -0
- data/lib/bundler/installer/parallel_installer.rb +73 -42
- data/lib/bundler/installer/standalone.rb +1 -0
- data/lib/bundler/lazy_specification.rb +2 -1
- data/lib/bundler/lockfile_generator.rb +95 -0
- data/lib/bundler/lockfile_parser.rb +10 -4
- data/lib/bundler/match_platform.rb +1 -0
- data/lib/bundler/mirror.rb +6 -3
- data/lib/bundler/plugin.rb +1 -0
- data/lib/bundler/plugin/api/source.rb +8 -0
- data/lib/bundler/plugin/installer.rb +7 -6
- data/lib/bundler/plugin/source_list.rb +7 -8
- data/lib/bundler/process_lock.rb +24 -0
- data/lib/bundler/psyched_yaml.rb +1 -0
- data/lib/bundler/remote_specification.rb +1 -0
- data/lib/bundler/resolver.rb +138 -191
- data/lib/bundler/resolver/spec_group.rb +111 -0
- data/lib/bundler/retry.rb +1 -0
- data/lib/bundler/ruby_dsl.rb +1 -0
- data/lib/bundler/ruby_version.rb +1 -0
- data/lib/bundler/rubygems_ext.rb +5 -4
- data/lib/bundler/rubygems_gem_installer.rb +23 -0
- data/lib/bundler/rubygems_integration.rb +56 -27
- data/lib/bundler/runtime.rb +3 -5
- data/lib/bundler/settings.rb +177 -76
- data/lib/bundler/settings/validator.rb +79 -0
- data/lib/bundler/setup.rb +1 -0
- data/lib/bundler/shared_helpers.rb +86 -26
- data/lib/bundler/similarity_detector.rb +1 -0
- data/lib/bundler/source.rb +32 -0
- data/lib/bundler/source/gemspec.rb +1 -0
- data/lib/bundler/source/git.rb +21 -16
- data/lib/bundler/source/git/git_proxy.rb +14 -10
- data/lib/bundler/source/metadata.rb +63 -0
- data/lib/bundler/source/path.rb +8 -8
- data/lib/bundler/source/path/installer.rb +2 -0
- data/lib/bundler/source/rubygems.rb +131 -84
- data/lib/bundler/source/rubygems/remote.rb +3 -0
- data/lib/bundler/source_list.rb +75 -15
- data/lib/bundler/spec_set.rb +2 -1
- data/lib/bundler/ssl_certs/certificate_manager.rb +2 -1
- data/lib/bundler/stub_specification.rb +1 -0
- data/lib/bundler/templates/Executable +4 -0
- data/lib/bundler/templates/Executable.bundler +105 -0
- data/lib/bundler/templates/Gemfile +1 -0
- data/lib/bundler/templates/gems.rb +8 -0
- data/lib/bundler/templates/newgem/README.md.tt +1 -1
- data/lib/bundler/templates/newgem/gitignore.tt +0 -1
- data/lib/bundler/templates/newgem/newgem.gemspec.tt +4 -1
- data/lib/bundler/templates/newgem/rspec.tt +1 -0
- data/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +0 -2
- data/lib/bundler/ui.rb +1 -0
- data/lib/bundler/ui/rg_proxy.rb +1 -0
- data/lib/bundler/ui/shell.rb +15 -4
- data/lib/bundler/ui/silent.rb +1 -0
- data/lib/bundler/uri_credentials_filter.rb +1 -0
- data/lib/bundler/vendor/fileutils/lib/fileutils.rb +1638 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo.rb +2 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +26 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +1 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +3 -2
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +1 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +1 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +3 -2
- data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +69 -6
- data/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +2 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +1 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +3 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +487 -148
- data/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +1 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +8 -4
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
- data/lib/bundler/vendored_fileutils.rb +9 -0
- data/lib/bundler/vendored_molinillo.rb +1 -0
- data/lib/bundler/vendored_persistent.rb +34 -0
- data/lib/bundler/vendored_thor.rb +1 -0
- data/lib/bundler/version.rb +6 -2
- data/lib/bundler/version_ranges.rb +1 -0
- data/lib/bundler/vlad.rb +5 -0
- data/lib/bundler/worker.rb +1 -0
- data/lib/bundler/yaml_serializer.rb +3 -3
- data/man/bundle-add.1 +43 -0
- data/man/bundle-add.1.txt +40 -0
- data/man/bundle-binstubs.1 +40 -0
- data/man/bundle-binstubs.1.txt +48 -0
- data/man/bundle-binstubs.ronn +14 -0
- data/man/bundle-check.1 +31 -0
- data/man/bundle-check.1.txt +32 -0
- data/man/bundle-clean.1 +24 -0
- data/man/bundle-clean.1.txt +26 -0
- data/man/bundle-config.1 +455 -0
- data/man/bundle-config.1.txt +491 -0
- data/man/bundle-config.ronn +133 -79
- data/man/bundle-exec.1 +165 -0
- data/man/bundle-exec.1.txt +178 -0
- data/man/bundle-exec.ronn +7 -0
- data/man/bundle-gem.1 +80 -0
- data/man/bundle-gem.1.txt +91 -0
- data/man/bundle-gem.ronn +2 -1
- data/man/bundle-info.1 +20 -0
- data/man/bundle-info.1.txt +21 -0
- data/man/bundle-init.1 +20 -0
- data/man/bundle-init.1.txt +24 -0
- data/man/bundle-inject.1 +33 -0
- data/man/bundle-inject.1.txt +32 -0
- data/man/bundle-install.1 +305 -0
- data/man/bundle-install.1.txt +385 -0
- data/man/bundle-install.ronn +32 -32
- data/man/bundle-list.1 +20 -0
- data/man/bundle-list.1.txt +21 -0
- data/man/bundle-list.ronn +15 -0
- data/man/bundle-lock.1 +84 -0
- data/man/bundle-lock.1.txt +93 -0
- data/man/bundle-open.1 +32 -0
- data/man/bundle-open.1.txt +29 -0
- data/man/bundle-outdated.1 +151 -0
- data/man/bundle-outdated.1.txt +127 -0
- data/man/bundle-outdated.ronn +1 -1
- data/man/bundle-package.1 +55 -0
- data/man/bundle-package.1.txt +79 -0
- data/man/bundle-package.ronn +5 -0
- data/man/bundle-platform.1 +61 -0
- data/man/bundle-platform.1.txt +57 -0
- data/man/bundle-pristine.1 +34 -0
- data/man/bundle-pristine.1.txt +44 -0
- data/man/bundle-pristine.ronn +24 -3
- data/man/bundle-show.1 +23 -0
- data/man/bundle-show.1.txt +25 -0
- data/man/bundle-update.1 +390 -0
- data/man/bundle-update.1.txt +386 -0
- data/man/bundle-update.ronn +2 -2
- data/man/bundle-viz.1 +39 -0
- data/man/bundle-viz.1.txt +38 -0
- data/man/bundle-viz.ronn +5 -5
- data/man/bundle.1 +132 -0
- data/man/bundle.1.txt +113 -0
- data/man/bundle.ronn +5 -2
- data/man/gemfile.5 +679 -0
- data/man/gemfile.5.ronn +31 -0
- data/man/gemfile.5.txt +636 -0
- data/man/index.txt +23 -0
- metadata +21 -36
- data/.codeclimate.yml +0 -25
- data/.gitignore +0 -18
- data/.rspec +0 -3
- data/.rubocop.yml +0 -131
- data/.rubocop_todo.yml +0 -418
- data/.travis.yml +0 -122
- data/CODE_OF_CONDUCT.md +0 -42
- data/CONTRIBUTING.md +0 -17
- data/Rakefile +0 -338
- data/bin/rake +0 -19
- data/bin/rspec +0 -15
- data/bin/rubocop +0 -17
- data/bin/with_rubygems +0 -39
- data/bundler.gemspec +0 -48
- data/doc/README.md +0 -30
- data/doc/TROUBLESHOOTING.md +0 -64
- data/doc/contributing/BUG_TRIAGE.md +0 -36
- data/doc/contributing/COMMUNITY.md +0 -13
- data/doc/contributing/GETTING_HELP.md +0 -11
- data/doc/contributing/HOW_YOU_CAN_HELP.md +0 -27
- data/doc/contributing/ISSUES.md +0 -51
- data/doc/contributing/README.md +0 -38
- data/doc/development/NEW_FEATURES.md +0 -10
- data/doc/development/PULL_REQUESTS.md +0 -40
- data/doc/development/README.md +0 -19
- data/doc/development/RELEASING.md +0 -9
- data/doc/development/SETUP.md +0 -27
- data/doc/documentation/README.md +0 -29
- data/doc/documentation/VISION.md +0 -26
- data/doc/documentation/WRITING.md +0 -54
- data/task/release.rake +0 -116
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Bundler
|
3
4
|
class Source
|
4
5
|
class Rubygems
|
@@ -20,6 +21,8 @@ module Bundler
|
|
20
21
|
#
|
21
22
|
def cache_slug
|
22
23
|
@cache_slug ||= begin
|
24
|
+
return nil unless SharedHelpers.md5_available?
|
25
|
+
|
23
26
|
cache_uri = original_uri || uri
|
24
27
|
|
25
28
|
uri_parts = [cache_uri.host, cache_uri.user, cache_uri.port, cache_uri.path]
|
data/lib/bundler/source_list.rb
CHANGED
@@ -1,16 +1,21 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Bundler
|
3
4
|
class SourceList
|
4
5
|
attr_reader :path_sources,
|
5
6
|
:git_sources,
|
6
|
-
:plugin_sources
|
7
|
+
:plugin_sources,
|
8
|
+
:global_rubygems_source,
|
9
|
+
:metadata_source
|
7
10
|
|
8
11
|
def initialize
|
9
|
-
@path_sources
|
10
|
-
@git_sources
|
11
|
-
@plugin_sources
|
12
|
-
@
|
13
|
-
@
|
12
|
+
@path_sources = []
|
13
|
+
@git_sources = []
|
14
|
+
@plugin_sources = []
|
15
|
+
@global_rubygems_source = nil
|
16
|
+
@rubygems_aggregate = rubygems_aggregate_class.new
|
17
|
+
@rubygems_sources = []
|
18
|
+
@metadata_source = Source::Metadata.new
|
14
19
|
end
|
15
20
|
|
16
21
|
def add_path_source(options = {})
|
@@ -35,13 +40,28 @@ module Bundler
|
|
35
40
|
add_source_to_list Plugin.source(source).new(options), @plugin_sources
|
36
41
|
end
|
37
42
|
|
43
|
+
def global_rubygems_source=(uri)
|
44
|
+
if Bundler.feature_flag.lockfile_uses_separate_rubygems_sources?
|
45
|
+
@global_rubygems_source ||= rubygems_aggregate_class.new("remotes" => uri)
|
46
|
+
end
|
47
|
+
add_rubygems_remote(uri)
|
48
|
+
end
|
49
|
+
|
38
50
|
def add_rubygems_remote(uri)
|
51
|
+
if Bundler.feature_flag.lockfile_uses_separate_rubygems_sources?
|
52
|
+
return if Bundler.feature_flag.disable_multisource?
|
53
|
+
raise InvalidOption, "`lockfile_uses_separate_rubygems_sources` cannot be set without `disable_multisource` being set"
|
54
|
+
end
|
39
55
|
@rubygems_aggregate.add_remote(uri)
|
40
56
|
@rubygems_aggregate
|
41
57
|
end
|
42
58
|
|
59
|
+
def default_source
|
60
|
+
global_rubygems_source || @rubygems_aggregate
|
61
|
+
end
|
62
|
+
|
43
63
|
def rubygems_sources
|
44
|
-
@rubygems_sources + [
|
64
|
+
@rubygems_sources + [default_source]
|
45
65
|
end
|
46
66
|
|
47
67
|
def rubygems_remotes
|
@@ -49,18 +69,25 @@ module Bundler
|
|
49
69
|
end
|
50
70
|
|
51
71
|
def all_sources
|
52
|
-
path_sources + git_sources + plugin_sources + rubygems_sources
|
72
|
+
path_sources + git_sources + plugin_sources + rubygems_sources + [metadata_source]
|
53
73
|
end
|
54
74
|
|
55
75
|
def get(source)
|
56
|
-
source_list_for(source).find {|s| source
|
76
|
+
source_list_for(source).find {|s| equal_source?(source, s) || equivalent_source?(source, s) }
|
57
77
|
end
|
58
78
|
|
59
79
|
def lock_sources
|
60
|
-
|
61
|
-
|
80
|
+
if Bundler.feature_flag.lockfile_uses_separate_rubygems_sources?
|
81
|
+
[[default_source], @rubygems_sources, git_sources, path_sources, plugin_sources].map do |sources|
|
82
|
+
sources.sort_by(&:to_s)
|
83
|
+
end.flatten(1)
|
84
|
+
else
|
85
|
+
lock_sources = (path_sources + git_sources + plugin_sources).sort_by(&:to_s)
|
86
|
+
lock_sources << combine_rubygems_sources
|
87
|
+
end
|
62
88
|
end
|
63
89
|
|
90
|
+
# Returns true if there are changes
|
64
91
|
def replace_sources!(replacement_sources)
|
65
92
|
return true if replacement_sources.empty?
|
66
93
|
|
@@ -70,13 +97,14 @@ module Bundler
|
|
70
97
|
end
|
71
98
|
end
|
72
99
|
|
73
|
-
replacement_rubygems =
|
100
|
+
replacement_rubygems = !Bundler.feature_flag.lockfile_uses_separate_rubygems_sources? &&
|
74
101
|
replacement_sources.detect {|s| s.is_a?(Source::Rubygems) }
|
75
102
|
@rubygems_aggregate = replacement_rubygems if replacement_rubygems
|
76
103
|
|
77
|
-
|
78
|
-
|
79
|
-
|
104
|
+
return true if !equal_sources?(lock_sources, replacement_sources) && !equivalent_sources?(lock_sources, replacement_sources)
|
105
|
+
return true if replacement_rubygems && rubygems_remotes.to_set != replacement_rubygems.remotes.to_set
|
106
|
+
|
107
|
+
false
|
80
108
|
end
|
81
109
|
|
82
110
|
def cached!
|
@@ -93,6 +121,10 @@ module Bundler
|
|
93
121
|
|
94
122
|
private
|
95
123
|
|
124
|
+
def rubygems_aggregate_class
|
125
|
+
Source::Rubygems
|
126
|
+
end
|
127
|
+
|
96
128
|
def add_source_to_list(source, list)
|
97
129
|
list.unshift(source).uniq!
|
98
130
|
source
|
@@ -122,5 +154,33 @@ module Bundler
|
|
122
154
|
"protocol to keep your data secure."
|
123
155
|
end
|
124
156
|
end
|
157
|
+
|
158
|
+
def equal_sources?(lock_sources, replacement_sources)
|
159
|
+
lock_sources.to_set == replacement_sources.to_set
|
160
|
+
end
|
161
|
+
|
162
|
+
def equal_source?(source, other_source)
|
163
|
+
source == other_source
|
164
|
+
end
|
165
|
+
|
166
|
+
def equivalent_source?(source, other_source)
|
167
|
+
return false unless Bundler.settings[:allow_deployment_source_credential_changes] && source.is_a?(Source::Rubygems)
|
168
|
+
|
169
|
+
equivalent_rubygems_sources?([source], [other_source])
|
170
|
+
end
|
171
|
+
|
172
|
+
def equivalent_sources?(lock_sources, replacement_sources)
|
173
|
+
return false unless Bundler.settings[:allow_deployment_source_credential_changes]
|
174
|
+
|
175
|
+
lock_rubygems_sources, lock_other_sources = lock_sources.partition {|s| s.is_a?(Source::Rubygems) }
|
176
|
+
replacement_rubygems_sources, replacement_other_sources = replacement_sources.partition {|s| s.is_a?(Source::Rubygems) }
|
177
|
+
|
178
|
+
equivalent_rubygems_sources?(lock_rubygems_sources, replacement_rubygems_sources) && equal_sources?(lock_other_sources, replacement_other_sources)
|
179
|
+
end
|
180
|
+
|
181
|
+
def equivalent_rubygems_sources?(lock_sources, replacement_sources)
|
182
|
+
actual_remotes = replacement_sources.map(&:remotes).flatten.uniq
|
183
|
+
lock_sources.all? {|s| s.equivalent_remotes?(actual_remotes) }
|
184
|
+
end
|
125
185
|
end
|
126
186
|
end
|
data/lib/bundler/spec_set.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require "tsort"
|
3
4
|
require "forwardable"
|
4
5
|
require "set"
|
@@ -76,7 +77,7 @@ module Bundler
|
|
76
77
|
end
|
77
78
|
|
78
79
|
def materialize(deps, missing_specs = nil)
|
79
|
-
materialized = self.for(deps, [], false, true, missing_specs).to_a
|
80
|
+
materialized = self.for(deps, [], false, true, !missing_specs).to_a
|
80
81
|
deps = materialized.map(&:name).uniq
|
81
82
|
materialized.map! do |s|
|
82
83
|
next s unless s.is_a?(LazySpecification)
|
@@ -1,5 +1,6 @@
|
|
1
1
|
#!/usr/bin/env <%= Bundler.settings[:shebang] || RbConfig::CONFIG["ruby_install_name"] %>
|
2
2
|
# frozen_string_literal: true
|
3
|
+
|
3
4
|
#
|
4
5
|
# This file was generated by Bundler.
|
5
6
|
#
|
@@ -7,6 +8,9 @@
|
|
7
8
|
# this file is here to facilitate running it.
|
8
9
|
#
|
9
10
|
|
11
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
12
|
+
load(bundle_binstub) if File.file?(bundle_binstub)
|
13
|
+
|
10
14
|
require "pathname"
|
11
15
|
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../<%= relative_gemfile_path %>",
|
12
16
|
Pathname.new(__FILE__).realpath)
|
@@ -0,0 +1,105 @@
|
|
1
|
+
#!/usr/bin/env <%= Bundler.settings[:shebang] || RbConfig::CONFIG["ruby_install_name"] %>
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application '<%= executable %>' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "rubygems"
|
12
|
+
|
13
|
+
m = Module.new do
|
14
|
+
module_function
|
15
|
+
|
16
|
+
def invoked_as_script?
|
17
|
+
File.expand_path($0) == File.expand_path(__FILE__)
|
18
|
+
end
|
19
|
+
|
20
|
+
def env_var_version
|
21
|
+
ENV["BUNDLER_VERSION"]
|
22
|
+
end
|
23
|
+
|
24
|
+
def cli_arg_version
|
25
|
+
return unless invoked_as_script? # don't want to hijack other binstubs
|
26
|
+
return unless "update".start_with?(ARGV.first || " ") # must be running `bundle update`
|
27
|
+
bundler_version = nil
|
28
|
+
update_index = nil
|
29
|
+
ARGV.each_with_index do |a, i|
|
30
|
+
if update_index && update_index.succ == i && a =~ Gem::Version::ANCHORED_VERSION_PATTERN
|
31
|
+
bundler_version = a
|
32
|
+
end
|
33
|
+
next unless a =~ /\A--bundler(?:[= ](#{Gem::Version::VERSION_PATTERN}))?\z/
|
34
|
+
bundler_version = $1 || ">= 0.a"
|
35
|
+
update_index = i
|
36
|
+
end
|
37
|
+
bundler_version
|
38
|
+
end
|
39
|
+
|
40
|
+
def gemfile
|
41
|
+
gemfile = ENV["BUNDLE_GEMFILE"]
|
42
|
+
return gemfile if gemfile && !gemfile.empty?
|
43
|
+
|
44
|
+
File.expand_path("../<%= relative_gemfile_path %>", __FILE__)
|
45
|
+
end
|
46
|
+
|
47
|
+
def lockfile
|
48
|
+
lockfile =
|
49
|
+
case File.basename(gemfile)
|
50
|
+
when "gems.rb" then gemfile.sub(/\.rb$/, gemfile)
|
51
|
+
else "#{gemfile}.lock"
|
52
|
+
end
|
53
|
+
File.expand_path(lockfile)
|
54
|
+
end
|
55
|
+
|
56
|
+
def lockfile_version
|
57
|
+
return unless File.file?(lockfile)
|
58
|
+
lockfile_contents = File.read(lockfile)
|
59
|
+
return unless lockfile_contents =~ /\n\nBUNDLED WITH\n\s{2,}(#{Gem::Version::VERSION_PATTERN})\n/
|
60
|
+
Regexp.last_match(1)
|
61
|
+
end
|
62
|
+
|
63
|
+
def bundler_version
|
64
|
+
@bundler_version ||= begin
|
65
|
+
env_var_version || cli_arg_version ||
|
66
|
+
lockfile_version || "#{Gem::Requirement.default}.a"
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def load_bundler!
|
71
|
+
ENV["BUNDLE_GEMFILE"] ||= gemfile
|
72
|
+
|
73
|
+
# must dup string for RG < 1.8 compatibility
|
74
|
+
activate_bundler(bundler_version.dup)
|
75
|
+
end
|
76
|
+
|
77
|
+
def activate_bundler(bundler_version)
|
78
|
+
if Gem::Version.correct?(bundler_version) && Gem::Version.new(bundler_version).release < Gem::Version.new("2.0")
|
79
|
+
bundler_version = "< 2"
|
80
|
+
end
|
81
|
+
gem_error = activation_error_handling do
|
82
|
+
gem "bundler", bundler_version
|
83
|
+
end
|
84
|
+
return if gem_error.nil?
|
85
|
+
require_error = activation_error_handling do
|
86
|
+
require "bundler/version"
|
87
|
+
end
|
88
|
+
return if require_error.nil? && Gem::Requirement.new(bundler_version).satisfied_by?(Gem::Version.new(Bundler::VERSION))
|
89
|
+
warn "Activating bundler (#{bundler_version}) failed:\n#{gem_error.message}\n\nTo install the version of bundler this project requires, run `gem install bundler -v '#{bundler_version}'`"
|
90
|
+
exit 42
|
91
|
+
end
|
92
|
+
|
93
|
+
def activation_error_handling
|
94
|
+
yield
|
95
|
+
nil
|
96
|
+
rescue StandardError, LoadError => e
|
97
|
+
e
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
m.load_bundler!
|
102
|
+
|
103
|
+
if m.invoked_as_script?
|
104
|
+
load Gem.bin_path("<%= spec.name %>", "<%= executable %>")
|
105
|
+
end
|
@@ -37,7 +37,7 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/<%= co
|
|
37
37
|
|
38
38
|
## License
|
39
39
|
|
40
|
-
The gem is available as open source under the terms of the [MIT License](
|
40
|
+
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
41
41
|
<% end -%>
|
42
42
|
<% if config[:coc] -%>
|
43
43
|
|
@@ -1,4 +1,7 @@
|
|
1
|
+
<%- if RUBY_VERSION < "2.0.0" -%>
|
1
2
|
# coding: utf-8
|
3
|
+
<%- end -%>
|
4
|
+
|
2
5
|
lib = File.expand_path("../lib", __FILE__)
|
3
6
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
7
|
require "<%= config[:namespaced_path] %>/version"
|
@@ -9,7 +12,7 @@ Gem::Specification.new do |spec|
|
|
9
12
|
spec.authors = [<%= config[:author].inspect %>]
|
10
13
|
spec.email = [<%= config[:email].inspect %>]
|
11
14
|
|
12
|
-
spec.summary = %q{TODO: Write a short summary, because
|
15
|
+
spec.summary = %q{TODO: Write a short summary, because RubyGems requires one.}
|
13
16
|
spec.description = %q{TODO: Write a longer description or delete this line.}
|
14
17
|
spec.homepage = "TODO: Put your gem's website or public repo URL here."
|
15
18
|
<%- if config[:mit] -%>
|
data/lib/bundler/ui.rb
CHANGED
data/lib/bundler/ui/rg_proxy.rb
CHANGED
data/lib/bundler/ui/shell.rb
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require "bundler/vendored_thor"
|
3
4
|
|
4
5
|
module Bundler
|
5
6
|
module UI
|
6
7
|
class Shell
|
7
|
-
LEVELS = %w
|
8
|
+
LEVELS = %w[silent error warn confirm info debug].freeze
|
8
9
|
|
9
10
|
attr_writer :shell
|
10
11
|
|
11
12
|
def initialize(options = {})
|
12
|
-
if options["no-color"] ||
|
13
|
+
if options["no-color"] || !$stdout.tty?
|
13
14
|
Thor::Base.shell = Thor::Shell::Basic
|
14
15
|
end
|
15
16
|
@shell = Thor::Base.shell.new
|
@@ -30,13 +31,18 @@ module Bundler
|
|
30
31
|
end
|
31
32
|
|
32
33
|
def warn(msg, newline = nil)
|
34
|
+
return unless level("warn")
|
33
35
|
return if @warning_history.include? msg
|
34
36
|
@warning_history << msg
|
35
|
-
|
37
|
+
|
38
|
+
return tell_err(msg, :yellow, newline) if Bundler.feature_flag.error_on_stderr?
|
39
|
+
tell_me(msg, :yellow, newline)
|
36
40
|
end
|
37
41
|
|
38
42
|
def error(msg, newline = nil)
|
39
|
-
|
43
|
+
return unless level("error")
|
44
|
+
return tell_err(msg, :red, newline) if Bundler.feature_flag.error_on_stderr?
|
45
|
+
tell_me(msg, :red, newline)
|
40
46
|
end
|
41
47
|
|
42
48
|
def debug(msg, newline = nil)
|
@@ -103,6 +109,11 @@ module Bundler
|
|
103
109
|
end
|
104
110
|
|
105
111
|
def tell_err(message, color = nil, newline = nil)
|
112
|
+
newline = message.to_s !~ /( |\t)\Z/ unless newline
|
113
|
+
message = word_wrap(message) if newline.is_a?(Hash) && newline[:wrap]
|
114
|
+
|
115
|
+
color = nil if color && !$stderr.tty?
|
116
|
+
|
106
117
|
buffer = @shell.send(:prepare_message, message, *color)
|
107
118
|
buffer << "\n" if newline && !message.to_s.end_with?("\n")
|
108
119
|
|