Module: Kommando::CommandPlugins::Schedule::ClassMethods
- Defined in:
 - lib/kommando/command_plugins/schedule.rb
 
Instance Method Summary collapse
- #_after_execute(context) ⇒ Object
 - #_after_schedule(context) ⇒ Object
 - #_before_execute(context) ⇒ Object
 - #_before_schedule(context) ⇒ Object
 - #_execute_context_to_data(data, context) ⇒ Object
 - #_halt_schedule_with_failure(context) ⇒ Object
 - #_schedule(context) ⇒ Object
 - #_schedule_context_to_data(data, context) ⇒ Object
 - #_schedule_context_to_result(context) ⇒ Object
 - #schedule(dependencies, parameters) ⇒ Object
 
Instance Method Details
#_after_execute(context) ⇒ Object
      58 59 60 61 62 63 64 65 66  | 
    
      # File 'lib/kommando/command_plugins/schedule.rb', line 58 def _after_execute(context) results = context[:instance].scheduled_command_results if failed_result = results.find(&:error?) super(context.merge(halt: CommandResult.failure({ command: name, parameters: context[:parameters] }.merge({ error: :scheduling_error, details: failed_result.error })))) else super(context) end end  | 
  
#_after_schedule(context) ⇒ Object
      49 50 51  | 
    
      # File 'lib/kommando/command_plugins/schedule.rb', line 49 def _after_schedule(context) context end  | 
  
#_before_execute(context) ⇒ Object
      53 54 55 56  | 
    
      # File 'lib/kommando/command_plugins/schedule.rb', line 53 def _before_execute(context) context[:instance].scheduled_command_results = [] super(context) end  | 
  
#_before_schedule(context) ⇒ Object
      37 38 39 40 41 42 43  | 
    
      # File 'lib/kommando/command_plugins/schedule.rb', line 37 def _before_schedule(context) unless context[:parameters].key?(:command_id) context[:parameters] = context[:parameters].merge({ command_id: SecureRandom.uuid }) end context end  | 
  
#_execute_context_to_data(data, context) ⇒ Object
      72 73 74 75  | 
    
      # File 'lib/kommando/command_plugins/schedule.rb', line 72 def _execute_context_to_data(data, context) results = context[:instance].scheduled_command_results super(data.merge(scheduled_commands: results.map(&:value)), context) end  | 
  
#_halt_schedule_with_failure(context) ⇒ Object
      81 82 83 84 85 86 87 88  | 
    
      # File 'lib/kommando/command_plugins/schedule.rb', line 81 def _halt_schedule_with_failure(context) case context[:halt] when CommandResult::Failure context[:halt] else CommandResult.failure(_schedule_context_to_data({}, context).merge({ error: context[:halt][:error], details: context[:halt][:data] })) end end  | 
  
#_schedule(context) ⇒ Object
      45 46 47  | 
    
      # File 'lib/kommando/command_plugins/schedule.rb', line 45 def _schedule(context) context.merge(schedule_return_value: context[:schedule_adapter].schedule!(name, context[:parameters], context[:handle_at])) end  | 
  
#_schedule_context_to_data(data, context) ⇒ Object
      77 78 79  | 
    
      # File 'lib/kommando/command_plugins/schedule.rb', line 77 def _schedule_context_to_data(data, context) data.merge(context.slice(:parameters)).merge(command: name) end  | 
  
#_schedule_context_to_result(context) ⇒ Object
      68 69 70  | 
    
      # File 'lib/kommando/command_plugins/schedule.rb', line 68 def _schedule_context_to_result(context) CommandResult.success(_schedule_context_to_data({}, context)) end  | 
  
#schedule(dependencies, parameters) ⇒ Object
      10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35  | 
    
      # File 'lib/kommando/command_plugins/schedule.rb', line 10 def schedule(dependencies, parameters) unless dependencies.key?(:schedule_adapter) raise Command::MissingDependencyError, 'You need to provide the `:schedule_adapter` dependency' end unless parameters.key?(:handle_at) raise Command::MissingParameterError, 'You need to provide the `:handle_at` parameter' end context = { parameters: parameters, schedule_adapter: dependencies[:schedule_adapter], handle_at: parameters[:handle_at].getutc, } context = _before_schedule(context) return _halt_schedule_with_failure(context) if context.key?(:halt) context = _schedule(context) return _halt_schedule_with_failure(context) if context.key?(:halt) context = _after_schedule(context) return _halt_schedule_with_failure(context) if context.key?(:halt) _schedule_context_to_result(context) end  |