bundler 1.13.6 → 1.17.3
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 +554 -9
- data/README.md +28 -5
- data/bundler.gemspec +40 -11
- data/exe/bundle +4 -8
- data/exe/bundle_ruby +4 -3
- data/lib/bundler.rb +162 -68
- data/lib/bundler/build_metadata.rb +53 -0
- data/lib/bundler/capistrano.rb +5 -0
- data/lib/bundler/cli.rb +360 -118
- data/lib/bundler/cli/add.rb +35 -0
- data/lib/bundler/cli/binstubs.rb +18 -10
- data/lib/bundler/cli/cache.rb +6 -5
- data/lib/bundler/cli/check.rb +4 -6
- data/lib/bundler/cli/clean.rb +6 -7
- data/lib/bundler/cli/common.rb +47 -1
- data/lib/bundler/cli/config.rb +26 -7
- data/lib/bundler/cli/console.rb +2 -1
- data/lib/bundler/cli/doctor.rb +63 -18
- data/lib/bundler/cli/exec.rb +12 -5
- data/lib/bundler/cli/gem.rb +59 -21
- data/lib/bundler/cli/info.rb +50 -0
- data/lib/bundler/cli/init.rb +21 -7
- data/lib/bundler/cli/inject.rb +13 -4
- data/lib/bundler/cli/install.rb +72 -101
- data/lib/bundler/cli/issue.rb +40 -0
- data/lib/bundler/cli/list.rb +58 -0
- data/lib/bundler/cli/lock.rb +9 -6
- data/lib/bundler/cli/open.rb +4 -3
- data/lib/bundler/cli/outdated.rb +175 -60
- data/lib/bundler/cli/package.rb +9 -6
- data/lib/bundler/cli/platform.rb +2 -1
- data/lib/bundler/cli/plugin.rb +1 -0
- data/lib/bundler/cli/pristine.rb +47 -0
- data/lib/bundler/cli/remove.rb +18 -0
- data/lib/bundler/cli/show.rb +2 -2
- data/lib/bundler/cli/update.rb +44 -34
- data/lib/bundler/cli/viz.rb +5 -1
- data/lib/bundler/compact_index_client.rb +109 -0
- data/lib/bundler/compact_index_client/cache.rb +118 -0
- data/lib/bundler/compact_index_client/updater.rb +116 -0
- data/lib/bundler/compatibility_guard.rb +14 -0
- data/lib/bundler/constants.rb +1 -0
- data/lib/bundler/current_ruby.rb +17 -8
- data/lib/bundler/definition.rb +353 -182
- data/lib/bundler/dep_proxy.rb +3 -1
- data/lib/bundler/dependency.rb +22 -10
- data/lib/bundler/deployment.rb +1 -1
- data/lib/bundler/deprecate.rb +15 -3
- data/lib/bundler/dsl.rb +122 -64
- data/lib/bundler/endpoint_specification.rb +13 -3
- data/lib/bundler/env.rb +110 -38
- data/lib/bundler/environment_preserver.rb +27 -6
- data/lib/bundler/errors.rb +24 -0
- data/lib/bundler/feature_flag.rb +74 -0
- data/lib/bundler/fetcher.rb +18 -11
- data/lib/bundler/fetcher/base.rb +1 -0
- data/lib/bundler/fetcher/compact_index.rb +7 -5
- data/lib/bundler/fetcher/dependency.rb +3 -2
- data/lib/bundler/fetcher/downloader.rb +25 -7
- data/lib/bundler/fetcher/index.rb +3 -2
- data/lib/bundler/friendly_errors.rb +33 -7
- data/lib/bundler/gem_helper.rb +25 -11
- data/lib/bundler/gem_helpers.rb +70 -1
- data/lib/bundler/gem_remote_fetcher.rb +1 -0
- data/lib/bundler/gem_tasks.rb +1 -0
- data/lib/bundler/gem_version_promoter.rb +17 -2
- data/lib/bundler/gemdeps.rb +29 -0
- data/lib/bundler/graph.rb +1 -0
- data/lib/bundler/index.rb +28 -15
- data/lib/bundler/injector.rb +216 -33
- data/lib/bundler/inline.rb +12 -12
- data/lib/bundler/installer.rb +139 -53
- data/lib/bundler/installer/gem_installer.rb +15 -5
- data/lib/bundler/installer/parallel_installer.rb +113 -28
- data/lib/bundler/installer/standalone.rb +1 -0
- data/lib/bundler/lazy_specification.rb +31 -3
- data/lib/bundler/lockfile_generator.rb +95 -0
- data/lib/bundler/lockfile_parser.rb +50 -37
- data/lib/bundler/match_platform.rb +13 -3
- data/lib/bundler/mirror.rb +10 -5
- data/lib/bundler/plugin.rb +22 -8
- data/lib/bundler/plugin/api.rb +2 -1
- data/lib/bundler/plugin/api/source.rb +17 -4
- data/lib/bundler/plugin/events.rb +61 -0
- data/lib/bundler/plugin/index.rb +9 -2
- 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 +10 -0
- data/lib/bundler/remote_specification.rb +30 -1
- data/lib/bundler/resolver.rb +187 -194
- data/lib/bundler/resolver/spec_group.rb +106 -0
- data/lib/bundler/retry.rb +5 -1
- data/lib/bundler/ruby_dsl.rb +1 -0
- data/lib/bundler/ruby_version.rb +12 -2
- data/lib/bundler/rubygems_ext.rb +23 -8
- data/lib/bundler/rubygems_gem_installer.rb +90 -0
- data/lib/bundler/rubygems_integration.rb +193 -70
- data/lib/bundler/runtime.rb +39 -22
- data/lib/bundler/settings.rb +245 -85
- data/lib/bundler/settings/validator.rb +102 -0
- data/lib/bundler/setup.rb +4 -7
- data/lib/bundler/shared_helpers.rb +183 -40
- data/lib/bundler/similarity_detector.rb +1 -0
- data/lib/bundler/source.rb +58 -1
- data/lib/bundler/source/gemspec.rb +1 -0
- data/lib/bundler/source/git.rb +52 -23
- data/lib/bundler/source/git/git_proxy.rb +30 -14
- data/lib/bundler/source/metadata.rb +62 -0
- data/lib/bundler/source/path.rb +42 -16
- data/lib/bundler/source/path/installer.rb +4 -2
- data/lib/bundler/source/rubygems.rb +171 -82
- data/lib/bundler/source/rubygems/remote.rb +12 -2
- data/lib/bundler/source_list.rb +75 -15
- data/lib/bundler/spec_set.rb +67 -32
- data/lib/bundler/ssl_certs/certificate_manager.rb +2 -1
- data/lib/bundler/stub_specification.rb +86 -2
- data/lib/bundler/templates/.document +1 -0
- data/lib/bundler/templates/Executable +13 -1
- data/lib/bundler/templates/Executable.bundler +105 -0
- data/lib/bundler/templates/Executable.standalone +5 -5
- data/lib/bundler/templates/Gemfile +3 -0
- data/lib/bundler/templates/gems.rb +8 -0
- data/lib/bundler/templates/newgem/Gemfile.tt +4 -2
- data/lib/bundler/templates/newgem/LICENSE.txt.tt +1 -1
- data/lib/bundler/templates/newgem/README.md.tt +14 -8
- data/lib/bundler/templates/newgem/Rakefile.tt +5 -5
- data/lib/bundler/templates/newgem/bin/console.tt +1 -1
- data/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +4 -4
- data/lib/bundler/templates/newgem/ext/newgem/newgem.h.tt +3 -3
- data/lib/bundler/templates/newgem/gitignore.tt +5 -1
- data/lib/bundler/templates/newgem/lib/newgem.rb.tt +7 -6
- data/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +4 -4
- data/lib/bundler/templates/newgem/newgem.gemspec.tt +21 -12
- data/lib/bundler/templates/newgem/rspec.tt +1 -0
- data/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +1 -3
- data/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +13 -1
- data/lib/bundler/templates/newgem/test/newgem_test.rb.tt +1 -1
- data/lib/bundler/templates/newgem/test/test_helper.rb.tt +3 -3
- data/lib/bundler/templates/newgem/{.travis.yml.tt → travis.yml.tt} +2 -0
- data/lib/bundler/ui.rb +1 -0
- data/lib/bundler/ui/rg_proxy.rb +1 -0
- data/lib/bundler/ui/shell.rb +30 -10
- data/lib/bundler/ui/silent.rb +21 -1
- 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 +26 -6
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +2 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +12 -4
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +3 -2
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +63 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +11 -3
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +13 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +3 -2
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +3 -2
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +18 -5
- data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +75 -7
- 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 +499 -128
- 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 → net-http-persistent/lib/net}/http/faster.rb +1 -0
- data/lib/bundler/vendor/{net → net-http-persistent/lib/net}/http/persistent.rb +27 -24
- data/lib/bundler/vendor/{net → net-http-persistent/lib/net}/http/persistent/ssl_reuse.rb +2 -1
- data/lib/bundler/vendor/thor/lib/thor.rb +46 -21
- data/lib/bundler/vendor/thor/lib/thor/actions.rb +24 -22
- data/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +2 -1
- data/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
- data/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +2 -2
- data/lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb +16 -8
- data/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +66 -18
- data/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +17 -15
- data/lib/bundler/vendor/thor/lib/thor/base.rb +55 -32
- data/lib/bundler/vendor/thor/lib/thor/command.rb +13 -11
- data/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +21 -1
- data/lib/bundler/vendor/thor/lib/thor/core_ext/io_binary_read.rb +7 -5
- data/lib/bundler/vendor/thor/lib/thor/core_ext/ordered_hash.rb +94 -63
- data/lib/bundler/vendor/thor/lib/thor/error.rb +3 -3
- data/lib/bundler/vendor/thor/lib/thor/group.rb +13 -13
- data/lib/bundler/vendor/thor/lib/thor/invocation.rb +4 -5
- data/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +2 -0
- data/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +4 -7
- data/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +16 -16
- data/lib/bundler/vendor/thor/lib/thor/parser/option.rb +42 -21
- data/lib/bundler/vendor/thor/lib/thor/parser/options.rb +13 -10
- data/lib/bundler/vendor/thor/lib/thor/runner.rb +31 -29
- data/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +49 -33
- data/lib/bundler/vendor/thor/lib/thor/shell/color.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/shell/html.rb +4 -4
- data/lib/bundler/vendor/thor/lib/thor/util.rb +8 -7
- data/lib/bundler/vendor/thor/lib/thor/version.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 +43 -3
- data/lib/bundler/vendored_thor.rb +6 -2
- data/lib/bundler/version.rb +19 -2
- data/lib/bundler/version_ranges.rb +76 -0
- data/lib/bundler/vlad.rb +5 -0
- data/lib/bundler/worker.rb +30 -6
- data/lib/bundler/yaml_serializer.rb +4 -4
- data/man/bundle-add.1 +58 -0
- data/man/bundle-add.1.txt +52 -0
- data/man/bundle-add.ronn +40 -0
- data/{lib/bundler/man/bundle-binstubs → man/bundle-binstubs.1} +11 -1
- data/man/bundle-binstubs.1.txt +48 -0
- data/man/bundle-binstubs.ronn +15 -1
- data/man/bundle-check.1 +31 -0
- data/man/bundle-check.1.txt +33 -0
- data/man/bundle-check.ronn +26 -0
- data/man/bundle-clean.1 +24 -0
- data/man/bundle-clean.1.txt +26 -0
- data/man/bundle-clean.ronn +18 -0
- data/man/bundle-config.1 +497 -0
- data/man/bundle-config.1.txt +529 -0
- data/man/bundle-config.ronn +233 -61
- data/man/bundle-doctor.1 +44 -0
- data/man/bundle-doctor.1.txt +44 -0
- data/man/bundle-doctor.ronn +33 -0
- data/{lib/bundler/man/bundle-exec → man/bundle-exec.1} +6 -3
- data/man/bundle-exec.1.txt +178 -0
- data/man/bundle-exec.ronn +10 -3
- data/{lib/bundler/man/bundle-gem → man/bundle-gem.1} +4 -4
- data/man/bundle-gem.1.txt +91 -0
- data/man/bundle-gem.ronn +3 -2
- data/man/bundle-info.1 +20 -0
- data/man/bundle-info.1.txt +21 -0
- data/man/bundle-info.ronn +17 -0
- data/man/bundle-init.1 +25 -0
- data/man/bundle-init.1.txt +34 -0
- data/man/bundle-init.ronn +29 -0
- data/man/bundle-inject.1 +33 -0
- data/man/bundle-inject.1.txt +32 -0
- data/man/bundle-inject.ronn +22 -0
- data/{lib/bundler/man/bundle-install → man/bundle-install.1} +32 -29
- data/man/bundle-install.1.txt +396 -0
- data/man/bundle-install.ronn +45 -36
- data/man/bundle-list.1 +50 -0
- data/man/bundle-list.1.txt +43 -0
- data/man/bundle-list.ronn +33 -0
- data/{lib/bundler/man/bundle-lock → man/bundle-lock.1} +43 -2
- data/man/bundle-lock.1.txt +93 -0
- data/man/bundle-lock.ronn +47 -0
- data/man/bundle-open.1 +32 -0
- data/man/bundle-open.1.txt +29 -0
- data/man/bundle-open.ronn +19 -0
- data/man/bundle-outdated.1 +155 -0
- data/man/bundle-outdated.1.txt +131 -0
- data/man/bundle-outdated.ronn +111 -0
- data/{lib/bundler/man/bundle-package → man/bundle-package.1} +6 -3
- data/man/bundle-package.1.txt +79 -0
- data/man/bundle-package.ronn +7 -2
- data/{lib/bundler/man/bundle-platform → man/bundle-platform.1} +1 -1
- 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 +34 -0
- data/man/bundle-remove.1 +31 -0
- data/man/bundle-remove.1.txt +34 -0
- data/man/bundle-remove.ronn +23 -0
- data/man/bundle-show.1 +23 -0
- data/man/bundle-show.1.txt +27 -0
- data/man/bundle-show.ronn +21 -0
- data/man/bundle-update.1 +394 -0
- data/man/bundle-update.1.txt +391 -0
- data/man/bundle-update.ronn +172 -16
- data/man/bundle-viz.1 +39 -0
- data/man/bundle-viz.1.txt +39 -0
- data/man/bundle-viz.ronn +30 -0
- data/{lib/bundler/man/bundle → man/bundle.1} +44 -28
- data/man/bundle.1.txt +116 -0
- data/man/bundle.ronn +39 -27
- data/{lib/bundler/man → man}/gemfile.5 +67 -84
- data/man/gemfile.5.ronn +77 -55
- data/man/gemfile.5.txt +653 -0
- data/man/index.txt +25 -8
- metadata +118 -58
- data/.codeclimate.yml +0 -25
- data/.gitignore +0 -16
- data/.rspec +0 -3
- data/.rubocop.yml +0 -128
- data/.rubocop_todo.yml +0 -248
- data/.travis.yml +0 -108
- data/CODE_OF_CONDUCT.md +0 -42
- data/CONTRIBUTING.md +0 -36
- data/DEVELOPMENT.md +0 -148
- data/ISSUES.md +0 -100
- data/Rakefile +0 -333
- data/bin/rake +0 -19
- data/bin/rspec +0 -15
- data/bin/rubocop +0 -17
- data/bin/with_rubygems +0 -39
- data/lib/bundler/man/bundle-binstubs.txt +0 -33
- data/lib/bundler/man/bundle-config +0 -254
- data/lib/bundler/man/bundle-config.txt +0 -282
- data/lib/bundler/man/bundle-exec.txt +0 -171
- data/lib/bundler/man/bundle-gem.txt +0 -90
- data/lib/bundler/man/bundle-install.txt +0 -385
- data/lib/bundler/man/bundle-lock.txt +0 -52
- data/lib/bundler/man/bundle-package.txt +0 -74
- data/lib/bundler/man/bundle-platform.txt +0 -57
- data/lib/bundler/man/bundle-update +0 -221
- data/lib/bundler/man/bundle-update.txt +0 -227
- data/lib/bundler/man/bundle.txt +0 -104
- data/lib/bundler/man/gemfile.5.txt +0 -636
- data/lib/bundler/postit_trampoline.rb +0 -68
- data/lib/bundler/vendor/compact_index_client/lib/compact_index_client.rb +0 -79
- data/lib/bundler/vendor/compact_index_client/lib/compact_index_client/cache.rb +0 -112
- data/lib/bundler/vendor/compact_index_client/lib/compact_index_client/updater.rb +0 -80
- data/lib/bundler/vendor/compact_index_client/lib/compact_index_client/version.rb +0 -4
- data/lib/bundler/vendor/postit/lib/postit.rb +0 -15
- data/lib/bundler/vendor/postit/lib/postit/environment.rb +0 -44
- data/lib/bundler/vendor/postit/lib/postit/installer.rb +0 -28
- data/lib/bundler/vendor/postit/lib/postit/parser.rb +0 -21
- data/lib/bundler/vendor/postit/lib/postit/setup.rb +0 -12
- data/lib/bundler/vendor/postit/lib/postit/version.rb +0 -3
@@ -9,7 +9,7 @@ class Bundler::Thor
|
|
9
9
|
# it will use a colored log, otherwise it will use a basic one without color.
|
10
10
|
#
|
11
11
|
def shell
|
12
|
-
@shell ||= if ENV["THOR_SHELL"] && ENV["THOR_SHELL"].
|
12
|
+
@shell ||= if ENV["THOR_SHELL"] && !ENV["THOR_SHELL"].empty?
|
13
13
|
Bundler::Thor::Shell.const_get(ENV["THOR_SHELL"])
|
14
14
|
elsif RbConfig::CONFIG["host_os"] =~ /mswin|mingw/ && !ENV["ANSICON"]
|
15
15
|
Bundler::Thor::Shell::Basic
|
@@ -1,16 +1,16 @@
|
|
1
|
-
require "tempfile"
|
2
|
-
require "io/console" if RUBY_VERSION > "1.9.2"
|
3
|
-
|
4
1
|
class Bundler::Thor
|
5
2
|
module Shell
|
6
|
-
class Basic
|
3
|
+
class Basic
|
7
4
|
attr_accessor :base
|
8
5
|
attr_reader :padding
|
9
6
|
|
10
7
|
# Initialize base, mute and padding to nil.
|
11
8
|
#
|
12
9
|
def initialize #:nodoc:
|
13
|
-
@base
|
10
|
+
@base = nil
|
11
|
+
@mute = false
|
12
|
+
@padding = 0
|
13
|
+
@always_force = false
|
14
14
|
end
|
15
15
|
|
16
16
|
# Mute everything that's inside given block
|
@@ -24,7 +24,7 @@ class Bundler::Thor
|
|
24
24
|
|
25
25
|
# Check if base is muted
|
26
26
|
#
|
27
|
-
def mute?
|
27
|
+
def mute?
|
28
28
|
@mute
|
29
29
|
end
|
30
30
|
|
@@ -34,6 +34,15 @@ class Bundler::Thor
|
|
34
34
|
@padding = [0, value].max
|
35
35
|
end
|
36
36
|
|
37
|
+
# Sets the output padding while executing a block and resets it.
|
38
|
+
#
|
39
|
+
def indent(count = 1)
|
40
|
+
orig_padding = padding
|
41
|
+
self.padding = padding + count
|
42
|
+
yield
|
43
|
+
self.padding = orig_padding
|
44
|
+
end
|
45
|
+
|
37
46
|
# Asks something to the user and receives a response.
|
38
47
|
#
|
39
48
|
# If asked to limit the correct responses, you can pass in an
|
@@ -98,7 +107,7 @@ class Bundler::Thor
|
|
98
107
|
status = set_color status, color, true if color
|
99
108
|
|
100
109
|
buffer = "#{status}#{spaces}#{message}"
|
101
|
-
buffer
|
110
|
+
buffer = "#{buffer}\n" unless buffer.end_with?("\n")
|
102
111
|
|
103
112
|
stdout.print(buffer)
|
104
113
|
stdout.flush
|
@@ -148,10 +157,12 @@ class Bundler::Thor
|
|
148
157
|
def print_table(array, options = {}) # rubocop:disable MethodLength
|
149
158
|
return if array.empty?
|
150
159
|
|
151
|
-
formats
|
160
|
+
formats = []
|
161
|
+
indent = options[:indent].to_i
|
162
|
+
colwidth = options[:colwidth]
|
152
163
|
options[:truncate] = terminal_width if options[:truncate] == true
|
153
164
|
|
154
|
-
formats << "%-#{colwidth + 2}s" if colwidth
|
165
|
+
formats << "%-#{colwidth + 2}s".dup if colwidth
|
155
166
|
start = colwidth ? 1 : 0
|
156
167
|
|
157
168
|
colcount = array.max { |a, b| a.size <=> b.size }.size
|
@@ -161,32 +172,32 @@ class Bundler::Thor
|
|
161
172
|
start.upto(colcount - 1) do |index|
|
162
173
|
maxima = array.map { |row| row[index] ? row[index].to_s.size : 0 }.max
|
163
174
|
maximas << maxima
|
164
|
-
if index == colcount - 1
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
175
|
+
formats << if index == colcount - 1
|
176
|
+
# Don't output 2 trailing spaces when printing the last column
|
177
|
+
"%-s".dup
|
178
|
+
else
|
179
|
+
"%-#{maxima + 2}s".dup
|
180
|
+
end
|
170
181
|
end
|
171
182
|
|
172
183
|
formats[0] = formats[0].insert(0, " " * indent)
|
173
184
|
formats << "%s"
|
174
185
|
|
175
186
|
array.each do |row|
|
176
|
-
sentence = ""
|
187
|
+
sentence = "".dup
|
177
188
|
|
178
189
|
row.each_with_index do |column, index|
|
179
190
|
maxima = maximas[index]
|
180
191
|
|
181
|
-
if column.is_a?(Numeric)
|
192
|
+
f = if column.is_a?(Numeric)
|
182
193
|
if index == row.size - 1
|
183
194
|
# Don't output 2 trailing spaces when printing the last column
|
184
|
-
|
195
|
+
"%#{maxima}s"
|
185
196
|
else
|
186
|
-
|
197
|
+
"%#{maxima}s "
|
187
198
|
end
|
188
199
|
else
|
189
|
-
|
200
|
+
formats[index]
|
190
201
|
end
|
191
202
|
sentence << f % column.to_s
|
192
203
|
end
|
@@ -211,7 +222,7 @@ class Bundler::Thor
|
|
211
222
|
paras = message.split("\n\n")
|
212
223
|
|
213
224
|
paras.map! do |unwrapped|
|
214
|
-
unwrapped.strip.
|
225
|
+
unwrapped.strip.tr("\n", " ").squeeze(" ").gsub(/.{1,#{width}}(?:\s|\Z)/) { ($& + 5.chr).gsub(/\n\005/, "\n").gsub(/\005/, "\n") }
|
215
226
|
end
|
216
227
|
|
217
228
|
paras.each do |para|
|
@@ -230,7 +241,7 @@ class Bundler::Thor
|
|
230
241
|
# destination<String>:: the destination file to solve conflicts
|
231
242
|
# block<Proc>:: an optional block that returns the value to be used in diff
|
232
243
|
#
|
233
|
-
def file_collision(destination)
|
244
|
+
def file_collision(destination)
|
234
245
|
return true if @always_force
|
235
246
|
options = block_given? ? "[Ynaqdh]" : "[Ynaqh]"
|
236
247
|
|
@@ -241,6 +252,9 @@ class Bundler::Thor
|
|
241
252
|
)
|
242
253
|
|
243
254
|
case answer
|
255
|
+
when nil
|
256
|
+
say ""
|
257
|
+
return true
|
244
258
|
when is?(:yes), is?(:force), ""
|
245
259
|
return true
|
246
260
|
when is?(:no), is?(:skip)
|
@@ -249,7 +263,7 @@ class Bundler::Thor
|
|
249
263
|
return @always_force = true
|
250
264
|
when is?(:quit)
|
251
265
|
say "Aborting..."
|
252
|
-
|
266
|
+
raise SystemExit
|
253
267
|
when is?(:diff)
|
254
268
|
show_diff(destination, yield) if block_given?
|
255
269
|
say "Retrying..."
|
@@ -262,10 +276,10 @@ class Bundler::Thor
|
|
262
276
|
# This code was copied from Rake, available under MIT-LICENSE
|
263
277
|
# Copyright (c) 2003, 2004 Jim Weirich
|
264
278
|
def terminal_width
|
265
|
-
if ENV["THOR_COLUMNS"]
|
266
|
-
|
279
|
+
result = if ENV["THOR_COLUMNS"]
|
280
|
+
ENV["THOR_COLUMNS"].to_i
|
267
281
|
else
|
268
|
-
|
282
|
+
unix? ? dynamic_width : 80
|
269
283
|
end
|
270
284
|
result < 10 ? 80 : result
|
271
285
|
rescue
|
@@ -284,7 +298,7 @@ class Bundler::Thor
|
|
284
298
|
# Apply color to the given string with optional bold. Disabled in the
|
285
299
|
# Bundler::Thor::Shell::Basic class.
|
286
300
|
#
|
287
|
-
def set_color(string, *
|
301
|
+
def set_color(string, *) #:nodoc:
|
288
302
|
string
|
289
303
|
end
|
290
304
|
|
@@ -336,6 +350,7 @@ class Bundler::Thor
|
|
336
350
|
def show_diff(destination, content) #:nodoc:
|
337
351
|
diff_cmd = ENV["THOR_DIFF"] || ENV["RAILS_DIFF"] || "diff -u"
|
338
352
|
|
353
|
+
require "tempfile"
|
339
354
|
Tempfile.open(File.basename(destination), File.dirname(destination)) do |temp|
|
340
355
|
temp.write content
|
341
356
|
temp.rewind
|
@@ -353,11 +368,11 @@ class Bundler::Thor
|
|
353
368
|
end
|
354
369
|
|
355
370
|
def dynamic_width_stty
|
356
|
-
|
371
|
+
`stty size 2>/dev/null`.split[1].to_i
|
357
372
|
end
|
358
373
|
|
359
374
|
def dynamic_width_tput
|
360
|
-
|
375
|
+
`tput cols 2>/dev/null`.to_i
|
361
376
|
end
|
362
377
|
|
363
378
|
def unix?
|
@@ -370,7 +385,7 @@ class Bundler::Thor
|
|
370
385
|
if chars.length <= width
|
371
386
|
chars.join
|
372
387
|
else
|
373
|
-
|
388
|
+
chars[0, width - 3].join + "..."
|
374
389
|
end
|
375
390
|
end
|
376
391
|
end
|
@@ -381,7 +396,8 @@ class Bundler::Thor
|
|
381
396
|
end
|
382
397
|
else
|
383
398
|
def as_unicode
|
384
|
-
old
|
399
|
+
old = $KCODE
|
400
|
+
$KCODE = "U"
|
385
401
|
yield
|
386
402
|
ensure
|
387
403
|
$KCODE = old
|
@@ -391,12 +407,12 @@ class Bundler::Thor
|
|
391
407
|
def ask_simply(statement, color, options)
|
392
408
|
default = options[:default]
|
393
409
|
message = [statement, ("(#{default})" if default), nil].uniq.join(" ")
|
394
|
-
message = prepare_message(message, color)
|
410
|
+
message = prepare_message(message, *color)
|
395
411
|
result = Bundler::Thor::LineEditor.readline(message, options)
|
396
412
|
|
397
413
|
return unless result
|
398
414
|
|
399
|
-
result.strip
|
415
|
+
result = result.strip
|
400
416
|
|
401
417
|
if default && result == ""
|
402
418
|
default
|
@@ -51,13 +51,13 @@ class Bundler::Thor
|
|
51
51
|
def set_color(string, *colors)
|
52
52
|
if colors.all? { |color| color.is_a?(Symbol) || color.is_a?(String) }
|
53
53
|
html_colors = colors.map { |color| lookup_color(color) }
|
54
|
-
"<span style=\"#{html_colors.join(
|
54
|
+
"<span style=\"#{html_colors.join('; ')};\">#{string}</span>"
|
55
55
|
else
|
56
56
|
color, bold = colors
|
57
57
|
html_color = self.class.const_get(color.to_s.upcase) if color.is_a?(Symbol)
|
58
58
|
styles = [html_color]
|
59
59
|
styles << BOLD if bold
|
60
|
-
"<span style=\"#{styles.join(
|
60
|
+
"<span style=\"#{styles.join('; ')};\">#{string}</span>"
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
@@ -68,7 +68,7 @@ class Bundler::Thor
|
|
68
68
|
#
|
69
69
|
# TODO: Implement #ask for Bundler::Thor::Shell::HTML
|
70
70
|
def ask(statement, color = nil)
|
71
|
-
|
71
|
+
raise NotImplementedError, "Implement #ask for Bundler::Thor::Shell::HTML"
|
72
72
|
end
|
73
73
|
|
74
74
|
protected
|
@@ -111,7 +111,7 @@ class Bundler::Thor
|
|
111
111
|
# for diff.
|
112
112
|
#
|
113
113
|
def diff_lcs_loaded? #:nodoc:
|
114
|
-
return true
|
114
|
+
return true if defined?(Diff::LCS)
|
115
115
|
return @diff_lcs_loaded unless @diff_lcs_loaded.nil?
|
116
116
|
|
117
117
|
@diff_lcs_loaded = begin
|
@@ -64,7 +64,7 @@ class Bundler::Thor
|
|
64
64
|
new_constants = Bundler::Thor::Base.subclasses.dup
|
65
65
|
Bundler::Thor::Base.subclasses.replace(old_constants)
|
66
66
|
|
67
|
-
new_constants.map!
|
67
|
+
new_constants.map!(&:namespace)
|
68
68
|
new_constants.compact!
|
69
69
|
new_constants
|
70
70
|
end
|
@@ -72,7 +72,7 @@ class Bundler::Thor
|
|
72
72
|
# Returns the thor classes declared inside the given class.
|
73
73
|
#
|
74
74
|
def thor_classes_in(klass)
|
75
|
-
stringfied_constants = klass.constants.map
|
75
|
+
stringfied_constants = klass.constants.map(&:to_s)
|
76
76
|
Bundler::Thor::Base.subclasses.select do |subclass|
|
77
77
|
next unless subclass.name
|
78
78
|
stringfied_constants.include?(subclass.name.gsub("#{klass.name}::", ""))
|
@@ -103,7 +103,7 @@ class Bundler::Thor
|
|
103
103
|
#
|
104
104
|
def camel_case(str)
|
105
105
|
return str if str !~ /_/ && str =~ /[A-Z]+.*/
|
106
|
-
str.split("_").map
|
106
|
+
str.split("_").map(&:capitalize).join
|
107
107
|
end
|
108
108
|
|
109
109
|
# Receives a namespace and tries to retrieve a Bundler::Thor or Bundler::Thor::Group class
|
@@ -135,7 +135,8 @@ class Bundler::Thor
|
|
135
135
|
klass = Bundler::Thor::Util.find_by_namespace(pieces.join(":"))
|
136
136
|
end
|
137
137
|
unless klass # look for a Bundler::Thor::Group with the right name
|
138
|
-
klass
|
138
|
+
klass = Bundler::Thor::Util.find_by_namespace(namespace)
|
139
|
+
command = nil
|
139
140
|
end
|
140
141
|
if !klass && fallback # try a command in the default namespace
|
141
142
|
command = namespace
|
@@ -163,7 +164,7 @@ class Bundler::Thor
|
|
163
164
|
end
|
164
165
|
end
|
165
166
|
|
166
|
-
def user_home
|
167
|
+
def user_home
|
167
168
|
@@user_home ||= if ENV["HOME"]
|
168
169
|
ENV["HOME"]
|
169
170
|
elsif ENV["USERPROFILE"]
|
@@ -188,7 +189,7 @@ class Bundler::Thor
|
|
188
189
|
# Returns the root where thor files are located, depending on the OS.
|
189
190
|
#
|
190
191
|
def thor_root
|
191
|
-
File.join(user_home, ".thor").
|
192
|
+
File.join(user_home, ".thor").tr('\\', "/")
|
192
193
|
end
|
193
194
|
|
194
195
|
# Returns the files in the thor root. On Windows thor_root will be something
|
@@ -216,7 +217,7 @@ class Bundler::Thor
|
|
216
217
|
# Return the path to the ruby interpreter taking into account multiple
|
217
218
|
# installations and windows extensions.
|
218
219
|
#
|
219
|
-
def ruby_command
|
220
|
+
def ruby_command
|
220
221
|
@ruby_command ||= begin
|
221
222
|
ruby_name = RbConfig::CONFIG["ruby_install_name"]
|
222
223
|
ruby = File.join(RbConfig::CONFIG["bindir"], ruby_name)
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
# We forcibly require OpenSSL, because net/http/persistent will only autoload
|
3
4
|
# it. On some Rubies, autoload fails but explicit require succeeds.
|
4
5
|
begin
|
@@ -6,7 +7,46 @@ begin
|
|
6
7
|
rescue LoadError
|
7
8
|
# some Ruby builds don't have OpenSSL
|
8
9
|
end
|
10
|
+
module Bundler
|
11
|
+
module Persistent
|
12
|
+
module Net
|
13
|
+
module HTTP
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
require "bundler/vendor/net-http-persistent/lib/net/http/persistent"
|
19
|
+
|
20
|
+
module Bundler
|
21
|
+
class PersistentHTTP < Persistent::Net::HTTP::Persistent
|
22
|
+
def connection_for(uri)
|
23
|
+
connection = super
|
24
|
+
warn_old_tls_version_rubygems_connection(uri, connection)
|
25
|
+
connection
|
26
|
+
end
|
9
27
|
|
10
|
-
|
11
|
-
|
12
|
-
|
28
|
+
def warn_old_tls_version_rubygems_connection(uri, connection)
|
29
|
+
return unless connection.use_ssl?
|
30
|
+
return unless (uri.host || "").end_with?("rubygems.org")
|
31
|
+
|
32
|
+
socket = connection.instance_variable_get(:@socket)
|
33
|
+
return unless socket
|
34
|
+
socket_io = socket.io
|
35
|
+
return unless socket_io.respond_to?(:ssl_version)
|
36
|
+
ssl_version = socket_io.ssl_version
|
37
|
+
|
38
|
+
case ssl_version
|
39
|
+
when /TLSv([\d\.]+)/
|
40
|
+
version = Gem::Version.new($1)
|
41
|
+
if version < Gem::Version.new("1.2")
|
42
|
+
Bundler.ui.warn \
|
43
|
+
"Warning: Your Ruby version is compiled against a copy of OpenSSL that is very old. " \
|
44
|
+
"Starting in January 2018, RubyGems.org will refuse connection requests from these " \
|
45
|
+
"very old versions of OpenSSL. If you will need to continue installing gems after " \
|
46
|
+
"January 2018, please follow this guide to upgrade: http://ruby.to/tls-outdated.",
|
47
|
+
:wrap => true
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -1,4 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
2
|
+
|
3
|
+
module Bundler
|
4
|
+
def self.require_thor_actions
|
5
|
+
Kernel.send(:require, "bundler/vendor/thor/lib/thor/actions")
|
6
|
+
end
|
7
|
+
end
|
3
8
|
require "bundler/vendor/thor/lib/thor"
|
4
|
-
require "bundler/vendor/thor/lib/thor/actions"
|
data/lib/bundler/version.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# frozen_string_literal:
|
1
|
+
# frozen_string_literal: false
|
2
2
|
|
3
3
|
# Ruby 1.9.3 and old RubyGems don't play nice with frozen version strings
|
4
4
|
# rubocop:disable MutableConstant
|
@@ -7,5 +7,22 @@ module Bundler
|
|
7
7
|
# We're doing this because we might write tests that deal
|
8
8
|
# with other versions of bundler and we are unsure how to
|
9
9
|
# handle this better.
|
10
|
-
VERSION = "1.
|
10
|
+
VERSION = "1.17.3" 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
|
24
|
+
|
25
|
+
def self.bundler_major_version
|
26
|
+
@bundler_major_version ||= VERSION.split(".").first.to_i
|
27
|
+
end
|
11
28
|
end
|