Module: Boson::PipeRunner
- Included in:
- BinRunner
- Defined in:
- lib/boson/pipe_runner.rb
Constant Summary collapse
- PIPE =
'+'
Class Method Summary collapse
-
.split_array_by(arr, divider) ⇒ Object
Splits array into array of arrays with given element.
Instance Method Summary collapse
-
#commands ⇒ Object
Commands to executed, in order given by user.
- #execute_command(command, args) ⇒ Object
- #parse_args(args) ⇒ Object
- #translate_args(args, piped) ⇒ Object
Class Method Details
.split_array_by(arr, divider) ⇒ Object
Splits array into array of arrays with given element
6 7 8 9 10 11 |
# File 'lib/boson/pipe_runner.rb', line 6 def self.split_array_by(arr, divider) arr.inject([[]]) {|results, element| (divider == element) ? (results << []) : (results.last << element) results } end |
Instance Method Details
#commands ⇒ Object
Commands to executed, in order given by user
34 35 36 |
# File 'lib/boson/pipe_runner.rb', line 34 def commands @commands ||= @all_args.map {|e| e[0]} end |
#execute_command(command, args) ⇒ Object
21 22 23 24 25 26 |
# File 'lib/boson/pipe_runner.rb', line 21 def execute_command(command, args) @all_args.inject(nil) do |acc, (cmd,*args)| args = translate_args(args, acc) super(cmd, args) end end |
#parse_args(args) ⇒ Object
13 14 15 16 17 18 19 |
# File 'lib/boson/pipe_runner.rb', line 13 def parse_args(args) @all_args = PipeRunner.split_array_by(args, PIPE) args = @all_args[0] super(args).tap do |result| @all_args[0] = ([result[0]] + Array(result[2])).compact end end |
#translate_args(args, piped) ⇒ Object
28 29 30 31 |
# File 'lib/boson/pipe_runner.rb', line 28 def translate_args(args, piped) args.unshift piped if piped args end |