Commit 8ee375b

mo <mo.khan@gmail.com>
2018-05-11 21:19:01
extract shell command class.
1 parent d0c5422
lib/del/message.rb
@@ -16,25 +16,13 @@ module Del
     def execute_shell(command)
       command = Array(command).flatten.join(' ')
       reply("Okay, I will run '#{command}'.")
-      success = false
-      Open3.popen3(command) do |stdin, stdout, stderr, wait_thr|
-        stdout.each_line do |line|
-          if block_given?
-            yield line
-          else
-            reply("#{PREFIX} #{line}")
-          end
+      ShellCommand.new(command).run do |line|
+        if block_given?
+          yield line
+        else
+          reply("#{PREFIX} #{line}")
         end
-        stderr.each_line do |line|
-          if block_given?
-            yield line
-          else
-            reply("#{PREFIX} #{line}")
-          end
-        end
-        success = wait_thr.value.success?
       end
-      success
     end
 
     def to_s
lib/del/shell_command.rb
@@ -0,0 +1,15 @@
+module Del
+  class ShellCommand
+    def initialize(command)
+      @command = Array(command).flatten.join(' ')
+    end
+
+    def run
+      Open3.popen3(@command) do |stdin, stdout, stderr, wait_thr|
+        stdout.each_line { |line| yield line }
+        stderr.each_line { |line| yield line }
+        wait_thr.value.success?
+      end
+    end
+  end
+end
lib/del.rb
@@ -14,6 +14,7 @@ require "del/default_router"
 require "del/message"
 require "del/repository"
 require "del/robot"
+require "del/shell_command"
 require "del/socket_connection"
 require "del/socket_server"
 require "del/source"