summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Giddins <segiddins@segiddins.me>2017-01-02 17:40:20 -0600
committerSamuel Giddins <segiddins@segiddins.me>2017-01-02 17:40:20 -0600
commit84fb58a7ad466bc3d41dccd01e718edb27a21340 (patch)
tree33343d4f7105408a3a22caa61369bef6c6f1a5bb
parentecae8bfff76854c2bf27339240f7044758533ef9 (diff)
downloadbundler-seg-open-exit.tar.gz
[CLI::Open] Support exiting when selecting gemseg-open-exit
-rw-r--r--lib/bundler/cli/open.rb3
-rw-r--r--spec/commands/open_spec.rb7
2 files changed, 9 insertions, 1 deletions
diff --git a/lib/bundler/cli/open.rb b/lib/bundler/cli/open.rb
index 0bbfa63d34..9a21f6811c 100644
--- a/lib/bundler/cli/open.rb
+++ b/lib/bundler/cli/open.rb
@@ -13,7 +13,8 @@ module Bundler
def run
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
- path = Bundler::CLI::Common.select_spec(name, :regex_match).full_gem_path
+ return unless spec = Bundler::CLI::Common.select_spec(name, :regex_match)
+ path = spec.full_gem_path
Dir.chdir(path) do
command = Shellwords.split(editor) + [path]
Bundler.with_clean_env do
diff --git a/spec/commands/open_spec.rb b/spec/commands/open_spec.rb
index 5507398382..3bf2983f36 100644
--- a/spec/commands/open_spec.rb
+++ b/spec/commands/open_spec.rb
@@ -67,6 +67,13 @@ describe "bundle open" do
expect(out).to match(/bundler_editor #{default_bundle_path('gems', 'activerecord-2.3.2')}\z/)
end
+ it "allows selecting exit from many match gems" do
+ env = { "EDITOR" => "echo editor", "VISUAL" => "echo visual", "BUNDLER_EDITOR" => "echo bundler_editor" }
+ bundle! "open active", :env => env do |input, _, _|
+ input.puts "0"
+ end
+ end
+
it "performs an automatic bundle install" do
gemfile <<-G
source "file://#{gem_repo1}"