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
@@ -5,6 +5,7 @@ class Bundler::Thor
|
|
5
5
|
VALID_TYPES = [:boolean, :numeric, :hash, :array, :string]
|
6
6
|
|
7
7
|
def initialize(name, options = {})
|
8
|
+
@check_default_type = options[:check_default_type]
|
8
9
|
options[:required] = false unless options.key?(:required)
|
9
10
|
super
|
10
11
|
@lazy_default = options[:lazy_default]
|
@@ -40,31 +41,33 @@ class Bundler::Thor
|
|
40
41
|
#
|
41
42
|
# By default all options are optional, unless :required is given.
|
42
43
|
#
|
43
|
-
def self.parse(key, value)
|
44
|
+
def self.parse(key, value)
|
44
45
|
if key.is_a?(Array)
|
45
46
|
name, *aliases = key
|
46
47
|
else
|
47
|
-
name
|
48
|
+
name = key
|
49
|
+
aliases = []
|
48
50
|
end
|
49
51
|
|
50
52
|
name = name.to_s
|
51
53
|
default = value
|
52
54
|
|
53
55
|
type = case value
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
56
|
+
when Symbol
|
57
|
+
default = nil
|
58
|
+
if VALID_TYPES.include?(value)
|
59
|
+
value
|
60
|
+
elsif required = (value == :required) # rubocop:disable AssignmentInCondition
|
61
|
+
:string
|
62
|
+
end
|
63
|
+
when TrueClass, FalseClass
|
64
|
+
:boolean
|
65
|
+
when Numeric
|
66
|
+
:numeric
|
67
|
+
when Hash, Array, String
|
68
|
+
value.class.name.downcase.to_sym
|
69
|
+
end
|
70
|
+
|
68
71
|
new(name.to_s, :required => required, :type => type, :default => default, :aliases => aliases)
|
69
72
|
end
|
70
73
|
|
@@ -78,15 +81,15 @@ class Bundler::Thor
|
|
78
81
|
|
79
82
|
def usage(padding = 0)
|
80
83
|
sample = if banner && !banner.to_s.empty?
|
81
|
-
"#{switch_name}=#{banner}"
|
84
|
+
"#{switch_name}=#{banner}".dup
|
82
85
|
else
|
83
86
|
switch_name
|
84
87
|
end
|
85
88
|
|
86
|
-
sample = "[#{sample}]" unless required?
|
89
|
+
sample = "[#{sample}]".dup unless required?
|
87
90
|
|
88
91
|
if boolean?
|
89
|
-
sample << ", [#{dasherize(
|
92
|
+
sample << ", [#{dasherize('no-' + human_name)}]" unless (name == "force") || name.start_with?("no-")
|
90
93
|
end
|
91
94
|
|
92
95
|
if aliases.empty?
|
@@ -107,7 +110,25 @@ class Bundler::Thor
|
|
107
110
|
protected
|
108
111
|
|
109
112
|
def validate!
|
110
|
-
|
113
|
+
raise ArgumentError, "An option cannot be boolean and required." if boolean? && required?
|
114
|
+
validate_default_type! if @check_default_type
|
115
|
+
end
|
116
|
+
|
117
|
+
def validate_default_type!
|
118
|
+
default_type = case @default
|
119
|
+
when nil
|
120
|
+
return
|
121
|
+
when TrueClass, FalseClass
|
122
|
+
required? ? :string : :boolean
|
123
|
+
when Numeric
|
124
|
+
:numeric
|
125
|
+
when Symbol
|
126
|
+
:string
|
127
|
+
when Hash, Array, String
|
128
|
+
@default.class.name.downcase.to_sym
|
129
|
+
end
|
130
|
+
|
131
|
+
raise ArgumentError, "Expected #{@type} default value for '#{switch_name}'; got #{@default.inspect} (#{default_type})" unless default_type == @type
|
111
132
|
end
|
112
133
|
|
113
134
|
def dasherized?
|
@@ -119,7 +140,7 @@ class Bundler::Thor
|
|
119
140
|
end
|
120
141
|
|
121
142
|
def dasherize(str)
|
122
|
-
(str.length > 1 ? "--" : "-") + str.
|
143
|
+
(str.length > 1 ? "--" : "-") + str.tr("_", "-")
|
123
144
|
end
|
124
145
|
end
|
125
146
|
end
|
@@ -14,23 +14,24 @@ class Bundler::Thor
|
|
14
14
|
when true
|
15
15
|
"--#{key}"
|
16
16
|
when Array
|
17
|
-
"--#{key} #{value.map
|
17
|
+
"--#{key} #{value.map(&:inspect).join(' ')}"
|
18
18
|
when Hash
|
19
19
|
"--#{key} #{value.map { |k, v| "#{k}:#{v}" }.join(' ')}"
|
20
20
|
when nil, false
|
21
|
-
|
21
|
+
nil
|
22
22
|
else
|
23
23
|
"--#{key} #{value.inspect}"
|
24
24
|
end
|
25
|
-
end.join(" ")
|
25
|
+
end.compact.join(" ")
|
26
26
|
end
|
27
27
|
|
28
28
|
# Takes a hash of Bundler::Thor::Option and a hash with defaults.
|
29
29
|
#
|
30
30
|
# If +stop_on_unknown+ is true, #parse will stop as soon as it encounters
|
31
31
|
# an unknown option or a regular argument.
|
32
|
-
def initialize(hash_options = {}, defaults = {}, stop_on_unknown = false)
|
32
|
+
def initialize(hash_options = {}, defaults = {}, stop_on_unknown = false, disable_required_check = false)
|
33
33
|
@stop_on_unknown = stop_on_unknown
|
34
|
+
@disable_required_check = disable_required_check
|
34
35
|
options = hash_options.values
|
35
36
|
super(options)
|
36
37
|
|
@@ -40,7 +41,9 @@ class Bundler::Thor
|
|
40
41
|
@non_assigned_required.delete(hash_options[key])
|
41
42
|
end
|
42
43
|
|
43
|
-
@shorts
|
44
|
+
@shorts = {}
|
45
|
+
@switches = {}
|
46
|
+
@extra = []
|
44
47
|
|
45
48
|
options.each do |option|
|
46
49
|
@switches[option.switch_name] = option
|
@@ -52,7 +55,7 @@ class Bundler::Thor
|
|
52
55
|
end
|
53
56
|
end
|
54
57
|
|
55
|
-
def remaining
|
58
|
+
def remaining
|
56
59
|
@extra
|
57
60
|
end
|
58
61
|
|
@@ -109,7 +112,7 @@ class Bundler::Thor
|
|
109
112
|
end
|
110
113
|
end
|
111
114
|
|
112
|
-
check_requirement!
|
115
|
+
check_requirement! unless @disable_required_check
|
113
116
|
|
114
117
|
assigns = Bundler::Thor::CoreExt::HashWithIndifferentAccess.new(@assigns)
|
115
118
|
assigns.freeze
|
@@ -119,7 +122,7 @@ class Bundler::Thor
|
|
119
122
|
def check_unknown!
|
120
123
|
# an unknown option starts with - or -- and has no more --'s afterward.
|
121
124
|
unknown = @extra.select { |str| str =~ /^--?(?:(?!--).)*$/ }
|
122
|
-
|
125
|
+
raise UnknownArgumentError, "Unknown switches '#{unknown.join(', ')}'" unless unknown.empty?
|
123
126
|
end
|
124
127
|
|
125
128
|
protected
|
@@ -186,7 +189,7 @@ class Bundler::Thor
|
|
186
189
|
shift
|
187
190
|
false
|
188
191
|
else
|
189
|
-
|
192
|
+
!no_or_skip?(switch)
|
190
193
|
end
|
191
194
|
else
|
192
195
|
@switches.key?(switch) || !no_or_skip?(switch)
|
@@ -207,7 +210,7 @@ class Bundler::Thor
|
|
207
210
|
elsif option.lazy_default
|
208
211
|
return option.lazy_default
|
209
212
|
else
|
210
|
-
|
213
|
+
raise MalformattedArgumentError, "No value provided for option '#{switch}'"
|
211
214
|
end
|
212
215
|
end
|
213
216
|
|
@@ -5,7 +5,7 @@ class Bundler::Thor
|
|
5
5
|
# Adds a compatibility layer to your Bundler::Thor classes which allows you to use
|
6
6
|
# rake package tasks. For example, to use rspec rake tasks, one can do:
|
7
7
|
#
|
8
|
-
# require 'thor/rake_compat'
|
8
|
+
# require 'bundler/vendor/thor/lib/thor/rake_compat'
|
9
9
|
# require 'rspec/core/rake_task'
|
10
10
|
#
|
11
11
|
# class Default < Bundler::Thor
|
@@ -1,20 +1,26 @@
|
|
1
|
-
require "thor"
|
2
|
-
require "thor/group"
|
3
|
-
require "thor/core_ext/io_binary_read"
|
1
|
+
require "bundler/vendor/thor/lib/thor"
|
2
|
+
require "bundler/vendor/thor/lib/thor/group"
|
3
|
+
require "bundler/vendor/thor/lib/thor/core_ext/io_binary_read"
|
4
4
|
|
5
|
-
require "fileutils"
|
6
|
-
require "open-uri"
|
7
5
|
require "yaml"
|
8
|
-
require "digest
|
6
|
+
require "digest"
|
9
7
|
require "pathname"
|
10
8
|
|
11
9
|
class Bundler::Thor::Runner < Bundler::Thor #:nodoc: # rubocop:disable ClassLength
|
12
10
|
map "-T" => :list, "-i" => :install, "-u" => :update, "-v" => :version
|
13
11
|
|
12
|
+
def self.banner(command, all = false, subcommand = false)
|
13
|
+
"thor " + command.formatted_usage(self, all, subcommand)
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.exit_on_failure?
|
17
|
+
true
|
18
|
+
end
|
19
|
+
|
14
20
|
# Override Bundler::Thor#help so it can give information about any class and any method.
|
15
21
|
#
|
16
22
|
def help(meth = nil)
|
17
|
-
if meth && !
|
23
|
+
if meth && !respond_to?(meth)
|
18
24
|
initialize_thorfiles(meth)
|
19
25
|
klass, command = Bundler::Thor::Util.find_class_and_command_by_namespace(meth)
|
20
26
|
self.class.handle_no_command_error(command, false) if klass.nil?
|
@@ -45,16 +51,18 @@ class Bundler::Thor::Runner < Bundler::Thor #:nodoc: # rubocop:disable ClassLeng
|
|
45
51
|
# command in said directory.
|
46
52
|
begin
|
47
53
|
if File.directory?(File.expand_path(name))
|
48
|
-
base
|
49
|
-
|
54
|
+
base = File.join(name, "main.thor")
|
55
|
+
package = :directory
|
56
|
+
contents = open(base, &:read)
|
50
57
|
else
|
51
|
-
base
|
52
|
-
|
58
|
+
base = name
|
59
|
+
package = :file
|
60
|
+
contents = open(name, &:read)
|
53
61
|
end
|
54
62
|
rescue OpenURI::HTTPError
|
55
63
|
raise Error, "Error opening URI '#{name}'"
|
56
64
|
rescue Errno::ENOENT
|
57
|
-
|
65
|
+
raise Error, "Error opening file '#{name}'"
|
58
66
|
end
|
59
67
|
|
60
68
|
say "Your Bundler::Thorfile contains:"
|
@@ -82,7 +90,7 @@ class Bundler::Thor::Runner < Bundler::Thor #:nodoc: # rubocop:disable ClassLeng
|
|
82
90
|
end
|
83
91
|
|
84
92
|
thor_yaml[as] = {
|
85
|
-
:filename => Digest
|
93
|
+
:filename => Digest(:MD5).hexdigest(name + as),
|
86
94
|
:location => location,
|
87
95
|
:namespaces => Bundler::Thor::Util.namespaces_in_content(contents, base)
|
88
96
|
}
|
@@ -94,6 +102,7 @@ class Bundler::Thor::Runner < Bundler::Thor #:nodoc: # rubocop:disable ClassLeng
|
|
94
102
|
if package == :file
|
95
103
|
File.open(destination, "w") { |f| f.puts contents }
|
96
104
|
else
|
105
|
+
require "fileutils"
|
97
106
|
FileUtils.cp_r(name, destination)
|
98
107
|
end
|
99
108
|
|
@@ -102,15 +111,16 @@ class Bundler::Thor::Runner < Bundler::Thor #:nodoc: # rubocop:disable ClassLeng
|
|
102
111
|
|
103
112
|
desc "version", "Show Bundler::Thor version"
|
104
113
|
def version
|
105
|
-
require "thor/version"
|
114
|
+
require "bundler/vendor/thor/lib/thor/version"
|
106
115
|
say "Bundler::Thor #{Bundler::Thor::VERSION}"
|
107
116
|
end
|
108
117
|
|
109
118
|
desc "uninstall NAME", "Uninstall a named Bundler::Thor module"
|
110
119
|
def uninstall(name)
|
111
|
-
|
120
|
+
raise Error, "Can't find module '#{name}'" unless thor_yaml[name]
|
112
121
|
say "Uninstalling #{name}."
|
113
|
-
|
122
|
+
require "fileutils"
|
123
|
+
FileUtils.rm_rf(File.join(thor_root, (thor_yaml[name][:filename]).to_s))
|
114
124
|
|
115
125
|
thor_yaml.delete(name)
|
116
126
|
save_yaml(thor_yaml)
|
@@ -120,7 +130,7 @@ class Bundler::Thor::Runner < Bundler::Thor #:nodoc: # rubocop:disable ClassLeng
|
|
120
130
|
|
121
131
|
desc "update NAME", "Update a Bundler::Thor file from its original location"
|
122
132
|
def update(name)
|
123
|
-
|
133
|
+
raise Error, "Can't find module '#{name}'" if !thor_yaml[name] || !thor_yaml[name][:location]
|
124
134
|
|
125
135
|
say "Updating '#{name}' from #{thor_yaml[name][:location]}"
|
126
136
|
|
@@ -128,6 +138,7 @@ class Bundler::Thor::Runner < Bundler::Thor #:nodoc: # rubocop:disable ClassLeng
|
|
128
138
|
self.options = options.merge("as" => name)
|
129
139
|
|
130
140
|
if File.directory? File.expand_path(name)
|
141
|
+
require "fileutils"
|
131
142
|
FileUtils.rm_rf(File.join(thor_root, old_filename))
|
132
143
|
|
133
144
|
thor_yaml.delete(old_filename)
|
@@ -138,9 +149,7 @@ class Bundler::Thor::Runner < Bundler::Thor #:nodoc: # rubocop:disable ClassLeng
|
|
138
149
|
filename = install(thor_yaml[name][:location])
|
139
150
|
end
|
140
151
|
|
141
|
-
unless filename == old_filename
|
142
|
-
File.delete(File.join(thor_root, old_filename))
|
143
|
-
end
|
152
|
+
File.delete(File.join(thor_root, old_filename)) unless filename == old_filename
|
144
153
|
end
|
145
154
|
|
146
155
|
desc "installed", "List the installed Bundler::Thor modules and commands"
|
@@ -168,10 +177,6 @@ class Bundler::Thor::Runner < Bundler::Thor #:nodoc: # rubocop:disable ClassLeng
|
|
168
177
|
|
169
178
|
private
|
170
179
|
|
171
|
-
def self.banner(command, all = false, subcommand = false)
|
172
|
-
"thor " + command.formatted_usage(self, all, subcommand)
|
173
|
-
end
|
174
|
-
|
175
180
|
def thor_root
|
176
181
|
Bundler::Thor::Util.thor_root
|
177
182
|
end
|
@@ -190,6 +195,7 @@ private
|
|
190
195
|
yaml_file = File.join(thor_root, "thor.yml")
|
191
196
|
|
192
197
|
unless File.exist?(yaml_file)
|
198
|
+
require "fileutils"
|
193
199
|
FileUtils.mkdir_p(thor_root)
|
194
200
|
yaml_file = File.join(thor_root, "thor.yml")
|
195
201
|
FileUtils.touch(yaml_file)
|
@@ -198,10 +204,6 @@ private
|
|
198
204
|
File.open(yaml_file, "w") { |f| f.puts yaml.to_yaml }
|
199
205
|
end
|
200
206
|
|
201
|
-
def self.exit_on_failure?
|
202
|
-
true
|
203
|
-
end
|
204
|
-
|
205
207
|
# Load the Bundler::Thorfiles. If relevant_to is supplied, looks for specific files
|
206
208
|
# in the thor_root instead of loading them all.
|
207
209
|
#
|
@@ -263,11 +265,11 @@ private
|
|
263
265
|
def thorfiles_relevant_to(meth)
|
264
266
|
lookup = [meth, meth.split(":")[0...-1].join(":")]
|
265
267
|
|
266
|
-
files = thor_yaml.select do |
|
268
|
+
files = thor_yaml.select do |_, v|
|
267
269
|
v[:namespaces] && !(v[:namespaces] & lookup).empty?
|
268
270
|
end
|
269
271
|
|
270
|
-
files.map { |
|
272
|
+
files.map { |_, v| File.join(thor_root, (v[:filename]).to_s) }
|
271
273
|
end
|
272
274
|
|
273
275
|
# Display information about the given klasses. If with_module is given,
|
@@ -276,7 +278,7 @@ private
|
|
276
278
|
def display_klasses(with_modules = false, show_internal = false, klasses = Bundler::Thor::Base.subclasses)
|
277
279
|
klasses -= [Bundler::Thor, Bundler::Thor::Runner, Bundler::Thor::Group] unless show_internal
|
278
280
|
|
279
|
-
|
281
|
+
raise Error, "No Bundler::Thor commands available" if klasses.empty?
|
280
282
|
show_modules if with_modules && !thor_yaml.empty?
|
281
283
|
|
282
284
|
list = Hash.new { |h, k| h[k] = [] }
|
@@ -306,8 +308,8 @@ private
|
|
306
308
|
alias_method :display_tasks, :display_commands
|
307
309
|
|
308
310
|
def show_modules #:nodoc:
|
309
|
-
info
|
310
|
-
labels = %w
|
311
|
+
info = []
|
312
|
+
labels = %w(Modules Namespaces)
|
311
313
|
|
312
314
|
info << labels
|
313
315
|
info << ["-" * labels[0].size, "-" * labels[1].size]
|
@@ -9,7 +9,7 @@ class Bundler::Thor
|
|
9
9
|
# it will use a colored log, otherwise it will use a basic one without color.
|
10
10
|
#
|
11
11
|
def shell
|
12
|
-
@shell ||= if ENV["THOR_SHELL"] && ENV["THOR_SHELL"].
|
12
|
+
@shell ||= if ENV["THOR_SHELL"] && !ENV["THOR_SHELL"].empty?
|
13
13
|
Bundler::Thor::Shell.const_get(ENV["THOR_SHELL"])
|
14
14
|
elsif RbConfig::CONFIG["host_os"] =~ /mswin|mingw/ && !ENV["ANSICON"]
|
15
15
|
Bundler::Thor::Shell::Basic
|
@@ -24,9 +24,9 @@ class Bundler::Thor
|
|
24
24
|
SHELL_DELEGATED_METHODS = [:ask, :error, :set_color, :yes?, :no?, :say, :say_status, :print_in_columns, :print_table, :print_wrapped, :file_collision, :terminal_width]
|
25
25
|
attr_writer :shell
|
26
26
|
|
27
|
-
autoload :Basic, "thor/shell/basic"
|
28
|
-
autoload :Color, "thor/shell/color"
|
29
|
-
autoload :HTML, "thor/shell/html"
|
27
|
+
autoload :Basic, "bundler/vendor/thor/lib/thor/shell/basic"
|
28
|
+
autoload :Color, "bundler/vendor/thor/lib/thor/shell/color"
|
29
|
+
autoload :HTML, "bundler/vendor/thor/lib/thor/shell/html"
|
30
30
|
|
31
31
|
# Add shell to initialize config values.
|
32
32
|
#
|
@@ -1,16 +1,16 @@
|
|
1
|
-
require "tempfile"
|
2
|
-
require "io/console" if RUBY_VERSION > "1.9.2"
|
3
|
-
|
4
1
|
class Bundler::Thor
|
5
2
|
module Shell
|
6
|
-
class Basic
|
3
|
+
class Basic
|
7
4
|
attr_accessor :base
|
8
5
|
attr_reader :padding
|
9
6
|
|
10
7
|
# Initialize base, mute and padding to nil.
|
11
8
|
#
|
12
9
|
def initialize #:nodoc:
|
13
|
-
@base
|
10
|
+
@base = nil
|
11
|
+
@mute = false
|
12
|
+
@padding = 0
|
13
|
+
@always_force = false
|
14
14
|
end
|
15
15
|
|
16
16
|
# Mute everything that's inside given block
|
@@ -24,7 +24,7 @@ class Bundler::Thor
|
|
24
24
|
|
25
25
|
# Check if base is muted
|
26
26
|
#
|
27
|
-
def mute?
|
27
|
+
def mute?
|
28
28
|
@mute
|
29
29
|
end
|
30
30
|
|
@@ -34,6 +34,15 @@ class Bundler::Thor
|
|
34
34
|
@padding = [0, value].max
|
35
35
|
end
|
36
36
|
|
37
|
+
# Sets the output padding while executing a block and resets it.
|
38
|
+
#
|
39
|
+
def indent(count = 1)
|
40
|
+
orig_padding = padding
|
41
|
+
self.padding = padding + count
|
42
|
+
yield
|
43
|
+
self.padding = orig_padding
|
44
|
+
end
|
45
|
+
|
37
46
|
# Asks something to the user and receives a response.
|
38
47
|
#
|
39
48
|
# If asked to limit the correct responses, you can pass in an
|
@@ -98,7 +107,7 @@ class Bundler::Thor
|
|
98
107
|
status = set_color status, color, true if color
|
99
108
|
|
100
109
|
buffer = "#{status}#{spaces}#{message}"
|
101
|
-
buffer
|
110
|
+
buffer = "#{buffer}\n" unless buffer.end_with?("\n")
|
102
111
|
|
103
112
|
stdout.print(buffer)
|
104
113
|
stdout.flush
|
@@ -148,10 +157,12 @@ class Bundler::Thor
|
|
148
157
|
def print_table(array, options = {}) # rubocop:disable MethodLength
|
149
158
|
return if array.empty?
|
150
159
|
|
151
|
-
formats
|
160
|
+
formats = []
|
161
|
+
indent = options[:indent].to_i
|
162
|
+
colwidth = options[:colwidth]
|
152
163
|
options[:truncate] = terminal_width if options[:truncate] == true
|
153
164
|
|
154
|
-
formats << "%-#{colwidth + 2}s" if colwidth
|
165
|
+
formats << "%-#{colwidth + 2}s".dup if colwidth
|
155
166
|
start = colwidth ? 1 : 0
|
156
167
|
|
157
168
|
colcount = array.max { |a, b| a.size <=> b.size }.size
|
@@ -161,32 +172,32 @@ class Bundler::Thor
|
|
161
172
|
start.upto(colcount - 1) do |index|
|
162
173
|
maxima = array.map { |row| row[index] ? row[index].to_s.size : 0 }.max
|
163
174
|
maximas << maxima
|
164
|
-
if index == colcount - 1
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
175
|
+
formats << if index == colcount - 1
|
176
|
+
# Don't output 2 trailing spaces when printing the last column
|
177
|
+
"%-s".dup
|
178
|
+
else
|
179
|
+
"%-#{maxima + 2}s".dup
|
180
|
+
end
|
170
181
|
end
|
171
182
|
|
172
183
|
formats[0] = formats[0].insert(0, " " * indent)
|
173
184
|
formats << "%s"
|
174
185
|
|
175
186
|
array.each do |row|
|
176
|
-
sentence = ""
|
187
|
+
sentence = "".dup
|
177
188
|
|
178
189
|
row.each_with_index do |column, index|
|
179
190
|
maxima = maximas[index]
|
180
191
|
|
181
|
-
if column.is_a?(Numeric)
|
192
|
+
f = if column.is_a?(Numeric)
|
182
193
|
if index == row.size - 1
|
183
194
|
# Don't output 2 trailing spaces when printing the last column
|
184
|
-
|
195
|
+
"%#{maxima}s"
|
185
196
|
else
|
186
|
-
|
197
|
+
"%#{maxima}s "
|
187
198
|
end
|
188
199
|
else
|
189
|
-
|
200
|
+
formats[index]
|
190
201
|
end
|
191
202
|
sentence << f % column.to_s
|
192
203
|
end
|
@@ -211,7 +222,7 @@ class Bundler::Thor
|
|
211
222
|
paras = message.split("\n\n")
|
212
223
|
|
213
224
|
paras.map! do |unwrapped|
|
214
|
-
unwrapped.strip.
|
225
|
+
unwrapped.strip.tr("\n", " ").squeeze(" ").gsub(/.{1,#{width}}(?:\s|\Z)/) { ($& + 5.chr).gsub(/\n\005/, "\n").gsub(/\005/, "\n") }
|
215
226
|
end
|
216
227
|
|
217
228
|
paras.each do |para|
|
@@ -230,7 +241,7 @@ class Bundler::Thor
|
|
230
241
|
# destination<String>:: the destination file to solve conflicts
|
231
242
|
# block<Proc>:: an optional block that returns the value to be used in diff
|
232
243
|
#
|
233
|
-
def file_collision(destination)
|
244
|
+
def file_collision(destination)
|
234
245
|
return true if @always_force
|
235
246
|
options = block_given? ? "[Ynaqdh]" : "[Ynaqh]"
|
236
247
|
|
@@ -241,6 +252,9 @@ class Bundler::Thor
|
|
241
252
|
)
|
242
253
|
|
243
254
|
case answer
|
255
|
+
when nil
|
256
|
+
say ""
|
257
|
+
return true
|
244
258
|
when is?(:yes), is?(:force), ""
|
245
259
|
return true
|
246
260
|
when is?(:no), is?(:skip)
|
@@ -249,7 +263,7 @@ class Bundler::Thor
|
|
249
263
|
return @always_force = true
|
250
264
|
when is?(:quit)
|
251
265
|
say "Aborting..."
|
252
|
-
|
266
|
+
raise SystemExit
|
253
267
|
when is?(:diff)
|
254
268
|
show_diff(destination, yield) if block_given?
|
255
269
|
say "Retrying..."
|
@@ -262,10 +276,10 @@ class Bundler::Thor
|
|
262
276
|
# This code was copied from Rake, available under MIT-LICENSE
|
263
277
|
# Copyright (c) 2003, 2004 Jim Weirich
|
264
278
|
def terminal_width
|
265
|
-
if ENV["THOR_COLUMNS"]
|
266
|
-
|
279
|
+
result = if ENV["THOR_COLUMNS"]
|
280
|
+
ENV["THOR_COLUMNS"].to_i
|
267
281
|
else
|
268
|
-
|
282
|
+
unix? ? dynamic_width : 80
|
269
283
|
end
|
270
284
|
result < 10 ? 80 : result
|
271
285
|
rescue
|
@@ -284,7 +298,7 @@ class Bundler::Thor
|
|
284
298
|
# Apply color to the given string with optional bold. Disabled in the
|
285
299
|
# Bundler::Thor::Shell::Basic class.
|
286
300
|
#
|
287
|
-
def set_color(string, *
|
301
|
+
def set_color(string, *) #:nodoc:
|
288
302
|
string
|
289
303
|
end
|
290
304
|
|
@@ -336,6 +350,7 @@ class Bundler::Thor
|
|
336
350
|
def show_diff(destination, content) #:nodoc:
|
337
351
|
diff_cmd = ENV["THOR_DIFF"] || ENV["RAILS_DIFF"] || "diff -u"
|
338
352
|
|
353
|
+
require "tempfile"
|
339
354
|
Tempfile.open(File.basename(destination), File.dirname(destination)) do |temp|
|
340
355
|
temp.write content
|
341
356
|
temp.rewind
|
@@ -353,11 +368,11 @@ class Bundler::Thor
|
|
353
368
|
end
|
354
369
|
|
355
370
|
def dynamic_width_stty
|
356
|
-
|
371
|
+
`stty size 2>/dev/null`.split[1].to_i
|
357
372
|
end
|
358
373
|
|
359
374
|
def dynamic_width_tput
|
360
|
-
|
375
|
+
`tput cols 2>/dev/null`.to_i
|
361
376
|
end
|
362
377
|
|
363
378
|
def unix?
|
@@ -370,7 +385,7 @@ class Bundler::Thor
|
|
370
385
|
if chars.length <= width
|
371
386
|
chars.join
|
372
387
|
else
|
373
|
-
|
388
|
+
chars[0, width - 3].join + "..."
|
374
389
|
end
|
375
390
|
end
|
376
391
|
end
|
@@ -381,7 +396,8 @@ class Bundler::Thor
|
|
381
396
|
end
|
382
397
|
else
|
383
398
|
def as_unicode
|
384
|
-
old
|
399
|
+
old = $KCODE
|
400
|
+
$KCODE = "U"
|
385
401
|
yield
|
386
402
|
ensure
|
387
403
|
$KCODE = old
|
@@ -391,12 +407,12 @@ class Bundler::Thor
|
|
391
407
|
def ask_simply(statement, color, options)
|
392
408
|
default = options[:default]
|
393
409
|
message = [statement, ("(#{default})" if default), nil].uniq.join(" ")
|
394
|
-
message = prepare_message(message, color)
|
410
|
+
message = prepare_message(message, *color)
|
395
411
|
result = Bundler::Thor::LineEditor.readline(message, options)
|
396
412
|
|
397
413
|
return unless result
|
398
414
|
|
399
|
-
result.strip
|
415
|
+
result = result.strip
|
400
416
|
|
401
417
|
if default && result == ""
|
402
418
|
default
|