bundler 1.9.0 → 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 +1157 -6
- data/README.md +33 -6
- data/bundler.gemspec +51 -18
- data/exe/bundle +31 -0
- data/{bin → exe}/bundle_ruby +10 -6
- data/exe/bundler +4 -0
- data/lib/bundler.rb +326 -207
- data/lib/bundler/build_metadata.rb +53 -0
- data/lib/bundler/capistrano.rb +9 -3
- data/lib/bundler/cli.rb +522 -141
- data/lib/bundler/cli/add.rb +35 -0
- data/lib/bundler/cli/binstubs.rb +22 -11
- data/lib/bundler/cli/cache.rb +7 -6
- data/lib/bundler/cli/check.rb +11 -8
- data/lib/bundler/cli/clean.rb +7 -8
- data/lib/bundler/cli/common.rb +53 -7
- data/lib/bundler/cli/config.rb +84 -49
- data/lib/bundler/cli/console.rb +13 -8
- data/lib/bundler/cli/doctor.rb +140 -0
- data/lib/bundler/cli/exec.rb +77 -16
- data/lib/bundler/cli/gem.rb +120 -52
- data/lib/bundler/cli/info.rb +50 -0
- data/lib/bundler/cli/init.rb +21 -7
- data/lib/bundler/cli/inject.rb +37 -10
- data/lib/bundler/cli/install.rb +139 -78
- data/lib/bundler/cli/issue.rb +40 -0
- data/lib/bundler/cli/list.rb +58 -0
- data/lib/bundler/cli/lock.rb +63 -0
- data/lib/bundler/cli/open.rb +9 -6
- data/lib/bundler/cli/outdated.rb +221 -35
- data/lib/bundler/cli/package.rb +11 -7
- data/lib/bundler/cli/platform.rb +7 -4
- data/lib/bundler/cli/plugin.rb +24 -0
- data/lib/bundler/cli/pristine.rb +47 -0
- data/lib/bundler/cli/remove.rb +18 -0
- data/lib/bundler/cli/show.rb +11 -10
- data/lib/bundler/cli/update.rb +47 -29
- data/lib/bundler/cli/viz.rb +12 -8
- 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 +3 -1
- data/lib/bundler/current_ruby.rb +47 -137
- data/lib/bundler/definition.rb +599 -230
- data/lib/bundler/dep_proxy.rb +15 -10
- data/lib/bundler/dependency.rb +54 -25
- data/lib/bundler/deployment.rb +12 -2
- data/lib/bundler/deprecate.rb +33 -4
- data/lib/bundler/dsl.rb +383 -99
- data/lib/bundler/endpoint_specification.rb +72 -7
- data/lib/bundler/env.rb +121 -41
- data/lib/bundler/environment_preserver.rb +59 -0
- data/lib/bundler/errors.rb +158 -0
- data/lib/bundler/feature_flag.rb +74 -0
- data/lib/bundler/fetcher.rb +171 -280
- data/lib/bundler/fetcher/base.rb +52 -0
- data/lib/bundler/fetcher/compact_index.rb +126 -0
- data/lib/bundler/fetcher/dependency.rb +82 -0
- data/lib/bundler/fetcher/downloader.rb +84 -0
- data/lib/bundler/fetcher/index.rb +52 -0
- data/lib/bundler/friendly_errors.rb +113 -58
- data/lib/bundler/gem_helper.rb +73 -46
- data/lib/bundler/gem_helpers.rb +85 -9
- data/lib/bundler/gem_remote_fetcher.rb +43 -0
- data/lib/bundler/gem_tasks.rb +6 -1
- data/lib/bundler/gem_version_promoter.rb +190 -0
- data/lib/bundler/gemdeps.rb +29 -0
- data/lib/bundler/graph.rb +32 -49
- data/lib/bundler/index.rb +79 -67
- data/lib/bundler/injector.rb +219 -30
- data/lib/bundler/inline.rb +74 -0
- data/lib/bundler/installer.rb +191 -206
- data/lib/bundler/installer/gem_installer.rb +85 -0
- data/lib/bundler/installer/parallel_installer.rb +233 -0
- data/lib/bundler/installer/standalone.rb +53 -0
- data/lib/bundler/lazy_specification.rb +53 -13
- data/lib/bundler/lockfile_generator.rb +95 -0
- data/lib/bundler/lockfile_parser.rb +157 -62
- data/lib/bundler/match_platform.rb +15 -4
- data/lib/bundler/mirror.rb +223 -0
- data/lib/bundler/plugin.rb +292 -0
- data/lib/bundler/plugin/api.rb +81 -0
- data/lib/bundler/plugin/api/source.rb +306 -0
- data/lib/bundler/plugin/dsl.rb +53 -0
- data/lib/bundler/plugin/events.rb +61 -0
- data/lib/bundler/plugin/index.rb +162 -0
- data/lib/bundler/plugin/installer.rb +96 -0
- data/lib/bundler/plugin/installer/git.rb +38 -0
- data/lib/bundler/plugin/installer/rubygems.rb +27 -0
- data/lib/bundler/plugin/source_list.rb +27 -0
- data/lib/bundler/process_lock.rb +24 -0
- data/lib/bundler/psyched_yaml.rb +17 -6
- data/lib/bundler/remote_specification.rb +68 -11
- data/lib/bundler/resolver.rb +263 -229
- data/lib/bundler/resolver/spec_group.rb +106 -0
- data/lib/bundler/retry.rb +25 -19
- data/lib/bundler/ruby_dsl.rb +9 -2
- data/lib/bundler/ruby_version.rb +101 -66
- data/lib/bundler/rubygems_ext.rb +77 -37
- data/lib/bundler/rubygems_gem_installer.rb +106 -0
- data/lib/bundler/rubygems_integration.rb +450 -163
- data/lib/bundler/runtime.rb +133 -103
- data/lib/bundler/settings.rb +344 -83
- data/lib/bundler/settings/validator.rb +102 -0
- data/lib/bundler/setup.rb +7 -3
- data/lib/bundler/shared_helpers.rb +284 -54
- data/lib/bundler/similarity_detector.rb +21 -21
- data/lib/bundler/source.rb +68 -15
- data/lib/bundler/source/gemspec.rb +18 -0
- data/lib/bundler/source/git.rb +90 -55
- data/lib/bundler/source/git/git_proxy.rb +135 -35
- data/lib/bundler/source/metadata.rb +62 -0
- data/lib/bundler/source/path.rb +84 -61
- data/lib/bundler/source/path/installer.rb +53 -17
- data/lib/bundler/source/rubygems.rb +282 -122
- data/lib/bundler/source/rubygems/remote.rb +69 -0
- data/lib/bundler/source_list.rb +107 -22
- data/lib/bundler/spec_set.rb +83 -45
- data/lib/bundler/ssl_certs/certificate_manager.rb +8 -7
- data/lib/bundler/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem +21 -0
- data/lib/bundler/ssl_certs/{DigiCertHighAssuranceEVRootCA.pem → rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem} +0 -0
- data/lib/bundler/ssl_certs/{AddTrustExternalCARoot-2048.pem → rubygems.org/AddTrustExternalCARoot.pem} +0 -0
- data/lib/bundler/stub_specification.rb +108 -0
- data/lib/bundler/templates/.document +1 -0
- data/lib/bundler/templates/Executable +19 -6
- data/lib/bundler/templates/Executable.bundler +105 -0
- data/lib/bundler/templates/Executable.standalone +6 -4
- data/lib/bundler/templates/Gemfile +4 -1
- data/lib/bundler/templates/gems.rb +8 -0
- data/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +68 -7
- 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 +19 -11
- data/lib/bundler/templates/newgem/Rakefile.tt +10 -6
- data/lib/bundler/templates/newgem/bin/console.tt +1 -1
- data/lib/bundler/templates/newgem/bin/setup.tt +2 -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 +31 -15
- data/lib/bundler/templates/newgem/rspec.tt +1 -0
- data/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +3 -5
- data/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +14 -2
- data/lib/bundler/templates/newgem/test/{test_newgem.rb.tt → newgem_test.rb.tt} +2 -2
- data/lib/bundler/templates/newgem/test/test_helper.rb.tt +4 -0
- data/lib/bundler/templates/newgem/travis.yml.tt +7 -0
- data/lib/bundler/ui.rb +5 -3
- data/lib/bundler/ui/rg_proxy.rb +5 -7
- data/lib/bundler/ui/shell.rb +69 -18
- data/lib/bundler/ui/silent.rb +26 -1
- data/lib/bundler/uri_credentials_filter.rb +37 -0
- data/lib/bundler/vendor/fileutils/lib/fileutils.rb +1638 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo.rb +12 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +26 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +57 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +81 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +223 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +36 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +66 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +62 -0
- 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 +61 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +126 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +46 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +36 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +136 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +143 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +6 -0
- data/lib/bundler/vendor/{Molinillo-0.2.1 → molinillo}/lib/molinillo/modules/specification_provider.rb +11 -0
- data/lib/bundler/vendor/{Molinillo-0.2.1 → molinillo}/lib/molinillo/modules/ui.rb +6 -2
- data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +837 -0
- data/lib/bundler/vendor/{Molinillo-0.2.1 → molinillo}/lib/molinillo/resolver.rb +6 -3
- data/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +58 -0
- 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-0.19.1 → thor}/lib/thor.rb +47 -22
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/actions.rb +31 -29
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/actions/create_file.rb +3 -2
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/actions/create_link.rb +3 -2
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/actions/directory.rb +3 -3
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/actions/empty_directory.rb +16 -8
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/actions/file_manipulation.rb +66 -18
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/actions/inject_into_file.rb +18 -16
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/base.rb +67 -44
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/command.rb +13 -11
- data/lib/bundler/vendor/{thor-0.19.1 → 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 +12 -0
- data/lib/bundler/vendor/thor/lib/thor/core_ext/ordered_hash.rb +129 -0
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/error.rb +3 -3
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/group.rb +14 -14
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/invocation.rb +4 -5
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/line_editor.rb +2 -2
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/line_editor/basic.rb +2 -0
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/line_editor/readline.rb +0 -0
- data/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -0
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/parser/argument.rb +4 -7
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/parser/arguments.rb +16 -16
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/parser/option.rb +42 -21
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/parser/options.rb +13 -10
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/rake_compat.rb +1 -1
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/runner.rb +35 -33
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/shell.rb +4 -4
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/shell/basic.rb +49 -33
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/shell/color.rb +2 -2
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/shell/html.rb +5 -5
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/util.rb +8 -7
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/version.rb +1 -1
- data/lib/bundler/vendored_fileutils.rb +9 -0
- data/lib/bundler/vendored_molinillo.rb +4 -5
- data/lib/bundler/vendored_persistent.rb +45 -4
- data/lib/bundler/vendored_thor.rb +8 -5
- data/lib/bundler/version.rb +23 -1
- data/lib/bundler/version_ranges.rb +76 -0
- data/lib/bundler/vlad.rb +8 -2
- data/lib/bundler/worker.rb +39 -6
- data/lib/bundler/yaml_serializer.rb +90 -0
- data/man/bundle-add.1 +58 -0
- data/man/bundle-add.1.txt +52 -0
- data/man/bundle-add.ronn +40 -0
- data/man/bundle-binstubs.1 +40 -0
- data/man/bundle-binstubs.1.txt +48 -0
- data/man/bundle-binstubs.ronn +43 -0
- 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 +256 -31
- data/man/bundle-doctor.1 +44 -0
- data/man/bundle-doctor.1.txt +44 -0
- data/man/bundle-doctor.ronn +33 -0
- data/man/bundle-exec.1 +165 -0
- data/man/bundle-exec.1.txt +178 -0
- data/man/bundle-exec.ronn +19 -3
- data/man/bundle-gem.1 +80 -0
- data/man/bundle-gem.1.txt +91 -0
- data/man/bundle-gem.ronn +78 -0
- 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/man/bundle-install.1 +308 -0
- data/man/bundle-install.1.txt +396 -0
- data/man/bundle-install.ronn +64 -67
- data/man/bundle-list.1 +50 -0
- data/man/bundle-list.1.txt +43 -0
- data/man/bundle-list.ronn +33 -0
- data/man/bundle-lock.1 +84 -0
- data/man/bundle-lock.1.txt +93 -0
- data/man/bundle-lock.ronn +94 -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/man/bundle-package.1 +55 -0
- data/man/bundle-package.1.txt +79 -0
- data/man/bundle-package.ronn +14 -8
- data/man/bundle-platform.1 +61 -0
- data/man/bundle-platform.1.txt +57 -0
- data/man/bundle-platform.ronn +1 -1
- 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 +180 -18
- data/man/bundle-viz.1 +39 -0
- data/man/bundle-viz.1.txt +39 -0
- data/man/bundle-viz.ronn +30 -0
- data/man/bundle.1 +136 -0
- data/man/bundle.1.txt +116 -0
- data/man/bundle.ronn +46 -33
- data/man/gemfile.5 +689 -0
- data/man/gemfile.5.ronn +127 -79
- data/man/gemfile.5.txt +653 -0
- data/man/index.txt +25 -7
- metadata +242 -95
- data/.gitignore +0 -16
- data/.rspec +0 -3
- data/.travis.yml +0 -110
- data/CODE_OF_CONDUCT.md +0 -40
- data/CONTRIBUTING.md +0 -32
- data/DEVELOPMENT.md +0 -119
- data/ISSUES.md +0 -96
- data/Rakefile +0 -302
- data/UPGRADING.md +0 -103
- data/bin/bundle +0 -21
- data/bin/bundler +0 -21
- data/lib/bundler/anonymizable_uri.rb +0 -32
- data/lib/bundler/environment.rb +0 -42
- data/lib/bundler/gem_installer.rb +0 -9
- data/lib/bundler/gem_path_manipulation.rb +0 -8
- data/lib/bundler/ssl_certs/AddTrustExternalCARoot.pem +0 -32
- data/lib/bundler/ssl_certs/Class3PublicPrimaryCertificationAuthority.pem +0 -14
- data/lib/bundler/ssl_certs/EntrustnetSecureServerCertificationAuthority.pem +0 -28
- data/lib/bundler/ssl_certs/GeoTrustGlobalCA.pem +0 -20
- data/lib/bundler/templates/newgem/.travis.yml.tt +0 -3
- data/lib/bundler/templates/newgem/test/minitest_helper.rb.tt +0 -4
- data/lib/bundler/vendor/Molinillo-0.2.1/lib/molinillo.rb +0 -5
- data/lib/bundler/vendor/Molinillo-0.2.1/lib/molinillo/dependency_graph.rb +0 -266
- data/lib/bundler/vendor/Molinillo-0.2.1/lib/molinillo/errors.rb +0 -69
- data/lib/bundler/vendor/Molinillo-0.2.1/lib/molinillo/gem_metadata.rb +0 -3
- data/lib/bundler/vendor/Molinillo-0.2.1/lib/molinillo/resolution.rb +0 -412
- data/lib/bundler/vendor/Molinillo-0.2.1/lib/molinillo/state.rb +0 -43
- data/lib/bundler/vendor/thor-0.19.1/lib/thor/core_ext/io_binary_read.rb +0 -10
- data/lib/bundler/vendor/thor-0.19.1/lib/thor/core_ext/ordered_hash.rb +0 -98
- data/lib/bundler/vendor/thor-0.19.1/lib/thor/parser.rb +0 -4
@@ -1,4 +1,4 @@
|
|
1
|
-
require "thor/shell/basic"
|
1
|
+
require "bundler/vendor/thor/lib/thor/shell/basic"
|
2
2
|
|
3
3
|
class Bundler::Thor
|
4
4
|
module Shell
|
@@ -134,7 +134,7 @@ class Bundler::Thor
|
|
134
134
|
# for diff.
|
135
135
|
#
|
136
136
|
def diff_lcs_loaded? #:nodoc:
|
137
|
-
return true
|
137
|
+
return true if defined?(Diff::LCS)
|
138
138
|
return @diff_lcs_loaded unless @diff_lcs_loaded.nil?
|
139
139
|
|
140
140
|
@diff_lcs_loaded = begin
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require "thor/shell/basic"
|
1
|
+
require "bundler/vendor/thor/lib/thor/shell/basic"
|
2
2
|
|
3
3
|
class Bundler::Thor
|
4
4
|
module Shell
|
@@ -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,5 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
require
|
5
|
-
$:.delete(vendor) unless loaded
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bundler; end
|
4
|
+
require "bundler/vendor/molinillo/lib/molinillo"
|
@@ -1,11 +1,52 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# We forcibly require OpenSSL, because net/http/persistent will only autoload
|
2
4
|
# it. On some Rubies, autoload fails but explicit require succeeds.
|
3
5
|
begin
|
4
|
-
require
|
6
|
+
require "openssl"
|
5
7
|
rescue LoadError
|
6
8
|
# some Ruby builds don't have OpenSSL
|
7
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
|
8
27
|
|
9
|
-
|
10
|
-
|
11
|
-
|
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,5 +1,8 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
require
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bundler
|
4
|
+
def self.require_thor_actions
|
5
|
+
Kernel.send(:require, "bundler/vendor/thor/lib/thor/actions")
|
6
|
+
end
|
7
|
+
end
|
8
|
+
require "bundler/vendor/thor/lib/thor"
|
data/lib/bundler/version.rb
CHANGED
@@ -1,6 +1,28 @@
|
|
1
|
+
# frozen_string_literal: false
|
2
|
+
|
3
|
+
# Ruby 1.9.3 and old RubyGems don't play nice with frozen version strings
|
4
|
+
# rubocop:disable MutableConstant
|
5
|
+
|
1
6
|
module Bundler
|
2
7
|
# We're doing this because we might write tests that deal
|
3
8
|
# with other versions of bundler and we are unsure how to
|
4
9
|
# handle this better.
|
5
|
-
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
|
6
28
|
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bundler
|
4
|
+
module VersionRanges
|
5
|
+
NEq = Struct.new(:version)
|
6
|
+
ReqR = Struct.new(:left, :right)
|
7
|
+
class ReqR
|
8
|
+
Endpoint = Struct.new(:version, :inclusive)
|
9
|
+
def to_s
|
10
|
+
"#{left.inclusive ? "[" : "("}#{left.version}, #{right.version}#{right.inclusive ? "]" : ")"}"
|
11
|
+
end
|
12
|
+
INFINITY = Object.new.freeze
|
13
|
+
ZERO = Gem::Version.new("0.a")
|
14
|
+
|
15
|
+
def cover?(v)
|
16
|
+
return false if left.inclusive && left.version > v
|
17
|
+
return false if !left.inclusive && left.version >= v
|
18
|
+
|
19
|
+
if right.version != INFINITY
|
20
|
+
return false if right.inclusive && right.version < v
|
21
|
+
return false if !right.inclusive && right.version <= v
|
22
|
+
end
|
23
|
+
|
24
|
+
true
|
25
|
+
end
|
26
|
+
|
27
|
+
def empty?
|
28
|
+
left.version == right.version && !(left.inclusive && right.inclusive)
|
29
|
+
end
|
30
|
+
|
31
|
+
def single?
|
32
|
+
left.version == right.version
|
33
|
+
end
|
34
|
+
|
35
|
+
UNIVERSAL = ReqR.new(ReqR::Endpoint.new(Gem::Version.new("0.a"), true), ReqR::Endpoint.new(ReqR::INFINITY, false)).freeze
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.for_many(requirements)
|
39
|
+
requirements = requirements.map(&:requirements).flatten(1).map {|r| r.join(" ") }
|
40
|
+
requirements << ">= 0.a" if requirements.empty?
|
41
|
+
requirement = Gem::Requirement.new(requirements)
|
42
|
+
self.for(requirement)
|
43
|
+
end
|
44
|
+
|
45
|
+
def self.for(requirement)
|
46
|
+
ranges = requirement.requirements.map do |op, v|
|
47
|
+
case op
|
48
|
+
when "=" then ReqR.new(ReqR::Endpoint.new(v, true), ReqR::Endpoint.new(v, true))
|
49
|
+
when "!=" then NEq.new(v)
|
50
|
+
when ">=" then ReqR.new(ReqR::Endpoint.new(v, true), ReqR::Endpoint.new(ReqR::INFINITY, false))
|
51
|
+
when ">" then ReqR.new(ReqR::Endpoint.new(v, false), ReqR::Endpoint.new(ReqR::INFINITY, false))
|
52
|
+
when "<" then ReqR.new(ReqR::Endpoint.new(ReqR::ZERO, true), ReqR::Endpoint.new(v, false))
|
53
|
+
when "<=" then ReqR.new(ReqR::Endpoint.new(ReqR::ZERO, true), ReqR::Endpoint.new(v, true))
|
54
|
+
when "~>" then ReqR.new(ReqR::Endpoint.new(v, true), ReqR::Endpoint.new(v.bump, false))
|
55
|
+
else raise "unknown version op #{op} in requirement #{requirement}"
|
56
|
+
end
|
57
|
+
end.uniq
|
58
|
+
ranges, neqs = ranges.partition {|r| !r.is_a?(NEq) }
|
59
|
+
|
60
|
+
[ranges.sort_by {|range| [range.left.version, range.left.inclusive ? 0 : 1] }, neqs.map(&:version)]
|
61
|
+
end
|
62
|
+
|
63
|
+
def self.empty?(ranges, neqs)
|
64
|
+
!ranges.reduce(ReqR::UNIVERSAL) do |last_range, curr_range|
|
65
|
+
next false unless last_range
|
66
|
+
next false if curr_range.single? && neqs.include?(curr_range.left.version)
|
67
|
+
next curr_range if last_range.right.version == ReqR::INFINITY
|
68
|
+
case last_range.right.version <=> curr_range.left.version
|
69
|
+
when 1 then next curr_range
|
70
|
+
when 0 then next(last_range.right.inclusive && curr_range.left.inclusive && !neqs.include?(curr_range.left.version) && curr_range)
|
71
|
+
when -1 then next false
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
data/lib/bundler/vlad.rb
CHANGED
@@ -1,8 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "bundler/shared_helpers"
|
4
|
+
Bundler::SharedHelpers.major_deprecation 2,
|
5
|
+
"The Bundler task for Vlad"
|
6
|
+
|
1
7
|
# Vlad task for Bundler.
|
2
8
|
#
|
3
|
-
#
|
9
|
+
# Add "require 'bundler/vlad'" in your Vlad deploy.rb, and
|
4
10
|
# include the vlad:bundle:install task in your vlad:deploy task.
|
5
|
-
require
|
11
|
+
require "bundler/deployment"
|
6
12
|
|
7
13
|
include Rake::DSL if defined? Rake::DSL
|
8
14
|
|
data/lib/bundler/worker.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "thread"
|
2
4
|
|
3
5
|
module Bundler
|
4
6
|
class Worker
|
@@ -11,22 +13,29 @@ module Bundler
|
|
11
13
|
end
|
12
14
|
end
|
13
15
|
|
16
|
+
# @return [String] the name of the worker
|
17
|
+
attr_reader :name
|
18
|
+
|
14
19
|
# Creates a worker pool of specified size
|
15
20
|
#
|
16
21
|
# @param size [Integer] Size of pool
|
22
|
+
# @param name [String] name the name of the worker
|
17
23
|
# @param func [Proc] job to run in inside the worker pool
|
18
|
-
def initialize(size, func)
|
24
|
+
def initialize(size, name, func)
|
25
|
+
@name = name
|
19
26
|
@request_queue = Queue.new
|
20
27
|
@response_queue = Queue.new
|
21
28
|
@func = func
|
22
|
-
@
|
23
|
-
|
29
|
+
@size = size
|
30
|
+
@threads = nil
|
31
|
+
SharedHelpers.trap("INT") { abort_threads }
|
24
32
|
end
|
25
33
|
|
26
34
|
# Enqueue a request to be executed in the worker pool
|
27
35
|
#
|
28
36
|
# @param obj [String] mostly it is name of spec that should be downloaded
|
29
37
|
def enq(obj)
|
38
|
+
create_threads unless @threads
|
30
39
|
@request_queue.enq obj
|
31
40
|
end
|
32
41
|
|
@@ -60,14 +69,38 @@ module Bundler
|
|
60
69
|
# Stop the worker threads by sending a poison object down the request queue
|
61
70
|
# so as worker threads after retrieving it, shut themselves down
|
62
71
|
def stop_threads
|
72
|
+
return unless @threads
|
63
73
|
@threads.each { @request_queue.enq POISON }
|
64
|
-
@threads.each
|
74
|
+
@threads.each(&:join)
|
75
|
+
@threads = nil
|
65
76
|
end
|
66
77
|
|
67
78
|
def abort_threads
|
68
|
-
@threads
|
79
|
+
return unless @threads
|
80
|
+
Bundler.ui.debug("\n#{caller.join("\n")}")
|
81
|
+
@threads.each(&:exit)
|
69
82
|
exit 1
|
70
83
|
end
|
71
84
|
|
85
|
+
def create_threads
|
86
|
+
creation_errors = []
|
87
|
+
|
88
|
+
@threads = Array.new(@size) do |i|
|
89
|
+
begin
|
90
|
+
Thread.start { process_queue(i) }.tap do |thread|
|
91
|
+
thread.name = "#{name} Worker ##{i}" if thread.respond_to?(:name=)
|
92
|
+
end
|
93
|
+
rescue ThreadError => e
|
94
|
+
creation_errors << e
|
95
|
+
nil
|
96
|
+
end
|
97
|
+
end.compact
|
98
|
+
|
99
|
+
return if creation_errors.empty?
|
100
|
+
|
101
|
+
message = "Failed to create threads for the #{name} worker: #{creation_errors.map(&:to_s).uniq.join(", ")}"
|
102
|
+
raise ThreadCreationError, message if @threads.empty?
|
103
|
+
Bundler.ui.info message
|
104
|
+
end
|
72
105
|
end
|
73
106
|
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bundler
|
4
|
+
# A stub yaml serializer that can handle only hashes and strings (as of now).
|
5
|
+
module YAMLSerializer
|
6
|
+
module_function
|
7
|
+
|
8
|
+
def dump(hash)
|
9
|
+
yaml = String.new("---")
|
10
|
+
yaml << dump_hash(hash)
|
11
|
+
end
|
12
|
+
|
13
|
+
def dump_hash(hash)
|
14
|
+
yaml = String.new("\n")
|
15
|
+
hash.each do |k, v|
|
16
|
+
yaml << k << ":"
|
17
|
+
if v.is_a?(Hash)
|
18
|
+
yaml << dump_hash(v).gsub(/^(?!$)/, " ") # indent all non-empty lines
|
19
|
+
elsif v.is_a?(Array) # Expected to be array of strings
|
20
|
+
yaml << "\n- " << v.map {|s| s.to_s.gsub(/\s+/, " ").inspect }.join("\n- ") << "\n"
|
21
|
+
else
|
22
|
+
yaml << " " << v.to_s.gsub(/\s+/, " ").inspect << "\n"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
yaml
|
26
|
+
end
|
27
|
+
|
28
|
+
ARRAY_REGEX = /
|
29
|
+
^
|
30
|
+
(?:[ ]*-[ ]) # '- ' before array items
|
31
|
+
(['"]?) # optional opening quote
|
32
|
+
(.*) # value
|
33
|
+
\1 # matching closing quote
|
34
|
+
$
|
35
|
+
/xo
|
36
|
+
|
37
|
+
HASH_REGEX = /
|
38
|
+
^
|
39
|
+
([ ]*) # indentations
|
40
|
+
(.+) # key
|
41
|
+
(?::(?=(?:\s|$))) # : (without the lookahead the #key includes this when : is present in value)
|
42
|
+
[ ]?
|
43
|
+
(?: !\s)? # optional exclamation mark found with ruby 1.9.3
|
44
|
+
(['"]?) # optional opening quote
|
45
|
+
(.*) # value
|
46
|
+
\3 # matching closing quote
|
47
|
+
$
|
48
|
+
/xo
|
49
|
+
|
50
|
+
def load(str)
|
51
|
+
res = {}
|
52
|
+
stack = [res]
|
53
|
+
last_hash = nil
|
54
|
+
last_empty_key = nil
|
55
|
+
str.split(/\r?\n/).each do |line|
|
56
|
+
if match = HASH_REGEX.match(line)
|
57
|
+
indent, key, quote, val = match.captures
|
58
|
+
key = convert_to_backward_compatible_key(key)
|
59
|
+
depth = indent.scan(/ /).length
|
60
|
+
if quote.empty? && val.empty?
|
61
|
+
new_hash = {}
|
62
|
+
stack[depth][key] = new_hash
|
63
|
+
stack[depth + 1] = new_hash
|
64
|
+
last_empty_key = key
|
65
|
+
last_hash = stack[depth]
|
66
|
+
else
|
67
|
+
stack[depth][key] = val
|
68
|
+
end
|
69
|
+
elsif match = ARRAY_REGEX.match(line)
|
70
|
+
_, val = match.captures
|
71
|
+
last_hash[last_empty_key] = [] unless last_hash[last_empty_key].is_a?(Array)
|
72
|
+
|
73
|
+
last_hash[last_empty_key].push(val)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
res
|
77
|
+
end
|
78
|
+
|
79
|
+
# for settings' keys
|
80
|
+
def convert_to_backward_compatible_key(key)
|
81
|
+
key = "#{key}/" if key =~ /https?:/i && key !~ %r{/\Z}
|
82
|
+
key = key.gsub(".", "__") if key.include?(".")
|
83
|
+
key
|
84
|
+
end
|
85
|
+
|
86
|
+
class << self
|
87
|
+
private :dump_hash, :convert_to_backward_compatible_key
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|