Sha256: ce7c9f946fb59f61b818435b48f5de44cddab1ee6c2734da9fcbb73cd000a7de
Contents?: true
Size: 873 Bytes
Versions: 1
Compression:
Stored size: 873 Bytes
Contents
require "open3" class Rbsh::Pipeline < BasicObject attr_writer :_queue def initialize(name, *args, &block) _push(name, *args) end def run! commands = _queue.map do |c| [ c[:command], *c[:args] ].compact.map(&:to_s) end result = Result.new ::Open3.pipeline_rw(*commands) do |stdin, stdout, wait_threads| stdin.close lines = stdout.readlines lines = ["\n"] if lines.size == 0 result.set(lines) end result end def method_missing(name, *args, &block) _push(name, *args) self end class Result def set(lines) @lines = lines end def to_ary @lines end def to_s @lines.join("") end alias inspect to_s end protected def _push(name, *args, &block) _queue.push(command: name, args: args) end def _queue @_queue ||= [] end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rbsh-0.0.2 | lib/rbsh/pipeline.rb |