class Commande::Chain

Attributes

chain_result[RW]
commands[RW]

Public Class Methods

new(*commands) click to toggle source
# File lib/commande/chain.rb, line 9
def initialize(*commands)
  self.commands = commands
end

Public Instance Methods

call(**args) click to toggle source
# File lib/commande/chain.rb, line 23
def call(**args)
  self.chain_result = commands.inject(InitialCommandResult.new(args)) do |last_result, current_command|
    current_result = current_command.call(**last_result.payload.dup)

    transfer_logs current_result
    transfer_errors current_result

    fail! unless transfer_success? current_result
    current_result
  end
end
chain(*commands) click to toggle source
# File lib/commande/chain.rb, line 13
def chain(*commands)
  new(*self.commands, *commands)
end
valid(**_args) click to toggle source
# File lib/commande/chain.rb, line 17
def valid(**_args)
  error! 'needs at least one command' if commands.empty?

  true
end