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
@@ -24,9 +24,9 @@ class Bundler::Thor
|
|
24
24
|
|
25
25
|
class << self
|
26
26
|
def deprecation_warning(message) #:nodoc:
|
27
|
-
unless ENV[
|
27
|
+
unless ENV["THOR_SILENCE_DEPRECATION"]
|
28
28
|
warn "Deprecation warning: #{message}\n" +
|
29
|
-
|
29
|
+
"You can silence deprecations warning by setting the environment variable THOR_SILENCE_DEPRECATION."
|
30
30
|
end
|
31
31
|
end
|
32
32
|
end
|
@@ -60,6 +60,7 @@ class Bundler::Thor
|
|
60
60
|
|
61
61
|
command_options = config.delete(:command_options) # hook for start
|
62
62
|
parse_options = parse_options.merge(command_options) if command_options
|
63
|
+
|
63
64
|
if local_options.is_a?(Array)
|
64
65
|
array_options = local_options
|
65
66
|
hash_options = {}
|
@@ -73,9 +74,24 @@ class Bundler::Thor
|
|
73
74
|
# Let Bundler::Thor::Options parse the options first, so it can remove
|
74
75
|
# declared options from the array. This will leave us with
|
75
76
|
# a list of arguments that weren't declared.
|
76
|
-
|
77
|
-
|
78
|
-
|
77
|
+
current_command = config[:current_command]
|
78
|
+
stop_on_unknown = self.class.stop_on_unknown_option? current_command
|
79
|
+
|
80
|
+
# Give a relation of options.
|
81
|
+
# After parsing, Bundler::Thor::Options check whether right relations are kept
|
82
|
+
relations = if current_command.nil?
|
83
|
+
{exclusive_option_names: [], at_least_one_option_names: []}
|
84
|
+
else
|
85
|
+
current_command.options_relation
|
86
|
+
end
|
87
|
+
|
88
|
+
self.class.class_exclusive_option_names.map { |n| relations[:exclusive_option_names] << n }
|
89
|
+
self.class.class_at_least_one_option_names.map { |n| relations[:at_least_one_option_names] << n }
|
90
|
+
|
91
|
+
disable_required_check = self.class.disable_required_check? current_command
|
92
|
+
|
93
|
+
opts = Bundler::Thor::Options.new(parse_options, hash_options, stop_on_unknown, disable_required_check, relations)
|
94
|
+
|
79
95
|
self.options = opts.parse(array_options)
|
80
96
|
self.options = config[:class_options].merge(options) if config[:class_options]
|
81
97
|
|
@@ -310,9 +326,92 @@ class Bundler::Thor
|
|
310
326
|
# :hide:: -- If you want to hide this option from the help.
|
311
327
|
#
|
312
328
|
def class_option(name, options = {})
|
329
|
+
unless [ Symbol, String ].any? { |klass| name.is_a?(klass) }
|
330
|
+
raise ArgumentError, "Expected a Symbol or String, got #{name.inspect}"
|
331
|
+
end
|
313
332
|
build_option(name, options, class_options)
|
314
333
|
end
|
315
334
|
|
335
|
+
# Adds and declares option group for exclusive options in the
|
336
|
+
# block and arguments. You can declare options as the outside of the block.
|
337
|
+
#
|
338
|
+
# ==== Parameters
|
339
|
+
# Array[Bundler::Thor::Option.name]
|
340
|
+
#
|
341
|
+
# ==== Examples
|
342
|
+
#
|
343
|
+
# class_exclusive do
|
344
|
+
# class_option :one
|
345
|
+
# class_option :two
|
346
|
+
# end
|
347
|
+
#
|
348
|
+
# Or
|
349
|
+
#
|
350
|
+
# class_option :one
|
351
|
+
# class_option :two
|
352
|
+
# class_exclusive :one, :two
|
353
|
+
#
|
354
|
+
# If you give "--one" and "--two" at the same time ExclusiveArgumentsError
|
355
|
+
# will be raised.
|
356
|
+
#
|
357
|
+
def class_exclusive(*args, &block)
|
358
|
+
register_options_relation_for(:class_options,
|
359
|
+
:class_exclusive_option_names, *args, &block)
|
360
|
+
end
|
361
|
+
|
362
|
+
# Adds and declares option group for required at least one of options in the
|
363
|
+
# block and arguments. You can declare options as the outside of the block.
|
364
|
+
#
|
365
|
+
# ==== Examples
|
366
|
+
#
|
367
|
+
# class_at_least_one do
|
368
|
+
# class_option :one
|
369
|
+
# class_option :two
|
370
|
+
# end
|
371
|
+
#
|
372
|
+
# Or
|
373
|
+
#
|
374
|
+
# class_option :one
|
375
|
+
# class_option :two
|
376
|
+
# class_at_least_one :one, :two
|
377
|
+
#
|
378
|
+
# If you do not give "--one" and "--two" AtLeastOneRequiredArgumentError
|
379
|
+
# will be raised.
|
380
|
+
#
|
381
|
+
# You can use class_at_least_one and class_exclusive at the same time.
|
382
|
+
#
|
383
|
+
# class_exclusive do
|
384
|
+
# class_at_least_one do
|
385
|
+
# class_option :one
|
386
|
+
# class_option :two
|
387
|
+
# end
|
388
|
+
# end
|
389
|
+
#
|
390
|
+
# Then it is required either only one of "--one" or "--two".
|
391
|
+
#
|
392
|
+
def class_at_least_one(*args, &block)
|
393
|
+
register_options_relation_for(:class_options,
|
394
|
+
:class_at_least_one_option_names, *args, &block)
|
395
|
+
end
|
396
|
+
|
397
|
+
# Returns this class exclusive options array set, looking up in the ancestors chain.
|
398
|
+
#
|
399
|
+
# ==== Returns
|
400
|
+
# Array[Array[Bundler::Thor::Option.name]]
|
401
|
+
#
|
402
|
+
def class_exclusive_option_names
|
403
|
+
@class_exclusive_option_names ||= from_superclass(:class_exclusive_option_names, [])
|
404
|
+
end
|
405
|
+
|
406
|
+
# Returns this class at least one of required options array set, looking up in the ancestors chain.
|
407
|
+
#
|
408
|
+
# ==== Returns
|
409
|
+
# Array[Array[Bundler::Thor::Option.name]]
|
410
|
+
#
|
411
|
+
def class_at_least_one_option_names
|
412
|
+
@class_at_least_one_option_names ||= from_superclass(:class_at_least_one_option_names, [])
|
413
|
+
end
|
414
|
+
|
316
415
|
# Removes a previous defined argument. If :undefine is given, undefine
|
317
416
|
# accessors as well.
|
318
417
|
#
|
@@ -506,7 +605,7 @@ class Bundler::Thor
|
|
506
605
|
#
|
507
606
|
def public_command(*names)
|
508
607
|
names.each do |name|
|
509
|
-
class_eval "def #{name}(*); super end"
|
608
|
+
class_eval "def #{name}(*); super end", __FILE__, __LINE__
|
510
609
|
end
|
511
610
|
end
|
512
611
|
alias_method :public_task, :public_command
|
@@ -558,20 +657,19 @@ class Bundler::Thor
|
|
558
657
|
return if options.empty?
|
559
658
|
|
560
659
|
list = []
|
561
|
-
padding = options.map { |o| o.
|
562
|
-
|
660
|
+
padding = options.map { |o| o.aliases_for_usage.size }.max.to_i
|
563
661
|
options.each do |option|
|
564
662
|
next if option.hide
|
565
663
|
item = [option.usage(padding)]
|
566
664
|
item.push(option.description ? "# #{option.description}" : "")
|
567
665
|
|
568
666
|
list << item
|
569
|
-
list << ["", "# Default: #{option.
|
570
|
-
list << ["", "# Possible values: #{option.
|
667
|
+
list << ["", "# Default: #{option.print_default}"] if option.show_default?
|
668
|
+
list << ["", "# Possible values: #{option.enum_to_s}"] if option.enum
|
571
669
|
end
|
572
670
|
|
573
671
|
shell.say(group_name ? "#{group_name} options:" : "Options:")
|
574
|
-
shell.print_table(list, :
|
672
|
+
shell.print_table(list, indent: 2)
|
575
673
|
shell.say ""
|
576
674
|
end
|
577
675
|
|
@@ -588,7 +686,7 @@ class Bundler::Thor
|
|
588
686
|
# options<Hash>:: Described in both class_option and method_option.
|
589
687
|
# scope<Hash>:: Options hash that is being built up
|
590
688
|
def build_option(name, options, scope) #:nodoc:
|
591
|
-
scope[name] = Bundler::Thor::Option.new(name, {:
|
689
|
+
scope[name] = Bundler::Thor::Option.new(name, {check_default_type: check_default_type}.merge!(options))
|
592
690
|
end
|
593
691
|
|
594
692
|
# Receives a hash of options, parse them and add to the scope. This is a
|
@@ -610,7 +708,7 @@ class Bundler::Thor
|
|
610
708
|
def find_and_refresh_command(name) #:nodoc:
|
611
709
|
if commands[name.to_s]
|
612
710
|
commands[name.to_s]
|
613
|
-
elsif command = all_commands[name.to_s] # rubocop:disable AssignmentInCondition
|
711
|
+
elsif command = all_commands[name.to_s] # rubocop:disable Lint/AssignmentInCondition
|
614
712
|
commands[name.to_s] = command.clone
|
615
713
|
else
|
616
714
|
raise ArgumentError, "You supplied :for => #{name.inspect}, but the command #{name.inspect} could not be found."
|
@@ -618,7 +716,7 @@ class Bundler::Thor
|
|
618
716
|
end
|
619
717
|
alias_method :find_and_refresh_task, :find_and_refresh_command
|
620
718
|
|
621
|
-
#
|
719
|
+
# Every time someone inherits from a Bundler::Thor class, register the klass
|
622
720
|
# and file into baseclass.
|
623
721
|
def inherited(klass)
|
624
722
|
super(klass)
|
@@ -694,6 +792,34 @@ class Bundler::Thor
|
|
694
792
|
def dispatch(command, given_args, given_opts, config) #:nodoc:
|
695
793
|
raise NotImplementedError
|
696
794
|
end
|
795
|
+
|
796
|
+
# Register a relation of options for target(method_option/class_option)
|
797
|
+
# by args and block.
|
798
|
+
def register_options_relation_for(target, relation, *args, &block) # :nodoc:
|
799
|
+
opt = args.pop if args.last.is_a? Hash
|
800
|
+
opt ||= {}
|
801
|
+
names = args.map{ |arg| arg.to_s }
|
802
|
+
names += built_option_names(target, opt, &block) if block_given?
|
803
|
+
command_scope_member(relation, opt) << names
|
804
|
+
end
|
805
|
+
|
806
|
+
# Get target(method_options or class_options) options
|
807
|
+
# of before and after by block evaluation.
|
808
|
+
def built_option_names(target, opt = {}, &block) # :nodoc:
|
809
|
+
before = command_scope_member(target, opt).map{ |k,v| v.name }
|
810
|
+
instance_eval(&block)
|
811
|
+
after = command_scope_member(target, opt).map{ |k,v| v.name }
|
812
|
+
after - before
|
813
|
+
end
|
814
|
+
|
815
|
+
# Get command scope member by name.
|
816
|
+
def command_scope_member(name, options = {}) # :nodoc:
|
817
|
+
if options[:for]
|
818
|
+
find_and_refresh_command(options[:for]).send(name)
|
819
|
+
else
|
820
|
+
send(name)
|
821
|
+
end
|
822
|
+
end
|
697
823
|
end
|
698
824
|
end
|
699
825
|
end
|
@@ -1,14 +1,15 @@
|
|
1
1
|
class Bundler::Thor
|
2
|
-
class Command < Struct.new(:name, :description, :long_description, :usage, :options, :ancestor_name)
|
2
|
+
class Command < Struct.new(:name, :description, :long_description, :wrap_long_description, :usage, :options, :options_relation, :ancestor_name)
|
3
3
|
FILE_REGEXP = /^#{Regexp.escape(File.dirname(__FILE__))}/
|
4
4
|
|
5
|
-
def initialize(name, description, long_description, usage, options = nil)
|
6
|
-
super(name.to_s, description, long_description, usage, options || {})
|
5
|
+
def initialize(name, description, long_description, wrap_long_description, usage, options = nil, options_relation = nil)
|
6
|
+
super(name.to_s, description, long_description, wrap_long_description, usage, options || {}, options_relation || {})
|
7
7
|
end
|
8
8
|
|
9
9
|
def initialize_copy(other) #:nodoc:
|
10
10
|
super(other)
|
11
11
|
self.options = other.options.dup if other.options
|
12
|
+
self.options_relation = other.options_relation.dup if other.options_relation
|
12
13
|
end
|
13
14
|
|
14
15
|
def hidden?
|
@@ -62,6 +63,14 @@ class Bundler::Thor
|
|
62
63
|
end.join("\n")
|
63
64
|
end
|
64
65
|
|
66
|
+
def method_exclusive_option_names #:nodoc:
|
67
|
+
self.options_relation[:exclusive_option_names] || []
|
68
|
+
end
|
69
|
+
|
70
|
+
def method_at_least_one_option_names #:nodoc:
|
71
|
+
self.options_relation[:at_least_one_option_names] || []
|
72
|
+
end
|
73
|
+
|
65
74
|
protected
|
66
75
|
|
67
76
|
# Add usage with required arguments
|
@@ -127,7 +136,7 @@ class Bundler::Thor
|
|
127
136
|
# A dynamic command that handles method missing scenarios.
|
128
137
|
class DynamicCommand < Command
|
129
138
|
def initialize(name, options = nil)
|
130
|
-
super(name.to_s, "A dynamically-generated command", name.to_s, name.to_s, options)
|
139
|
+
super(name.to_s, "A dynamically-generated command", name.to_s, nil, name.to_s, options)
|
131
140
|
end
|
132
141
|
|
133
142
|
def run(instance, args = [])
|
@@ -28,10 +28,20 @@ class Bundler::Thor
|
|
28
28
|
super(convert_key(key))
|
29
29
|
end
|
30
30
|
|
31
|
+
def except(*keys)
|
32
|
+
dup.tap do |hash|
|
33
|
+
keys.each { |key| hash.delete(convert_key(key)) }
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
31
37
|
def fetch(key, *args)
|
32
38
|
super(convert_key(key), *args)
|
33
39
|
end
|
34
40
|
|
41
|
+
def slice(*keys)
|
42
|
+
super(*keys.map{ |key| convert_key(key) })
|
43
|
+
end
|
44
|
+
|
35
45
|
def key?(key)
|
36
46
|
super(convert_key(key))
|
37
47
|
end
|
@@ -1,18 +1,15 @@
|
|
1
1
|
class Bundler::Thor
|
2
2
|
Correctable = if defined?(DidYouMean::SpellChecker) && defined?(DidYouMean::Correctable) # rubocop:disable Naming/ConstantName
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
DidYouMean::Correctable
|
15
|
-
end
|
3
|
+
Module.new do
|
4
|
+
def to_s
|
5
|
+
super + DidYouMean.formatter.message_for(corrections)
|
6
|
+
end
|
7
|
+
|
8
|
+
def corrections
|
9
|
+
@corrections ||= self.class.const_get(:SpellChecker).new(self).corrections
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
16
13
|
|
17
14
|
# Bundler::Thor::Error is raised when it's caused by wrong usage of thor classes. Those
|
18
15
|
# errors have their backtrace suppressed and are nicely shown to the user.
|
@@ -37,7 +34,7 @@ class Bundler::Thor
|
|
37
34
|
end
|
38
35
|
|
39
36
|
def spell_checker
|
40
|
-
|
37
|
+
DidYouMean::SpellChecker.new(dictionary: error.all_commands)
|
41
38
|
end
|
42
39
|
end
|
43
40
|
|
@@ -79,7 +76,7 @@ class Bundler::Thor
|
|
79
76
|
end
|
80
77
|
|
81
78
|
def spell_checker
|
82
|
-
@spell_checker ||=
|
79
|
+
@spell_checker ||= DidYouMean::SpellChecker.new(dictionary: error.switches)
|
83
80
|
end
|
84
81
|
end
|
85
82
|
|
@@ -101,10 +98,9 @@ class Bundler::Thor
|
|
101
98
|
class MalformattedArgumentError < InvocationError
|
102
99
|
end
|
103
100
|
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
)
|
101
|
+
class ExclusiveArgumentError < InvocationError
|
102
|
+
end
|
103
|
+
|
104
|
+
class AtLeastOneRequiredArgumentError < InvocationError
|
109
105
|
end
|
110
106
|
end
|
@@ -169,7 +169,7 @@ class Bundler::Thor::Group
|
|
169
169
|
# options are added to group_options hash. Options that already exists
|
170
170
|
# in base_options are not added twice.
|
171
171
|
#
|
172
|
-
def get_options_from_invocations(group_options, base_options) #:nodoc:
|
172
|
+
def get_options_from_invocations(group_options, base_options) #:nodoc:
|
173
173
|
invocations.each do |name, from_option|
|
174
174
|
value = if from_option
|
175
175
|
option = class_options[name]
|
@@ -143,7 +143,7 @@ class Bundler::Thor
|
|
143
143
|
|
144
144
|
# Configuration values that are shared between invocations.
|
145
145
|
def _shared_configuration #:nodoc:
|
146
|
-
{:
|
146
|
+
{invocations: @_invocations}
|
147
147
|
end
|
148
148
|
|
149
149
|
# This method simply retrieves the class and command to be invoked.
|
@@ -24,6 +24,17 @@ class Bundler::Thor
|
|
24
24
|
validate! # Trigger specific validations
|
25
25
|
end
|
26
26
|
|
27
|
+
def print_default
|
28
|
+
if @type == :array and @default.is_a?(Array)
|
29
|
+
@default.map { |x|
|
30
|
+
p = x.gsub('"','\\"')
|
31
|
+
"\"#{p}\""
|
32
|
+
}.join(" ")
|
33
|
+
else
|
34
|
+
@default
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
27
38
|
def usage
|
28
39
|
required? ? banner : "[#{banner}]"
|
29
40
|
end
|
@@ -41,11 +52,19 @@ class Bundler::Thor
|
|
41
52
|
end
|
42
53
|
end
|
43
54
|
|
55
|
+
def enum_to_s
|
56
|
+
if enum.respond_to? :join
|
57
|
+
enum.join(", ")
|
58
|
+
else
|
59
|
+
"#{enum.first}..#{enum.last}"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
44
63
|
protected
|
45
64
|
|
46
65
|
def validate!
|
47
66
|
raise ArgumentError, "An argument cannot be required and have default value." if required? && !default.nil?
|
48
|
-
raise ArgumentError, "An argument cannot have an enum other than an
|
67
|
+
raise ArgumentError, "An argument cannot have an enum other than an enumerable." if @enum && !@enum.is_a?(Enumerable)
|
49
68
|
end
|
50
69
|
|
51
70
|
def valid_type?(type)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
class Bundler::Thor
|
2
|
-
class Arguments #:nodoc:
|
2
|
+
class Arguments #:nodoc:
|
3
3
|
NUMERIC = /[-+]?(\d*\.\d+|\d+)/
|
4
4
|
|
5
5
|
# Receives an array of args and returns two arrays, one with arguments
|
@@ -30,11 +30,7 @@ class Bundler::Thor
|
|
30
30
|
|
31
31
|
arguments.each do |argument|
|
32
32
|
if !argument.default.nil?
|
33
|
-
|
34
|
-
@assigns[argument.human_name] = argument.default.dup
|
35
|
-
rescue TypeError # Compatibility shim for un-dup-able Fixnum in Ruby < 2.4
|
36
|
-
@assigns[argument.human_name] = argument.default
|
37
|
-
end
|
33
|
+
@assigns[argument.human_name] = argument.default.dup
|
38
34
|
elsif argument.required?
|
39
35
|
@non_assigned_required << argument
|
40
36
|
end
|
@@ -121,8 +117,18 @@ class Bundler::Thor
|
|
121
117
|
#
|
122
118
|
def parse_array(name)
|
123
119
|
return shift if peek.is_a?(Array)
|
120
|
+
|
124
121
|
array = []
|
125
|
-
|
122
|
+
|
123
|
+
while current_is_value?
|
124
|
+
value = shift
|
125
|
+
|
126
|
+
if !value.empty?
|
127
|
+
validate_enum_value!(name, value, "Expected all values of '%s' to be one of %s; got %s")
|
128
|
+
end
|
129
|
+
|
130
|
+
array << value
|
131
|
+
end
|
126
132
|
array
|
127
133
|
end
|
128
134
|
|
@@ -138,11 +144,9 @@ class Bundler::Thor
|
|
138
144
|
end
|
139
145
|
|
140
146
|
value = $&.index(".") ? shift.to_f : shift.to_i
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
end
|
145
|
-
end
|
147
|
+
|
148
|
+
validate_enum_value!(name, value, "Expected '%s' to be one of %s; got %s")
|
149
|
+
|
146
150
|
value
|
147
151
|
end
|
148
152
|
|
@@ -156,15 +160,27 @@ class Bundler::Thor
|
|
156
160
|
nil
|
157
161
|
else
|
158
162
|
value = shift
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
end
|
163
|
-
end
|
163
|
+
|
164
|
+
validate_enum_value!(name, value, "Expected '%s' to be one of %s; got %s")
|
165
|
+
|
164
166
|
value
|
165
167
|
end
|
166
168
|
end
|
167
169
|
|
170
|
+
# Raises an error if the switch is an enum and the values aren't included on it.
|
171
|
+
#
|
172
|
+
def validate_enum_value!(name, value, message)
|
173
|
+
return unless @switches.is_a?(Hash)
|
174
|
+
|
175
|
+
switch = @switches[name]
|
176
|
+
|
177
|
+
return unless switch
|
178
|
+
|
179
|
+
if switch.enum && !switch.enum.include?(value)
|
180
|
+
raise MalformattedArgumentError, message % [name, switch.enum_to_s, value]
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
168
184
|
# Raises an error if @non_assigned_required array is not empty.
|
169
185
|
#
|
170
186
|
def check_requirement!
|
@@ -11,7 +11,7 @@ class Bundler::Thor
|
|
11
11
|
super
|
12
12
|
@lazy_default = options[:lazy_default]
|
13
13
|
@group = options[:group].to_s.capitalize if options[:group]
|
14
|
-
@aliases =
|
14
|
+
@aliases = normalize_aliases(options[:aliases])
|
15
15
|
@hide = options[:hide]
|
16
16
|
end
|
17
17
|
|
@@ -58,7 +58,7 @@ class Bundler::Thor
|
|
58
58
|
default = nil
|
59
59
|
if VALID_TYPES.include?(value)
|
60
60
|
value
|
61
|
-
elsif required = (value == :required) # rubocop:disable AssignmentInCondition
|
61
|
+
elsif required = (value == :required) # rubocop:disable Lint/AssignmentInCondition
|
62
62
|
:string
|
63
63
|
end
|
64
64
|
when TrueClass, FalseClass
|
@@ -69,7 +69,7 @@ class Bundler::Thor
|
|
69
69
|
value.class.name.downcase.to_sym
|
70
70
|
end
|
71
71
|
|
72
|
-
new(name.to_s, :
|
72
|
+
new(name.to_s, required: required, type: type, default: default, aliases: aliases)
|
73
73
|
end
|
74
74
|
|
75
75
|
def switch_name
|
@@ -90,13 +90,26 @@ class Bundler::Thor
|
|
90
90
|
sample = "[#{sample}]".dup unless required?
|
91
91
|
|
92
92
|
if boolean?
|
93
|
-
sample << ", [#{dasherize('no-' + human_name)}]" unless (name == "force") || name.
|
93
|
+
sample << ", [#{dasherize('no-' + human_name)}]" unless (name == "force") || name.match(/\Ano[\-_]/)
|
94
94
|
end
|
95
95
|
|
96
|
+
aliases_for_usage.ljust(padding) + sample
|
97
|
+
end
|
98
|
+
|
99
|
+
def aliases_for_usage
|
96
100
|
if aliases.empty?
|
97
|
-
|
101
|
+
""
|
102
|
+
else
|
103
|
+
"#{aliases.join(', ')}, "
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
def show_default?
|
108
|
+
case default
|
109
|
+
when TrueClass, FalseClass
|
110
|
+
true
|
98
111
|
else
|
99
|
-
|
112
|
+
super
|
100
113
|
end
|
101
114
|
end
|
102
115
|
|
@@ -138,8 +151,8 @@ class Bundler::Thor
|
|
138
151
|
raise ArgumentError, err
|
139
152
|
elsif @check_default_type == nil
|
140
153
|
Bundler::Thor.deprecation_warning "#{err}.\n" +
|
141
|
-
|
142
|
-
|
154
|
+
"This will be rejected in the future unless you explicitly pass the options `check_default_type: false`" +
|
155
|
+
" or call `allow_incompatible_default_type!` in your code"
|
143
156
|
end
|
144
157
|
end
|
145
158
|
end
|
@@ -155,5 +168,11 @@ class Bundler::Thor
|
|
155
168
|
def dasherize(str)
|
156
169
|
(str.length > 1 ? "--" : "-") + str.tr("_", "-")
|
157
170
|
end
|
171
|
+
|
172
|
+
private
|
173
|
+
|
174
|
+
def normalize_aliases(aliases)
|
175
|
+
Array(aliases).map { |short| short.to_s.sub(/^(?!\-)/, "-") }
|
176
|
+
end
|
158
177
|
end
|
159
178
|
end
|