bundler 2.2.29 → 2.5.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +1129 -4
- data/README.md +4 -8
- data/bundler.gemspec +11 -11
- data/exe/bundle +5 -26
- data/exe/bundler +1 -1
- data/lib/bundler/.document +1 -0
- data/lib/bundler/build_metadata.rb +4 -4
- data/lib/bundler/capistrano.rb +1 -1
- data/lib/bundler/checksum.rb +254 -0
- data/lib/bundler/ci_detector.rb +75 -0
- data/lib/bundler/cli/add.rb +4 -4
- data/lib/bundler/cli/binstubs.rb +10 -6
- data/lib/bundler/cli/cache.rb +1 -1
- data/lib/bundler/cli/check.rb +3 -3
- data/lib/bundler/cli/common.rb +13 -3
- data/lib/bundler/cli/config.rb +18 -8
- data/lib/bundler/cli/console.rb +5 -4
- data/lib/bundler/cli/doctor.rb +12 -5
- data/lib/bundler/cli/exec.rb +1 -1
- data/lib/bundler/cli/fund.rb +1 -1
- data/lib/bundler/cli/gem.rb +141 -48
- data/lib/bundler/cli/info.rb +27 -17
- data/lib/bundler/cli/init.rb +6 -2
- data/lib/bundler/cli/install.rb +22 -39
- data/lib/bundler/cli/issue.rb +5 -4
- data/lib/bundler/cli/lock.rb +36 -29
- data/lib/bundler/cli/open.rb +9 -9
- data/lib/bundler/cli/outdated.rb +19 -12
- data/lib/bundler/cli/platform.rb +8 -6
- data/lib/bundler/cli/plugin.rb +9 -15
- data/lib/bundler/cli/pristine.rb +38 -30
- data/lib/bundler/cli/show.rb +3 -3
- data/lib/bundler/cli/update.rb +12 -7
- data/lib/bundler/cli/viz.rb +1 -1
- data/lib/bundler/cli.rb +266 -285
- data/lib/bundler/compact_index_client/cache.rb +53 -67
- data/lib/bundler/compact_index_client/cache_file.rb +153 -0
- data/lib/bundler/compact_index_client/gem_parser.rb +7 -3
- data/lib/bundler/compact_index_client/parser.rb +84 -0
- data/lib/bundler/compact_index_client/updater.rb +83 -76
- data/lib/bundler/compact_index_client.rb +59 -87
- data/lib/bundler/constants.rb +9 -2
- data/lib/bundler/current_ruby.rb +12 -16
- data/lib/bundler/definition.rb +509 -319
- data/lib/bundler/dependency.rb +33 -71
- data/lib/bundler/digest.rb +71 -0
- data/lib/bundler/dsl.rb +88 -69
- data/lib/bundler/endpoint_specification.rb +32 -15
- data/lib/bundler/env.rb +5 -7
- data/lib/bundler/environment_preserver.rb +8 -22
- data/lib/bundler/errors.rb +101 -13
- data/lib/bundler/feature_flag.rb +0 -2
- data/lib/bundler/fetcher/base.rb +11 -11
- data/lib/bundler/fetcher/compact_index.rb +32 -52
- data/lib/bundler/fetcher/dependency.rb +3 -7
- data/lib/bundler/fetcher/downloader.rb +17 -16
- data/lib/bundler/fetcher/gem_remote_fetcher.rb +16 -0
- data/lib/bundler/fetcher/index.rb +2 -29
- data/lib/bundler/fetcher.rb +87 -79
- data/lib/bundler/force_platform.rb +18 -0
- data/lib/bundler/friendly_errors.rb +29 -40
- data/lib/bundler/gem_helper.rb +11 -23
- data/lib/bundler/gem_helpers.rb +30 -6
- data/lib/bundler/gem_version_promoter.rb +68 -109
- data/lib/bundler/graph.rb +9 -9
- data/lib/bundler/index.rb +71 -79
- data/lib/bundler/injector.rb +23 -11
- data/lib/bundler/inline.rb +11 -23
- data/lib/bundler/installer/gem_installer.rb +18 -11
- data/lib/bundler/installer/parallel_installer.rb +17 -65
- data/lib/bundler/installer/standalone.rb +56 -15
- data/lib/bundler/installer.rb +35 -61
- data/lib/bundler/lazy_specification.rb +92 -61
- data/lib/bundler/lockfile_generator.rb +12 -3
- data/lib/bundler/lockfile_parser.rb +137 -70
- data/lib/bundler/man/bundle-add.1 +19 -26
- data/lib/bundler/man/bundle-add.1.ronn +16 -4
- data/lib/bundler/man/bundle-binstubs.1 +4 -16
- data/lib/bundler/man/bundle-cache.1 +9 -24
- data/lib/bundler/man/bundle-cache.1.ronn +9 -2
- data/lib/bundler/man/bundle-check.1 +5 -12
- data/lib/bundler/man/bundle-check.1.ronn +3 -0
- data/lib/bundler/man/bundle-clean.1 +4 -11
- data/lib/bundler/man/bundle-clean.1.ronn +1 -1
- data/lib/bundler/man/bundle-config.1 +47 -224
- data/lib/bundler/man/bundle-config.1.ronn +40 -28
- data/lib/bundler/man/bundle-console.1 +35 -0
- data/lib/bundler/man/bundle-console.1.ronn +44 -0
- data/lib/bundler/man/bundle-doctor.1 +4 -18
- data/lib/bundler/man/bundle-exec.1 +16 -77
- data/lib/bundler/man/bundle-exec.1.ronn +8 -9
- data/lib/bundler/man/bundle-gem.1 +45 -72
- data/lib/bundler/man/bundle-gem.1.ronn +32 -5
- data/lib/bundler/man/bundle-help.1 +9 -0
- data/lib/bundler/man/bundle-help.1.ronn +12 -0
- data/lib/bundler/man/bundle-info.1 +5 -11
- data/lib/bundler/man/bundle-info.1.ronn +3 -3
- data/lib/bundler/man/bundle-init.1 +6 -11
- data/lib/bundler/man/bundle-init.1.ronn +2 -0
- data/lib/bundler/man/bundle-inject.1 +8 -18
- data/lib/bundler/man/bundle-inject.1.ronn +3 -1
- data/lib/bundler/man/bundle-install.1 +32 -155
- data/lib/bundler/man/bundle-install.1.ronn +11 -33
- data/lib/bundler/man/bundle-list.1 +4 -19
- data/lib/bundler/man/bundle-lock.1 +5 -29
- data/lib/bundler/man/bundle-open.1 +18 -18
- data/lib/bundler/man/bundle-open.1.ronn +9 -1
- data/lib/bundler/man/bundle-outdated.1 +17 -72
- data/lib/bundler/man/bundle-outdated.1.ronn +13 -18
- data/lib/bundler/man/bundle-platform.1 +16 -28
- data/lib/bundler/man/bundle-platform.1.ronn +14 -7
- data/lib/bundler/man/bundle-plugin.1 +58 -0
- data/lib/bundler/man/bundle-plugin.1.ronn +63 -0
- data/lib/bundler/man/bundle-pristine.1 +5 -16
- data/lib/bundler/man/bundle-remove.1 +4 -14
- data/lib/bundler/man/bundle-show.1 +3 -10
- data/lib/bundler/man/bundle-update.1 +19 -138
- data/lib/bundler/man/bundle-update.1.ronn +2 -1
- data/lib/bundler/man/bundle-version.1 +22 -0
- data/lib/bundler/man/bundle-version.1.ronn +24 -0
- data/lib/bundler/man/bundle-viz.1 +6 -15
- data/lib/bundler/man/bundle-viz.1.ronn +2 -0
- data/lib/bundler/man/bundle.1 +17 -51
- data/lib/bundler/man/bundle.1.ronn +12 -7
- data/lib/bundler/man/gemfile.5 +130 -346
- data/lib/bundler/man/gemfile.5.ronn +121 -86
- data/lib/bundler/man/index.txt +4 -0
- data/lib/bundler/match_metadata.rb +17 -0
- data/lib/bundler/match_platform.rb +1 -2
- data/lib/bundler/match_remote_metadata.rb +29 -0
- data/lib/bundler/mirror.rb +8 -10
- data/lib/bundler/plugin/api/source.rb +9 -13
- data/lib/bundler/plugin/index.rb +13 -5
- data/lib/bundler/plugin/installer/git.rb +0 -4
- data/lib/bundler/plugin/installer/path.rb +18 -0
- data/lib/bundler/plugin/installer/rubygems.rb +0 -8
- data/lib/bundler/plugin/installer.rb +42 -19
- data/lib/bundler/plugin/source_list.rb +4 -4
- data/lib/bundler/plugin.rb +16 -7
- data/lib/bundler/process_lock.rb +1 -1
- data/lib/bundler/remote_specification.rb +11 -5
- data/lib/bundler/resolver/base.rb +111 -0
- data/lib/bundler/resolver/candidate.rb +82 -0
- data/lib/bundler/resolver/incompatibility.rb +15 -0
- data/lib/bundler/resolver/package.rb +81 -0
- data/lib/bundler/resolver/root.rb +25 -0
- data/lib/bundler/resolver/spec_group.rb +53 -66
- data/lib/bundler/resolver.rb +419 -307
- data/lib/bundler/retry.rb +1 -1
- data/lib/bundler/ruby_dsl.rb +42 -7
- data/lib/bundler/ruby_version.rb +16 -22
- data/lib/bundler/rubygems_ext.rb +250 -64
- data/lib/bundler/rubygems_gem_installer.rb +90 -64
- data/lib/bundler/rubygems_integration.rb +81 -190
- data/lib/bundler/runtime.rb +8 -13
- data/lib/bundler/safe_marshal.rb +31 -0
- data/lib/bundler/self_manager.rb +206 -0
- data/lib/bundler/settings.rb +139 -57
- data/lib/bundler/setup.rb +13 -1
- data/lib/bundler/shared_helpers.rb +67 -36
- data/lib/bundler/source/git/git_proxy.rb +285 -82
- data/lib/bundler/source/git.rb +81 -41
- data/lib/bundler/source/metadata.rb +17 -16
- data/lib/bundler/source/path/installer.rb +1 -22
- data/lib/bundler/source/path.rb +13 -25
- data/lib/bundler/source/rubygems/remote.rb +1 -1
- data/lib/bundler/source/rubygems.rb +164 -234
- data/lib/bundler/source/rubygems_aggregate.rb +1 -1
- data/lib/bundler/source.rb +7 -6
- data/lib/bundler/source_list.rb +40 -32
- data/lib/bundler/source_map.rb +15 -2
- data/lib/bundler/spec_set.rb +156 -46
- data/lib/bundler/stub_specification.rb +18 -5
- data/lib/bundler/templates/Executable +3 -5
- data/lib/bundler/templates/Executable.bundler +7 -12
- data/lib/bundler/templates/Executable.standalone +4 -4
- data/lib/bundler/templates/Gemfile +0 -2
- data/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +77 -29
- data/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
- data/lib/bundler/templates/newgem/Gemfile.tt +8 -2
- data/lib/bundler/templates/newgem/README.md.tt +7 -11
- data/lib/bundler/templates/newgem/Rakefile.tt +28 -4
- data/lib/bundler/templates/newgem/bin/console.tt +0 -4
- data/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
- data/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
- data/lib/bundler/templates/newgem/ext/newgem/extconf-c.rb.tt +10 -0
- data/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
- data/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +1 -1
- data/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
- data/lib/bundler/templates/newgem/github/workflows/main.yml.tt +13 -3
- data/lib/bundler/templates/newgem/gitignore.tt +3 -0
- data/lib/bundler/templates/newgem/gitlab-ci.yml.tt +13 -4
- data/lib/bundler/templates/newgem/newgem.gemspec.tt +25 -17
- data/lib/bundler/templates/newgem/rubocop.yml.tt +0 -5
- data/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
- data/lib/bundler/templates/newgem/standard.yml.tt +3 -0
- data/lib/bundler/templates/newgem/test/minitest/{newgem_test.rb.tt → test_newgem.rb.tt} +1 -1
- data/lib/bundler/ui/rg_proxy.rb +1 -1
- data/lib/bundler/ui/shell.rb +38 -15
- data/lib/bundler/ui/silent.rb +21 -5
- data/lib/bundler/uri_credentials_filter.rb +2 -2
- data/lib/bundler/uri_normalizer.rb +23 -0
- data/lib/bundler/vendor/.document +1 -0
- data/lib/bundler/vendor/connection_pool/.document +1 -0
- data/lib/bundler/vendor/connection_pool/LICENSE +20 -0
- data/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +19 -21
- data/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
- data/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +56 -0
- data/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +92 -78
- data/lib/bundler/vendor/fileutils/.document +1 -0
- data/lib/bundler/vendor/fileutils/LICENSE.txt +22 -0
- data/lib/bundler/vendor/fileutils/lib/fileutils.rb +1340 -410
- data/lib/bundler/vendor/net-http-persistent/.document +1 -0
- data/lib/bundler/vendor/net-http-persistent/README.rdoc +82 -0
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +4 -3
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +23 -11
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +1 -1
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +57 -57
- data/lib/bundler/vendor/pub_grub/.document +1 -0
- data/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +61 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +248 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
- data/lib/bundler/vendor/thor/.document +1 -0
- data/lib/bundler/vendor/thor/LICENSE.md +20 -0
- data/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +3 -2
- data/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +12 -14
- data/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +16 -6
- data/lib/bundler/vendor/thor/lib/thor/actions.rb +21 -17
- data/lib/bundler/vendor/thor/lib/thor/base.rb +140 -14
- data/lib/bundler/vendor/thor/lib/thor/command.rb +13 -4
- data/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +10 -0
- data/lib/bundler/vendor/thor/lib/thor/error.rb +16 -20
- data/lib/bundler/vendor/thor/lib/thor/group.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/invocation.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/nested_context.rb +2 -2
- data/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +20 -1
- data/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +33 -17
- data/lib/bundler/vendor/thor/lib/thor/parser/option.rb +27 -8
- data/lib/bundler/vendor/thor/lib/thor/parser/options.rb +63 -7
- data/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +2 -2
- data/lib/bundler/vendor/thor/lib/thor/runner.rb +40 -30
- data/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +48 -154
- data/lib/bundler/vendor/thor/lib/thor/shell/color.rb +1 -46
- data/lib/bundler/vendor/thor/lib/thor/shell/column_printer.rb +29 -0
- data/lib/bundler/vendor/thor/lib/thor/shell/html.rb +0 -45
- data/lib/bundler/vendor/thor/lib/thor/shell/table_printer.rb +134 -0
- data/lib/bundler/vendor/thor/lib/thor/shell/terminal.rb +42 -0
- data/lib/bundler/vendor/thor/lib/thor/shell/wrapped_printer.rb +38 -0
- data/lib/bundler/vendor/thor/lib/thor/shell.rb +2 -2
- data/lib/bundler/vendor/thor/lib/thor/util.rb +9 -8
- data/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor.rb +155 -8
- data/lib/bundler/vendor/tsort/.document +1 -0
- data/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
- data/lib/bundler/vendor/tsort/lib/tsort.rb +455 -0
- data/lib/bundler/vendor/uri/.document +1 -0
- data/lib/bundler/vendor/uri/LICENSE.txt +22 -0
- data/lib/bundler/vendor/uri/lib/uri/common.rb +316 -207
- data/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
- data/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -2
- data/lib/bundler/vendor/uri/lib/uri/generic.rb +33 -13
- data/lib/bundler/vendor/uri/lib/uri/http.rb +40 -3
- data/lib/bundler/vendor/uri/lib/uri/https.rb +2 -2
- data/lib/bundler/vendor/uri/lib/uri/ldap.rb +2 -2
- data/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
- data/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -3
- data/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +16 -23
- data/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +105 -47
- data/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/lib/bundler/vendor/uri/lib/uri/ws.rb +83 -0
- data/lib/bundler/vendor/uri/lib/uri/wss.rb +23 -0
- data/lib/bundler/vendor/uri/lib/uri.rb +3 -3
- data/lib/bundler/vendored_net_http.rb +23 -0
- data/lib/bundler/vendored_persistent.rb +0 -36
- data/lib/bundler/{vendored_molinillo.rb → vendored_pub_grub.rb} +1 -1
- data/lib/bundler/vendored_timeout.rb +12 -0
- data/lib/bundler/{vendored_tmpdir.rb → vendored_tsort.rb} +1 -1
- data/lib/bundler/vendored_uri.rb +18 -1
- data/lib/bundler/version.rb +5 -1
- data/lib/bundler/vlad.rb +1 -1
- data/lib/bundler/worker.rb +7 -9
- data/lib/bundler/yaml_serializer.rb +21 -12
- data/lib/bundler.rb +114 -121
- metadata +87 -41
- data/lib/bundler/dep_proxy.rb +0 -55
- data/lib/bundler/gemdeps.rb +0 -29
- data/lib/bundler/psyched_yaml.rb +0 -22
- data/lib/bundler/templates/gems.rb +0 -8
- data/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +0 -5
- data/lib/bundler/templates/newgem/travis.yml.tt +0 -6
- data/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +0 -66
- data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
- data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
- data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -143
- data/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
- data/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
- data/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
- data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
- data/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
- data/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
- data/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
- data/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
- data/lib/bundler/version_ranges.rb +0 -122
data/lib/bundler/cli/config.rb
CHANGED
@@ -2,17 +2,17 @@
|
|
2
2
|
|
3
3
|
module Bundler
|
4
4
|
class CLI::Config < Thor
|
5
|
-
class_option :parseable, :
|
5
|
+
class_option :parseable, type: :boolean, banner: "Use minimal formatting for more parseable output"
|
6
6
|
|
7
7
|
def self.scope_options
|
8
|
-
method_option :global, :
|
9
|
-
method_option :local, :
|
8
|
+
method_option :global, type: :boolean, banner: "Only change the global config"
|
9
|
+
method_option :local, type: :boolean, banner: "Only change the local config"
|
10
10
|
end
|
11
11
|
private_class_method :scope_options
|
12
12
|
|
13
|
-
desc "base NAME [VALUE]", "The Bundler 1 config interface", :
|
13
|
+
desc "base NAME [VALUE]", "The Bundler 1 config interface", hide: true
|
14
14
|
scope_options
|
15
|
-
method_option :delete, :
|
15
|
+
method_option :delete, type: :boolean, banner: "delete"
|
16
16
|
def base(name = nil, *value)
|
17
17
|
new_args =
|
18
18
|
if ARGV.size == 1
|
@@ -25,8 +25,9 @@ module Bundler
|
|
25
25
|
["config", "get", ARGV[1]]
|
26
26
|
end
|
27
27
|
|
28
|
-
|
29
|
-
|
28
|
+
message = "Using the `config` command without a subcommand [list, get, set, unset] is deprecated and will be removed in the future. Use `bundle #{new_args.join(" ")}` instead."
|
29
|
+
removed_message = "Using the `config` command without a subcommand [list, get, set, unset] is has been removed. Use `bundle #{new_args.join(" ")}` instead."
|
30
|
+
SharedHelpers.major_deprecation 3, message, removed_message: removed_message
|
30
31
|
|
31
32
|
Base.new(options, name, value, self).run
|
32
33
|
end
|
@@ -180,7 +181,7 @@ module Bundler
|
|
180
181
|
scopes = %w[global local].select {|s| options[s] }
|
181
182
|
case scopes.size
|
182
183
|
when 0
|
183
|
-
@scope = "global"
|
184
|
+
@scope = inside_app? ? "local" : "global"
|
184
185
|
@explicit_scope = false
|
185
186
|
when 1
|
186
187
|
@scope = scopes.first
|
@@ -189,6 +190,15 @@ module Bundler
|
|
189
190
|
"The options #{scopes.join " and "} were specified. Please only use one of the switches at a time."
|
190
191
|
end
|
191
192
|
end
|
193
|
+
|
194
|
+
private
|
195
|
+
|
196
|
+
def inside_app?
|
197
|
+
Bundler.root
|
198
|
+
true
|
199
|
+
rescue GemfileNotFound
|
200
|
+
false
|
201
|
+
end
|
192
202
|
end
|
193
203
|
end
|
194
204
|
end
|
data/lib/bundler/cli/console.rb
CHANGED
@@ -9,8 +9,9 @@ module Bundler
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def run
|
12
|
-
|
13
|
-
|
12
|
+
message = "bundle console will be replaced by `bin/console` generated by `bundle gem <name>`"
|
13
|
+
removed_message = "bundle console has been replaced by `bin/console` generated by `bundle gem <name>`"
|
14
|
+
Bundler::SharedHelpers.major_deprecation 2, message, removed_message: removed_message
|
14
15
|
|
15
16
|
group ? Bundler.require(:default, *group.split(" ").map!(&:to_sym)) : Bundler.require
|
16
17
|
ARGV.clear
|
@@ -30,9 +31,9 @@ module Bundler
|
|
30
31
|
|
31
32
|
def get_constant(name)
|
32
33
|
const_name = {
|
33
|
-
"pry"
|
34
|
+
"pry" => :Pry,
|
34
35
|
"ripl" => :Ripl,
|
35
|
-
"irb"
|
36
|
+
"irb" => :IRB,
|
36
37
|
}[name]
|
37
38
|
Object.const_get(const_name)
|
38
39
|
rescue NameError
|
data/lib/bundler/cli/doctor.rb
CHANGED
@@ -1,11 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "rbconfig"
|
4
|
+
require "shellwords"
|
5
|
+
require "fiddle"
|
4
6
|
|
5
7
|
module Bundler
|
6
8
|
class CLI::Doctor
|
7
|
-
DARWIN_REGEX = /\s+(.+) \(compatibility
|
8
|
-
LDD_REGEX = /\t\S+ => (\S+) \(\S+\)
|
9
|
+
DARWIN_REGEX = /\s+(.+) \(compatibility /
|
10
|
+
LDD_REGEX = /\t\S+ => (\S+) \(\S+\)/
|
9
11
|
|
10
12
|
attr_reader :options
|
11
13
|
|
@@ -22,14 +24,14 @@ module Bundler
|
|
22
24
|
end
|
23
25
|
|
24
26
|
def dylibs_darwin(path)
|
25
|
-
output = `/usr/bin/otool -L
|
27
|
+
output = `/usr/bin/otool -L #{path.shellescape}`.chomp
|
26
28
|
dylibs = output.split("\n")[1..-1].map {|l| l.match(DARWIN_REGEX).captures[0] }.uniq
|
27
29
|
# ignore @rpath and friends
|
28
30
|
dylibs.reject {|dylib| dylib.start_with? "@" }
|
29
31
|
end
|
30
32
|
|
31
33
|
def dylibs_ldd(path)
|
32
|
-
output = `/usr/bin/ldd
|
34
|
+
output = `/usr/bin/ldd #{path.shellescape}`.chomp
|
33
35
|
output.split("\n").map do |l|
|
34
36
|
match = l.match(LDD_REGEX)
|
35
37
|
next if match.nil?
|
@@ -70,7 +72,12 @@ module Bundler
|
|
70
72
|
|
71
73
|
definition.specs.each do |spec|
|
72
74
|
bundles_for_gem(spec).each do |bundle|
|
73
|
-
bad_paths = dylibs(bundle).select
|
75
|
+
bad_paths = dylibs(bundle).select do |f|
|
76
|
+
Fiddle.dlopen(f)
|
77
|
+
false
|
78
|
+
rescue Fiddle::DLError
|
79
|
+
true
|
80
|
+
end
|
74
81
|
if bad_paths.any?
|
75
82
|
broken_links[spec] ||= []
|
76
83
|
broken_links[spec].concat(bad_paths)
|
data/lib/bundler/cli/exec.rb
CHANGED
@@ -12,7 +12,7 @@ module Bundler
|
|
12
12
|
@options = options
|
13
13
|
@cmd = args.shift
|
14
14
|
@args = args
|
15
|
-
@args << { :
|
15
|
+
@args << { close_others: !options.keep_file_descriptors? } unless Bundler.current_ruby.jruby?
|
16
16
|
end
|
17
17
|
|
18
18
|
def run
|
data/lib/bundler/cli/fund.rb
CHANGED
data/lib/bundler/cli/gem.rb
CHANGED
@@ -11,11 +11,11 @@ module Bundler
|
|
11
11
|
class CLI::Gem
|
12
12
|
TEST_FRAMEWORK_VERSIONS = {
|
13
13
|
"rspec" => "3.0",
|
14
|
-
"minitest" => "5.
|
14
|
+
"minitest" => "5.16",
|
15
15
|
"test-unit" => "3.0",
|
16
16
|
}.freeze
|
17
17
|
|
18
|
-
attr_reader :options, :gem_name, :thor, :name, :target
|
18
|
+
attr_reader :options, :gem_name, :thor, :name, :target, :extension
|
19
19
|
|
20
20
|
def initialize(options, gem_name, thor)
|
21
21
|
@options = options
|
@@ -28,7 +28,10 @@ module Bundler
|
|
28
28
|
@name = @gem_name
|
29
29
|
@target = SharedHelpers.pwd.join(gem_name)
|
30
30
|
|
31
|
-
|
31
|
+
@extension = options[:ext]
|
32
|
+
|
33
|
+
validate_ext_name if @extension
|
34
|
+
validate_rust_builder_rubygems_version if @extension == "rust"
|
32
35
|
end
|
33
36
|
|
34
37
|
def run
|
@@ -38,6 +41,7 @@ module Bundler
|
|
38
41
|
namespaced_path = name.tr("-", "/")
|
39
42
|
constant_name = name.gsub(/-[_-]*(?![_-]|$)/) { "::" }.gsub(/([_-]+|(::)|^)(.|$)/) { $2.to_s + $3.upcase }
|
40
43
|
constant_array = constant_name.split("::")
|
44
|
+
minitest_constant_name = constant_array.clone.tap {|a| a[-1] = "Test#{a[-1]}" }.join("::") # Foo::Bar => Foo::TestBar
|
41
45
|
|
42
46
|
use_git = Bundler.git_present? && options[:git]
|
43
47
|
|
@@ -54,21 +58,23 @@ module Bundler
|
|
54
58
|
end
|
55
59
|
|
56
60
|
config = {
|
57
|
-
:
|
58
|
-
:
|
59
|
-
:
|
60
|
-
:
|
61
|
-
:
|
62
|
-
:
|
63
|
-
:
|
64
|
-
:
|
65
|
-
:
|
66
|
-
:
|
67
|
-
:
|
68
|
-
:
|
69
|
-
:
|
70
|
-
:
|
71
|
-
:
|
61
|
+
name: name,
|
62
|
+
underscored_name: underscored_name,
|
63
|
+
namespaced_path: namespaced_path,
|
64
|
+
makefile_path: "#{underscored_name}/#{underscored_name}",
|
65
|
+
constant_name: constant_name,
|
66
|
+
constant_array: constant_array,
|
67
|
+
author: git_author_name.empty? ? "TODO: Write your name" : git_author_name,
|
68
|
+
email: git_user_email.empty? ? "TODO: Write your email address" : git_user_email,
|
69
|
+
test: options[:test],
|
70
|
+
ext: extension,
|
71
|
+
exe: options[:exe],
|
72
|
+
bundler_version: bundler_dependency_version,
|
73
|
+
git: use_git,
|
74
|
+
github_username: github_username.empty? ? "[USERNAME]" : github_username,
|
75
|
+
required_ruby_version: required_ruby_version,
|
76
|
+
rust_builder_required_rubygems_version: rust_builder_required_rubygems_version,
|
77
|
+
minitest_constant_name: minitest_constant_name,
|
72
78
|
}
|
73
79
|
ensure_safe_gem_name(name, constant_array)
|
74
80
|
|
@@ -76,6 +82,7 @@ module Bundler
|
|
76
82
|
"#{Bundler.preferred_gemfile_name}.tt" => Bundler.preferred_gemfile_name,
|
77
83
|
"lib/newgem.rb.tt" => "lib/#{namespaced_path}.rb",
|
78
84
|
"lib/newgem/version.rb.tt" => "lib/#{namespaced_path}/version.rb",
|
85
|
+
"sig/newgem.rbs.tt" => "sig/#{namespaced_path}.rbs",
|
79
86
|
"newgem.gemspec.tt" => "#{name}.gemspec",
|
80
87
|
"Rakefile.tt" => "Rakefile",
|
81
88
|
"README.md.tt" => "README.md",
|
@@ -103,9 +110,17 @@ module Bundler
|
|
103
110
|
)
|
104
111
|
config[:test_task] = :spec
|
105
112
|
when "minitest"
|
113
|
+
# Generate path for minitest target file (FileList["test/**/test_*.rb"])
|
114
|
+
# foo => test/test_foo.rb
|
115
|
+
# foo-bar => test/foo/test_bar.rb
|
116
|
+
# foo_bar => test/test_foo_bar.rb
|
117
|
+
paths = namespaced_path.rpartition("/")
|
118
|
+
paths[2] = "test_#{paths[2]}"
|
119
|
+
minitest_namespaced_path = paths.join("")
|
120
|
+
|
106
121
|
templates.merge!(
|
107
122
|
"test/minitest/test_helper.rb.tt" => "test/test_helper.rb",
|
108
|
-
"test/minitest/
|
123
|
+
"test/minitest/test_newgem.rb.tt" => "test/#{minitest_namespaced_path}.rb"
|
109
124
|
)
|
110
125
|
config[:test_task] = :test
|
111
126
|
when "test-unit"
|
@@ -121,12 +136,13 @@ module Bundler
|
|
121
136
|
case config[:ci]
|
122
137
|
when "github"
|
123
138
|
templates.merge!("github/workflows/main.yml.tt" => ".github/workflows/main.yml")
|
124
|
-
|
125
|
-
templates.merge!("travis.yml.tt" => ".travis.yml")
|
139
|
+
config[:ci_config_path] = ".github "
|
126
140
|
when "gitlab"
|
127
141
|
templates.merge!("gitlab-ci.yml.tt" => ".gitlab-ci.yml")
|
142
|
+
config[:ci_config_path] = ".gitlab-ci.yml "
|
128
143
|
when "circle"
|
129
144
|
templates.merge!("circleci/config.yml.tt" => ".circleci/config.yml")
|
145
|
+
config[:ci_config_path] = ".circleci "
|
130
146
|
end
|
131
147
|
|
132
148
|
if ask_and_set(:mit, "Do you want to license your code permissively under the MIT license?",
|
@@ -163,27 +179,37 @@ module Bundler
|
|
163
179
|
templates.merge!("CHANGELOG.md.tt" => "CHANGELOG.md")
|
164
180
|
end
|
165
181
|
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
"and the Ruby Style Guides (https://github.com/rubocop-hq/ruby-style-guide).")
|
171
|
-
config[:rubocop] = true
|
172
|
-
config[:rubocop_version] = rubocop_version
|
182
|
+
config[:linter] = ask_and_set_linter
|
183
|
+
case config[:linter]
|
184
|
+
when "rubocop"
|
185
|
+
config[:linter_version] = rubocop_version
|
173
186
|
Bundler.ui.info "RuboCop enabled in config"
|
174
187
|
templates.merge!("rubocop.yml.tt" => ".rubocop.yml")
|
188
|
+
when "standard"
|
189
|
+
config[:linter_version] = standard_version
|
190
|
+
Bundler.ui.info "Standard enabled in config"
|
191
|
+
templates.merge!("standard.yml.tt" => ".standard.yml")
|
175
192
|
end
|
176
193
|
|
177
194
|
templates.merge!("exe/newgem.tt" => "exe/#{name}") if config[:exe]
|
178
195
|
|
179
|
-
if
|
196
|
+
if extension == "c"
|
180
197
|
templates.merge!(
|
181
|
-
"ext/newgem/extconf.rb.tt" => "ext/#{name}/extconf.rb",
|
198
|
+
"ext/newgem/extconf-c.rb.tt" => "ext/#{name}/extconf.rb",
|
182
199
|
"ext/newgem/newgem.h.tt" => "ext/#{name}/#{underscored_name}.h",
|
183
200
|
"ext/newgem/newgem.c.tt" => "ext/#{name}/#{underscored_name}.c"
|
184
201
|
)
|
185
202
|
end
|
186
203
|
|
204
|
+
if extension == "rust"
|
205
|
+
templates.merge!(
|
206
|
+
"Cargo.toml.tt" => "Cargo.toml",
|
207
|
+
"ext/newgem/Cargo.toml.tt" => "ext/#{name}/Cargo.toml",
|
208
|
+
"ext/newgem/extconf-rust.rb.tt" => "ext/#{name}/extconf.rb",
|
209
|
+
"ext/newgem/src/lib.rs.tt" => "ext/#{name}/src/lib.rs",
|
210
|
+
)
|
211
|
+
end
|
212
|
+
|
187
213
|
if target.exist? && !target.directory?
|
188
214
|
Bundler.ui.error "Couldn't create a new gem named `#{gem_name}` because there's an existing file named `#{gem_name}`."
|
189
215
|
exit Bundler::BundlerError.all_errors[Bundler::GenericSystemCallError]
|
@@ -209,9 +235,7 @@ module Bundler
|
|
209
235
|
end
|
210
236
|
|
211
237
|
if use_git
|
212
|
-
|
213
|
-
`git add .`
|
214
|
-
end
|
238
|
+
IO.popen(%w[git add .], { chdir: target }, &:read)
|
215
239
|
end
|
216
240
|
|
217
241
|
# Open gemspec in editor
|
@@ -251,6 +275,7 @@ module Bundler
|
|
251
275
|
end
|
252
276
|
|
253
277
|
def ask_and_set_test_framework
|
278
|
+
return if skip?(:test)
|
254
279
|
test_framework = options[:test] || Bundler.settings["gem.test"]
|
255
280
|
|
256
281
|
if test_framework.to_s.empty?
|
@@ -258,7 +283,7 @@ module Bundler
|
|
258
283
|
Bundler.ui.info hint_text("test")
|
259
284
|
|
260
285
|
result = Bundler.ui.ask "Enter a test framework. rspec/minitest/test-unit/(none):"
|
261
|
-
if
|
286
|
+
if /rspec|minitest|test-unit/.match?(result)
|
262
287
|
test_framework = result
|
263
288
|
else
|
264
289
|
test_framework = false
|
@@ -276,6 +301,10 @@ module Bundler
|
|
276
301
|
test_framework
|
277
302
|
end
|
278
303
|
|
304
|
+
def skip?(option)
|
305
|
+
options.key?(option) && options[option].nil?
|
306
|
+
end
|
307
|
+
|
279
308
|
def hint_text(setting)
|
280
309
|
if Bundler.settings["gem.#{setting}"] == false
|
281
310
|
"Your choice will only be applied to this gem."
|
@@ -286,6 +315,7 @@ module Bundler
|
|
286
315
|
end
|
287
316
|
|
288
317
|
def ask_and_set_ci
|
318
|
+
return if skip?(:ci)
|
289
319
|
ci_template = options[:ci] || Bundler.settings["gem.ci"]
|
290
320
|
|
291
321
|
if ci_template.to_s.empty?
|
@@ -294,12 +324,11 @@ module Bundler
|
|
294
324
|
"* CircleCI: https://circleci.com/\n" \
|
295
325
|
"* GitHub Actions: https://github.com/features/actions\n" \
|
296
326
|
"* GitLab CI: https://docs.gitlab.com/ee/ci/\n" \
|
297
|
-
"* Travis CI: https://travis-ci.org/\n" \
|
298
327
|
"\n"
|
299
328
|
Bundler.ui.info hint_text("ci")
|
300
329
|
|
301
|
-
result = Bundler.ui.ask "Enter a CI service. github/
|
302
|
-
if
|
330
|
+
result = Bundler.ui.ask "Enter a CI service. github/gitlab/circle/(none):"
|
331
|
+
if /github|gitlab|circle/.match?(result)
|
303
332
|
ci_template = result
|
304
333
|
else
|
305
334
|
ci_template = false
|
@@ -317,6 +346,64 @@ module Bundler
|
|
317
346
|
ci_template
|
318
347
|
end
|
319
348
|
|
349
|
+
def ask_and_set_linter
|
350
|
+
return if skip?(:linter)
|
351
|
+
linter_template = options[:linter] || Bundler.settings["gem.linter"]
|
352
|
+
linter_template = deprecated_rubocop_option if linter_template.nil?
|
353
|
+
|
354
|
+
if linter_template.to_s.empty?
|
355
|
+
Bundler.ui.confirm "Do you want to add a code linter and formatter to your gem? " \
|
356
|
+
"Supported Linters:\n" \
|
357
|
+
"* RuboCop: https://rubocop.org\n" \
|
358
|
+
"* Standard: https://github.com/standardrb/standard\n" \
|
359
|
+
"\n"
|
360
|
+
Bundler.ui.info hint_text("linter")
|
361
|
+
|
362
|
+
result = Bundler.ui.ask "Enter a linter. rubocop/standard/(none):"
|
363
|
+
if /rubocop|standard/.match?(result)
|
364
|
+
linter_template = result
|
365
|
+
else
|
366
|
+
linter_template = false
|
367
|
+
end
|
368
|
+
end
|
369
|
+
|
370
|
+
if Bundler.settings["gem.linter"].nil?
|
371
|
+
Bundler.settings.set_global("gem.linter", linter_template)
|
372
|
+
end
|
373
|
+
|
374
|
+
# Once gem.linter safely set, unset the deprecated gem.rubocop
|
375
|
+
unless Bundler.settings["gem.rubocop"].nil?
|
376
|
+
Bundler.settings.set_global("gem.rubocop", nil)
|
377
|
+
end
|
378
|
+
|
379
|
+
if options[:linter] == Bundler.settings["gem.linter"]
|
380
|
+
Bundler.ui.info "#{options[:linter]} is already configured, ignoring --linter flag."
|
381
|
+
end
|
382
|
+
|
383
|
+
linter_template
|
384
|
+
end
|
385
|
+
|
386
|
+
def deprecated_rubocop_option
|
387
|
+
if !options[:rubocop].nil?
|
388
|
+
if options[:rubocop]
|
389
|
+
Bundler::SharedHelpers.major_deprecation 2,
|
390
|
+
"--rubocop is deprecated, use --linter=rubocop",
|
391
|
+
removed_message: "--rubocop has been removed, use --linter=rubocop"
|
392
|
+
"rubocop"
|
393
|
+
else
|
394
|
+
Bundler::SharedHelpers.major_deprecation 2,
|
395
|
+
"--no-rubocop is deprecated, use --linter",
|
396
|
+
removed_message: "--no-rubocop has been removed, use --linter"
|
397
|
+
false
|
398
|
+
end
|
399
|
+
elsif !Bundler.settings["gem.rubocop"].nil?
|
400
|
+
Bundler::SharedHelpers.major_deprecation 2,
|
401
|
+
"config gem.rubocop is deprecated; we've updated your config to use gem.linter instead",
|
402
|
+
removed_message: "config gem.rubocop has been removed; we've updated your config to use gem.linter instead"
|
403
|
+
Bundler.settings["gem.rubocop"] ? "rubocop" : false
|
404
|
+
end
|
405
|
+
end
|
406
|
+
|
320
407
|
def bundler_dependency_version
|
321
408
|
v = Gem::Version.new(Bundler::VERSION)
|
322
409
|
req = v.segments[0..1]
|
@@ -325,7 +412,7 @@ module Bundler
|
|
325
412
|
end
|
326
413
|
|
327
414
|
def ensure_safe_gem_name(name, constant_array)
|
328
|
-
if
|
415
|
+
if /^\d/.match?(name)
|
329
416
|
Bundler.ui.error "Invalid gem name #{name} Please give a name which does not start with numbers."
|
330
417
|
exit 1
|
331
418
|
end
|
@@ -351,20 +438,26 @@ module Bundler
|
|
351
438
|
thor.run(%(#{editor} "#{file}"))
|
352
439
|
end
|
353
440
|
|
441
|
+
def rust_builder_required_rubygems_version
|
442
|
+
"3.3.11"
|
443
|
+
end
|
444
|
+
|
354
445
|
def required_ruby_version
|
355
|
-
|
356
|
-
elsif Gem.ruby_version < Gem::Version.new("2.5.a") then "2.4.0"
|
357
|
-
elsif Gem.ruby_version < Gem::Version.new("2.6.a") then "2.5.0"
|
358
|
-
else
|
359
|
-
"2.6.0"
|
360
|
-
end
|
446
|
+
"3.0.0"
|
361
447
|
end
|
362
448
|
|
363
449
|
def rubocop_version
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
450
|
+
"1.21"
|
451
|
+
end
|
452
|
+
|
453
|
+
def standard_version
|
454
|
+
"1.3"
|
455
|
+
end
|
456
|
+
|
457
|
+
def validate_rust_builder_rubygems_version
|
458
|
+
if Gem::Version.new(rust_builder_required_rubygems_version) > Gem.rubygems_version
|
459
|
+
Bundler.ui.error "Your RubyGems version (#{Gem.rubygems_version}) is too old to build Rust extension. Please update your RubyGems using `gem update --system` or any other way and try again."
|
460
|
+
exit 1
|
368
461
|
end
|
369
462
|
end
|
370
463
|
end
|
data/lib/bundler/cli/info.rb
CHANGED
@@ -18,34 +18,29 @@ module Bundler
|
|
18
18
|
|
19
19
|
if spec
|
20
20
|
return print_gem_path(spec) if @options[:path]
|
21
|
+
return print_gem_version(spec) if @options[:version]
|
21
22
|
print_gem_info(spec)
|
22
23
|
end
|
23
24
|
end
|
24
25
|
|
25
26
|
private
|
26
27
|
|
27
|
-
def spec_for_gem(
|
28
|
-
|
29
|
-
spec || default_gem_spec(gem_name) || Bundler::CLI::Common.select_spec(gem_name, :regex_match)
|
28
|
+
def spec_for_gem(name)
|
29
|
+
Bundler::CLI::Common.select_spec(name, :regex_match)
|
30
30
|
end
|
31
31
|
|
32
|
-
def
|
33
|
-
|
34
|
-
gem_spec = Gem::Specification.find_all_by_name(gem_name).last
|
35
|
-
return gem_spec if gem_spec && gem_spec.respond_to?(:default_gem?) && gem_spec.default_gem?
|
36
|
-
end
|
37
|
-
|
38
|
-
def spec_not_found(gem_name)
|
39
|
-
raise GemNotFound, Bundler::CLI::Common.gem_not_found_message(gem_name, Bundler.definition.dependencies)
|
32
|
+
def print_gem_version(spec)
|
33
|
+
Bundler.ui.info spec.version.to_s
|
40
34
|
end
|
41
35
|
|
42
36
|
def print_gem_path(spec)
|
43
|
-
|
44
|
-
|
37
|
+
name = spec.name
|
38
|
+
if name == "bundler"
|
39
|
+
path = File.expand_path("../../..", __dir__)
|
45
40
|
else
|
46
41
|
path = spec.full_gem_path
|
47
|
-
|
48
|
-
return Bundler.ui.warn "The gem #{
|
42
|
+
if spec.deleted_gem?
|
43
|
+
return Bundler.ui.warn "The gem #{name} has been deleted. It was installed at: #{path}"
|
49
44
|
end
|
50
45
|
end
|
51
46
|
|
@@ -54,8 +49,9 @@ module Bundler
|
|
54
49
|
|
55
50
|
def print_gem_info(spec)
|
56
51
|
metadata = spec.metadata
|
52
|
+
name = spec.name
|
57
53
|
gem_info = String.new
|
58
|
-
gem_info << " * #{
|
54
|
+
gem_info << " * #{name} (#{spec.version}#{spec.git_version})\n"
|
59
55
|
gem_info << "\tSummary: #{spec.summary}\n" if spec.summary
|
60
56
|
gem_info << "\tHomepage: #{spec.homepage}\n" if spec.homepage
|
61
57
|
gem_info << "\tDocumentation: #{metadata["documentation_uri"]}\n" if metadata.key?("documentation_uri")
|
@@ -66,8 +62,22 @@ module Bundler
|
|
66
62
|
gem_info << "\tBug Tracker: #{metadata["bug_tracker_uri"]}\n" if metadata.key?("bug_tracker_uri")
|
67
63
|
gem_info << "\tMailing List: #{metadata["mailing_list_uri"]}\n" if metadata.key?("mailing_list_uri")
|
68
64
|
gem_info << "\tPath: #{spec.full_gem_path}\n"
|
69
|
-
gem_info << "\tDefault Gem: yes" if spec.respond_to?(:default_gem?) && spec.default_gem?
|
65
|
+
gem_info << "\tDefault Gem: yes\n" if spec.respond_to?(:default_gem?) && spec.default_gem?
|
66
|
+
gem_info << "\tReverse Dependencies: \n\t\t#{gem_dependencies.join("\n\t\t")}" if gem_dependencies.any?
|
67
|
+
|
68
|
+
if name != "bundler" && spec.deleted_gem?
|
69
|
+
return Bundler.ui.warn "The gem #{name} has been deleted. Gemspec information is still available though:\n#{gem_info}"
|
70
|
+
end
|
71
|
+
|
70
72
|
Bundler.ui.info gem_info
|
71
73
|
end
|
74
|
+
|
75
|
+
def gem_dependencies
|
76
|
+
@gem_dependencies ||= Bundler.definition.specs.map do |spec|
|
77
|
+
dependency = spec.dependencies.find {|dep| dep.name == gem_name }
|
78
|
+
next unless dependency
|
79
|
+
"#{spec.name} (#{spec.version}) depends on #{gem_name} (#{dependency.requirements_list.join(", ")})"
|
80
|
+
end.compact.sort
|
81
|
+
end
|
72
82
|
end
|
73
83
|
end
|
data/lib/bundler/cli/init.rb
CHANGED
@@ -32,7 +32,11 @@ module Bundler
|
|
32
32
|
file << spec.to_gemfile
|
33
33
|
end
|
34
34
|
else
|
35
|
-
|
35
|
+
File.open(File.expand_path("../templates/Gemfile", __dir__), "r") do |template|
|
36
|
+
File.open(gemfile, "wb") do |destination|
|
37
|
+
IO.copy_stream(template, destination)
|
38
|
+
end
|
39
|
+
end
|
36
40
|
end
|
37
41
|
|
38
42
|
puts "Writing new #{gemfile} to #{SharedHelpers.pwd}/#{gemfile}"
|
@@ -41,7 +45,7 @@ module Bundler
|
|
41
45
|
private
|
42
46
|
|
43
47
|
def gemfile
|
44
|
-
@gemfile ||= Bundler.preferred_gemfile_name
|
48
|
+
@gemfile ||= options[:gemfile] || Bundler.preferred_gemfile_name
|
45
49
|
end
|
46
50
|
end
|
47
51
|
end
|