Method: Thor::Actions#run_cmd

Defined in:
lib/gitx/extensions/thor.rb

#run_cmd(*args) ⇒ Object

execute a shell command and raise an error if non-zero exit code is returned return the string output from the command



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/gitx/extensions/thor.rb', line 7

def run_cmd(*args)
  options = args.last.is_a?(Hash) ? args.pop : {}
  cmd = args
  say "$ #{cmd.join(' ')}", :yellow
  output = ''

  Open3.popen2e(*cmd) do |stdin, stdout_err, wait_thr|
    while line = stdout_err.gets
      say line, :yellow
      output << line
    end

    exit_status = wait_thr.value
    fail "#{cmd.join(' ')} failed" unless exit_status.success? || options[:allow_failure]
  end
  output
end