lib/command.rb in dev_commands-0.0.5 vs lib/command.rb in dev_commands-0.0.6

- old
+ new

@@ -1,5 +1,6 @@ +require 'open3' require_relative('./array.rb') require_relative('./hash.rb') require_relative('./timer.rb') class Command < Hash @@ -24,10 +25,11 @@ } 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 @@ -39,22 +41,32 @@ ruby = self[:input].gsub("<%","").gsub("%>","") begin puts "eval(#{ruby})" self[:output]=eval(ruby) - rescue + rescue puts "unable to eval(#{ruby})" raise "unable to eval(#{ruby})" end self[:elapsed] = timer.elapsed_str self[:end_time] = Time.now else - self[:output] = `#{self[:input]}` - self[:elapsed] = timer.elapsed_str - self[:end_time] = Time.now - self[:exit_code]=$?.to_i + begin + self[:output],self[:error],self[:exit_code]= Open3.capture3(self[:input]) + + + #self[:output] = `#{self[:input]}` + self[:elapsed] = timer.elapsed_str + self[:end_time] = Time.now + #self[:exit_code]=$?.to_i + 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 end @@ -71,15 +83,23 @@ def self.user ENV['USER'].nil? ? ENV['USERNAME'] : ENV['USER'] end def to_html + if self[:exit_code] == 0 [ - '<h2>', + '<div><table><tr><td width="20"></td><td><pre>', self[:input], - '</h2>', - '<ul>', - map { |k, v| ["<li><strong>#{k}</strong>", v.respond_to?(:to_html) ? v.to_html : "<span>#{v}</span></li>"] }, - '</ul>' + '</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