Sha256: 4bc652525139ab09c7f9ba8302cd6a5018859867d803c6529088c7e18f723222

Contents?: true

Size: 1011 Bytes

Versions: 1

Compression:

Stored size: 1011 Bytes

Contents

require 'open3'

module Wixgem

class Command < Hash
  def initialize(cmd, options=nil)
   self[:output] = ''
   self[:error] = ''
   self[:exit_code] = ''
   self[:ignore_exit_code] = false
   self[:debug] = false
   self[:quiet] = false

   self[:command]=cmd
   options.each { |key, value| self[key] = value} unless(options.nil?)
  end
  
  def execute
    begin
	  puts self[:command] unless(self[:quiet])
      self[:output],self[:error], self[:exit_code] = Open3.capture3(self[:command])
      self[:exit_code]=self[:exit_code].to_i
	  
	  if(self[:debug])
	    puts "output: #{self[:output]}"
	    puts "error: #{self[:error]}"
	    puts "exit_code: #{self[:exit_code]}"
	  end
	rescue Exception => e
	  self[:error] = "Exception: " + e.to_s
	  self[:exit_code]=1
	end
	
	if((self[:exit_code] != 0) && !self[:ignore_exit_code])
	  exception_text = self[:error]
	  exception_text = self[:output] if(self[:error].empty?)
	  raise exception_text 
	end
  end
end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
wixgem-0.48.0 lib/command.rb