summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Giddins <segiddins@segiddins.me>2017-06-14 11:55:44 -0500
committerSamuel Giddins <segiddins@segiddins.me>2017-06-14 11:55:44 -0500
commit55d72833d8028d4ea52fd2cafdfd7381238b0479 (patch)
treec307b69f5a4a791c97e82818b432f5f31c8bebf3
parentddcca6254cc4e63cbb25b78f8ec93462fa56249c (diff)
downloadbundler-seg-default-command.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.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 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