Sha256: d9142e2c423e0b30e4bdf3a6a80f1dc06d3789a197c98641236badd798e02b19
Contents?: true
Size: 1.43 KB
Versions: 27
Compression:
Stored size: 1.43 KB
Contents
module Foobara class Command module Concerns module Inputs include Concern attr_reader :inputs def method_missing(method_name, *args, &) if respond_to_missing_for_inputs?(method_name) inputs[method_name] else # :nocov: super # :nocov: end end def respond_to_missing?(method_name, private = false) respond_to_missing_for_inputs?(method_name, private) || super end def respond_to_missing_for_inputs?(method_name, _private = false) inputs_type&.element_types&.key?(method_name) end foobara_delegate :inputs_type, to: :class def cast_and_validate_inputs if inputs_type.nil? && (raw_inputs.nil? || raw_inputs.empty?) @inputs = {} return end outcome = inputs_type.runner(raw_inputs).process_value if outcome.success? @inputs = outcome.result else outcome.errors.each do |error| if error.is_a?(Value::DataError) add_input_error(error) else # TODO: raise a real error # :nocov: raise "wtf" # :nocov: end end end if outcome.success? @inputs = outcome.result end end end end end end
Version data entries
27 entries across 27 versions & 1 rubygems