summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/bundler/cli.rb9
-rw-r--r--lib/bundler/feature_flag.rb20
-rw-r--r--spec/quality_spec.rb1
3 files changed, 25 insertions, 5 deletions
diff --git a/lib/bundler/cli.rb b/lib/bundler/cli.rb
index c09b14433a..94ca5dfa25 100644
--- a/lib/bundler/cli.rb
+++ b/lib/bundler/cli.rb
@@ -55,7 +55,14 @@ module Bundler
check_unknown_options!(:except => [:config, :exec])
stop_on_unknown_option! :exec
- default_task :install
+ desc "cli_help", "Prints a summary of bundler commands", :hide => true
+ def cli_help
+ version
+ Bundler.ui.info "\n"
+ self.class.help(shell)
+ end
+ default_task(Bundler.feature_flag.default_cli_command)
+
class_option "no-color", :type => :boolean, :desc => "Disable colorization in output"
class_option "retry", :type => :numeric, :aliases => "-r", :banner => "NUM",
:desc => "Specify the number of times you wish to attempt network commands"
diff --git a/lib/bundler/feature_flag.rb b/lib/bundler/feature_flag.rb
index 0a3b010d1a..ee93773c2f 100644
--- a/lib/bundler/feature_flag.rb
+++ b/lib/bundler/feature_flag.rb
@@ -5,12 +5,24 @@ module Bundler
unless Bundler::Settings::BOOL_KEYS.include?(flag.to_s)
raise "Cannot use `#{flag}` as a settings feature flag since it isn't a bool key"
end
- define_method("#{flag}?") do
- value = Bundler.settings[flag]
+
+ settings_method("#{flag}?", flag, &default)
+ end
+ private_class_method :settings_flag
+
+ def self.settings_option(key, &default)
+ settings_method(key, key, &default)
+ end
+ private_class_method :settings_option
+
+ def self.settings_method(name, key, &default)
+ define_method(name) do
+ value = Bundler.settings[key]
value = instance_eval(&default) if value.nil? && !default.nil?
value
end
end
+ private_class_method :settings_method
(1..10).each {|v| define_method("bundler_#{v}_mode?") { major_version >= v } }
@@ -24,6 +36,8 @@ module Bundler
settings_flag(:unlock_source_unlocks_spec) { !bundler_2_mode? }
settings_flag(:update_requires_all_flag) { bundler_2_mode? }
+ settings_option(:default_cli_command) { bundler_2_mode? ? :cli_help : :install }
+
def initialize(bundler_version)
@bundler_version = Gem::Version.create(bundler_version)
end
@@ -32,7 +46,5 @@ module Bundler
@bundler_version.segments.first
end
private :major_version
-
- class << self; private :settings_flag; end
end
end
diff --git a/spec/quality_spec.rb b/spec/quality_spec.rb
index c7b367ea87..44ec944eae 100644
--- a/spec/quality_spec.rb
+++ b/spec/quality_spec.rb
@@ -169,6 +169,7 @@ RSpec.describe "The library itself" do
it "documents all used settings" do
exemptions = %w[
+ default_cli_command
gem.coc
gem.mit
warned_version