diff options
-rw-r--r-- | lib/bundler/cli.rb | 9 | ||||
-rw-r--r-- | lib/bundler/feature_flag.rb | 20 | ||||
-rw-r--r-- | spec/quality_spec.rb | 1 |
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 |