Module: Thor::Actions

Included in:
Gitx::Cli::BaseCommand
Defined in:
lib/gitx/extensions/thor.rb

Instance Method Summary collapse

Instance Method Details

#ask_editor(initial_text = '', editor: nil, footer: nil) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/gitx/extensions/thor.rb', line 9

def ask_editor(initial_text = '', editor: nil, footer: nil)
  editor ||= ENV['EDITOR'] || 'vi'
  initial_text += "\n\n#{footer}" if footer
  text = ::Tempfile.open('text.md') do |f|
    f << initial_text
    f.flush

    flags = case editor
            when 'mate', 'emacs', 'subl'
              '-w'
            when 'mvim'
              '-f'
            else
              ''
            end
    pid = fork { exec([editor, flags, f.path].join(' ')) }
    Process.waitpid(pid)
    File.read(f.path)
  end
  text = text.gsub(footer, '') if footer
  text.chomp.strip
end