diff options
author | Samuel Giddins <segiddins@segiddins.me> | 2017-06-14 11:55:44 -0500 |
---|---|---|
committer | Samuel Giddins <segiddins@segiddins.me> | 2017-06-14 11:55:44 -0500 |
commit | 55d72833d8028d4ea52fd2cafdfd7381238b0479 (patch) | |
tree | c307b69f5a4a791c97e82818b432f5f31c8bebf3 | |
parent | ddcca6254cc4e63cbb25b78f8ec93462fa56249c (diff) | |
download | bundler-55d72833d8028d4ea52fd2cafdfd7381238b0479.tar.gz |
Default to printing a help message when `bundle` is run without arguments on 2.0seg-default-command
-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 10287d3ac7..d4276c9548 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 3a4353f2af..c29a5a1f39 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 } } @@ -20,6 +32,8 @@ module Bundler settings_flag(:error_on_stderr) { bundler_2_mode? } settings_flag(:init_gems_rb) { 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 @@ -28,7 +42,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 |