diff options
-rw-r--r-- | lib/bundler/cli.rb | 2 | ||||
-rw-r--r-- | lib/bundler/cli/open.rb | 1 | ||||
-rw-r--r-- | spec/bundler/commands/open_spec.rb | 5 |
3 files changed, 7 insertions, 1 deletions
diff --git a/lib/bundler/cli.rb b/lib/bundler/cli.rb index 3f8d0bd0e6..ee73bdb506 100644 --- a/lib/bundler/cli.rb +++ b/lib/bundler/cli.rb @@ -509,7 +509,7 @@ module Bundler subcommand "config", Config desc "open GEM", "Opens the source directory of the given bundled gem" - method_option "path", :type => :string, :banner => "Open relative path of the gem source." + method_option "path", :type => :string, :lazy_default => "", :banner => "Open relative path of the gem source." def open(name) require_relative "cli/open" Open.new(options, name).run diff --git a/lib/bundler/cli/open.rb b/lib/bundler/cli/open.rb index ebd86fd4b1..8522ec92d6 100644 --- a/lib/bundler/cli/open.rb +++ b/lib/bundler/cli/open.rb @@ -10,6 +10,7 @@ module Bundler end def run + raise InvalidOption, "Cannot specify `--path` option without a value" if !@path.nil? && @path.empty? editor = [ENV["BUNDLER_EDITOR"], ENV["VISUAL"], ENV["EDITOR"]].find {|e| !e.nil? && !e.empty? } return Bundler.ui.info("To open a bundled gem, set $EDITOR or $BUNDLER_EDITOR") unless editor return unless spec = Bundler::CLI::Common.select_spec(name, :regex_match) diff --git a/spec/bundler/commands/open_spec.rb b/spec/bundler/commands/open_spec.rb index 570e0f5961..e30ebfea5b 100644 --- a/spec/bundler/commands/open_spec.rb +++ b/spec/bundler/commands/open_spec.rb @@ -73,6 +73,11 @@ RSpec.describe "bundle open" do expect(out).to include("editor #{default_bundle_path("gems", "activerecord-2.3.2")}/lib/active_record") end + it "requires value for --path arg" do + bundle "open activerecord --path", :env => { "EDITOR" => "echo editor", "VISUAL" => "", "BUNDLER_EDITOR" => "" }, :raise_on_error => false + expect(err).to eq "Cannot specify `--path` option without a value" + end + it "suggests alternatives for similar-sounding gems when using subpath" do bundle "open Rails --path README.md", :env => { "EDITOR" => "echo editor", "VISUAL" => "", "BUNDLER_EDITOR" => "" }, :raise_on_error => false expect(err).to match(/did you mean rails\?/i) |