Class: Bundler::CLI::Open
| Relationships & Source Files | |
| Inherits: | Object |
| Defined in: | lib/bundler/cli/open.rb |
Class Method Summary
- .new(options, name) ⇒ Open constructor
Instance Attribute Summary
Instance Method Summary
Constructor Details
.new(options, name) ⇒ Open
Instance Attribute Details
#name (readonly)
[ GitHub ]# File 'lib/bundler/cli/open.rb', line 5
attr_reader :, :name, :path
#options (readonly)
[ GitHub ]#path (readonly)
[ GitHub ]# File 'lib/bundler/cli/open.rb', line 5
attr_reader :, :name, :path
Instance Method Details
#editor_command(editor)
[ GitHub ]# File 'lib/bundler/cli/open.rb', line 28
def editor_command(editor) # On Windows an editor is often configured with a full path such as # C:\Program Files\Microsoft VS Code\Code.exe, which shell splitting # would corrupt. Take a value that names an existing file as a # single word. return [editor] if Gem.win_platform? && File.file?(editor) require "shellwords" Shellwords.split(editor) end
#run
# File 'lib/bundler/cli/open.rb', line 12
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) if spec.default_gem? Bundler.ui.info "Unable to open #{name} because it's a default gem, so the directory it would normally be installed to does not exist." else root_path = spec.full_gem_path command = editor_command(editor) << File.join([root_path, path].compact) Bundler.with_original_env do system(*command, { chdir: root_path }) end || Bundler.ui.info("Could not run '#{command.join(" ")}'") end end