lib/command.rb in dev_commands-0.0.22 vs lib/command.rb in dev_commands-0.0.23
- old
+ new
@@ -1,129 +1,129 @@
-require 'open3'
-require_relative('./array.rb')
-require_relative('./hash.rb')
-require_relative('./timer.rb')
-
-class Command < Hash
- def initialize command
-
- self[:input] = ''
- self[:timeout] = 0
- self[:directory] = ''
- self[:exit_code] = 0
- self[:output] = ''
- self[:error] = ''
- self[:machine] = ''
- self[:user] = ''
- self[:start_time] = nil
- self[:end_time] = nil
-
- if(command.kind_of?(String))
- self[:input] = command
- end
-
- if(command.kind_of?(Hash))
- command.each{|k,v|
- self[k.to_sym]=v
- }
- end
- end
-
- def execute
- puts "#{self[:input]}"
- pwd=Dir.pwd
- Dir.chdir(self[:directory]) if(self.has_key?(:directory) && File.exists?(self[:directory]))
- self[:directory] = pwd if(self[:directory].length==0)
-
- self[:machine] = Command.machine
- self[:user] = Command.user
-
- self[:start_time]=Time.now
- timer=Timer.new
- if self[:input].include?('<%') && self[:input].include?('%>')
- ruby = self[:input].gsub("<%","").gsub("%>","")
-
- begin
- self[:output]=eval(ruby)
- rescue
- self[:exit_code]=1
- self[:error]="unable to eval(#{ruby})"
- end
-
- self[:elapsed] = timer.elapsed_str
- self[:end_time] = Time.now
- else
- begin
- self[:output],self[:error],status= Open3.capture3(self[:input])
- self[:exit_code]=status.to_i
- self[:elapsed] = timer.elapsed_str
- self[:end_time] = Time.now
- rescue Exception => e
- self[:elapsed] = timer.elapsed_str
- self[:end_time] = Time.now
- self[:error] = "Exception: " + e.to_s
- self[:exit_code]=1
- end
- end
-
- Dir.chdir(pwd) if pwd != Dir.pwd
-
- if(self[:exit_code] != 0)
- puts ' '
- puts "exit_code=#{self[:exit_code]}"
- puts ' '
- puts self[:output]
- puts self[:error]
- puts ' '
- if(!self.has_key?(:ignore_failure) || !self[:ignore_failure])
- raise "#{self[:input]} failed"
- end #unless (self.has_key?(:ignore_failure) && self[:ignore_failure]==true)
- end
- end
-
- def self.machine
- if !ENV['COMPUTERNAME'].nil?
- return ENV['COMPUTERNAME']
- end
-
- machine = `hostname`
- machine = machine.split('.')[0] if machine.include?('.')
- return machine.strip
- end
-
- def self.user
- ENV['USER'].nil? ? ENV['USERNAME'] : ENV['USER']
- end
-
- def self.exit_code command
- cmd = Command.new(command)
- cmd[:ignore_failure]=true
- cmd.execute
- cmd[:exit_code]
- end
-
- def self.output command
- cmd = Command.new(command)
- cmd[:ignore_failure]=true
- cmd.execute
- cmd[:output]
- end
-
- def to_html
- if self[:exit_code] == 0
- [
- '<div><table><tr><td width="20"></td><td><pre>',
- self[:input],
- '</pre></td></tr></table></div>'
- ].join
- else
- [
- '<div><table><tr><td width="20"></td><td><pre>',
- self[:input],
- '</pre><table><tr><td width="20"></td><td><table>',
- map { |k, v| ["<tr><td><strong>#{k}</strong></td>", v.respond_to?(:to_html) ? v.to_html : "<td><span><pre>#{v}</pre></span></td></tr>"] },
- '</table>',
- '</td></tr></table></td></tr></table></div>'
- ].join
- end
- end
+require 'open3'
+require_relative('./array.rb')
+require_relative('./hash.rb')
+require_relative('./timer.rb')
+
+class Command < Hash
+ def initialize command
+
+ self[:input] = ''
+ self[:timeout] = 0
+ self[:directory] = ''
+ self[:exit_code] = 0
+ self[:output] = ''
+ self[:error] = ''
+ self[:machine] = ''
+ self[:user] = ''
+ self[:start_time] = nil
+ self[:end_time] = nil
+
+ if(command.kind_of?(String))
+ self[:input] = command
+ end
+
+ if(command.kind_of?(Hash))
+ command.each{|k,v|
+ self[k.to_sym]=v
+ }
+ end
+ end
+
+ def execute
+ puts "#{self[:input]}"
+ pwd=Dir.pwd
+ Dir.chdir(self[:directory]) if(self.has_key?(:directory) && File.exists?(self[:directory]))
+ self[:directory] = pwd if(self[:directory].length==0)
+
+ self[:machine] = Command.machine
+ self[:user] = Command.user
+
+ self[:start_time]=Time.now
+ timer=Timer.new
+ if self[:input].include?('<%') && self[:input].include?('%>')
+ ruby = self[:input].gsub("<%","").gsub("%>","")
+
+ begin
+ self[:output]=eval(ruby)
+ rescue
+ self[:exit_code]=1
+ self[:error]="unable to eval(#{ruby})"
+ end
+
+ self[:elapsed] = timer.elapsed_str
+ self[:end_time] = Time.now
+ else
+ begin
+ self[:output],self[:error],status= Open3.capture3(self[:input])
+ self[:exit_code]=status.to_i
+ self[:elapsed] = timer.elapsed_str
+ self[:end_time] = Time.now
+ rescue Exception => e
+ self[:elapsed] = timer.elapsed_str
+ self[:end_time] = Time.now
+ self[:error] = "Exception: " + e.to_s
+ self[:exit_code]=1
+ end
+ end
+
+ Dir.chdir(pwd) if pwd != Dir.pwd
+
+ if(self[:exit_code] != 0)
+ puts ' '
+ puts "exit_code=#{self[:exit_code]}"
+ puts ' '
+ puts self[:output]
+ puts self[:error]
+ puts ' '
+ if(!self.has_key?(:ignore_failure) || !self[:ignore_failure])
+ raise "#{self[:input]} failed"
+ end #unless (self.has_key?(:ignore_failure) && self[:ignore_failure]==true)
+ end
+ end
+
+ def self.machine
+ if !ENV['COMPUTERNAME'].nil?
+ return ENV['COMPUTERNAME']
+ end
+
+ machine = `hostname`
+ machine = machine.split('.')[0] if machine.include?('.')
+ return machine.strip
+ end
+
+ def self.user
+ ENV['USER'].nil? ? ENV['USERNAME'] : ENV['USER']
+ end
+
+ def self.exit_code command
+ cmd = Command.new(command)
+ cmd[:ignore_failure]=true
+ cmd.execute
+ cmd[:exit_code]
+ end
+
+ def self.output command
+ cmd = Command.new(command)
+ cmd[:ignore_failure]=true
+ cmd.execute
+ cmd[:output]
+ end
+
+ def to_html
+ if self[:exit_code] == 0
+ [
+ '<div><table><tr><td width="20"></td><td><pre>',
+ self[:input],
+ '</pre></td></tr></table></div>'
+ ].join
+ else
+ [
+ '<div><table><tr><td width="20"></td><td><pre>',
+ self[:input],
+ '</pre><table><tr><td width="20"></td><td><table>',
+ map { |k, v| ["<tr><td><strong>#{k}</strong></td>", v.respond_to?(:to_html) ? v.to_html : "<td><span><pre>#{v}</pre></span></td></tr>"] },
+ '</table>',
+ '</td></tr></table></td></tr></table></div>'
+ ].join
+ end
+ end
end
\ No newline at end of file