class Eco::CLI::Config::Input

Attributes

core_config[R]
default_option[R]

Public Class Methods

new(core_config:, default_option: nil) click to toggle source
# File lib/eco/cli/config/input.rb, line 9
def initialize(core_config:, default_option: nil)
  @core_config    = core_config
  @default_option = default_option
  @callbacks = {}
end

Public Instance Methods

default_option?() click to toggle source
# File lib/eco/cli/config/input.rb, line 15
def default_option?
  !!default_option
end
define(option: nil, &block) click to toggle source
# File lib/eco/cli/config/input.rb, line 19
def define(option: nil, &block)
  option ||= default_option
  raise "Missing option to identify the input (no default defined)" unless !!option
  raise "Missing block to define the input obtention process" unless block
  @callbacks[option] = block
end
get(io:, option: nil) click to toggle source
# File lib/eco/cli/config/input.rb, line 26
def get(io:, option: nil)
  unless io && io.is_a?(Eco::API::UseCases::BaseIO)
    raise "You need to provide Eco::API::UseCases::BaseIO object. Given: #{io.class}"
  end

  option ||= default_option
  raise "Missing option to identify the input (no default defined)" unless !!option
  callback = @callbacks[option] || @callbacks[default_option]
  callback.call(io.session, option, io.options)
end