Sha256: 4c6fe2096376c58e1b58f19966c374dc8dfeb583d49e83fb787d37fe196243f8
Contents?: true
Size: 1.55 KB
Versions: 1
Compression:
Stored size: 1.55 KB
Contents
# frozen_string_literal: true module Executo class Command include CommandDsl include TaggedLogger attr_reader :executo_id, :parameter_values, :status, :stdout, :stderr, :exitstatus def initialize(*args) @executo_id = args.first&.delete(:id) || SecureRandom.uuid @errors = ActiveModel::Errors.new(self) @parameter_values = args.first&.delete(:parameter_values) || {} super(*args) end def call raise 'missing target' unless target perform end def process_results(results) state = results[:state] logger.debug("Processing #{state} results") public_send(state.to_sym, results) if respond_to?(state.to_sym) end def setup_logger(id) logger_add_tag(self.class.name) logger_add_tag(id) end private def perform Executo.publish(target: target, command: command, parameters: safe_parameters, feedback: { service: self.class.name, id: executo_id, arguments: attributes.to_h }) end def safe_parameters local_parameter_values = {} local_parameter_values = implicit_parameter_values if respond_to?(:implicit_parameter_values) local_parameter_values = local_parameter_values.merge(parameter_values) parameters.split.map { |parameter| parameter % local_parameter_values } end class << self def process_feedback(feedback, results) cmd = new(feedback['arguments'].merge(id: feedback['id'])) cmd.setup_logger(feedback['id']) cmd.process_results(results.symbolize_keys) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
executo-0.3.12 | lib/executo/command.rb |