Sha256: d2124ae3cb94e06ade91f86ee212f87e5dc1af3076511eb3613f800df433784d

Contents?: true

Size: 1.37 KB

Versions: 45

Compression:

Stored size: 1.37 KB

Contents

# frozen_string_literal: true

require 'eac_ruby_utils/core_ext'

module EacCli
  class Config
    class Entry
      class Options
        enable_simple_cache
        enable_listable

        lists.add_symbol :type, :undefined

        DEFAULT_VALUES = {
          before_input: nil, bool: false, list: false, noecho: false, noenv: false, noinput: false,
          required: true, store: true, type: TYPE_UNDEFINED, validator: nil
        }.freeze

        lists.add_symbol :option, *DEFAULT_VALUES.keys

        common_constructor :options do
          self.options = self.class.lists.option.hash_keys_validate!(options)
        end

        delegate :to_h, to: :options

        def [](key)
          values.fetch(key.to_sym)
        end

        def request_input_options
          values.slice(:bool, :list, :noecho)
        end

        DEFAULT_VALUES.each do |attr, default_value|
          define_method(attr.to_s + ([true, false].include?(default_value) ? '?' : '')) do
            self[attr]
          end
        end

        private

        def values_uncached
          consumer = options.to_options_consumer
          r = {}
          DEFAULT_VALUES.each do |key, default_value|
            value = consumer.consume(key)
            value = default_value if value.nil?
            r[key] = value
          end
          consumer.validate
          r
        end
      end
    end
  end
end

Version data entries

45 entries across 45 versions & 3 rubygems

Version Path
avm-tools-0.113.3 sub/eac_cli/lib/eac_cli/config/entry/options.rb
eac_cli-0.24.1 lib/eac_cli/config/entry/options.rb
avm-tools-0.113.2 sub/eac_cli/lib/eac_cli/config/entry/options.rb
eac_cli-0.24.0 lib/eac_cli/config/entry/options.rb
ehbrs-tools-0.28.3 vendor/eac_cli/lib/eac_cli/config/entry/options.rb
avm-tools-0.110.0 vendor/eac_cli/lib/eac_cli/config/entry/options.rb
avm-tools-0.109.1 vendor/eac_cli/lib/eac_cli/config/entry/options.rb
avm-tools-0.109.0 vendor/eac_cli/lib/eac_cli/config/entry/options.rb
ehbrs-tools-0.28.2 vendor/eac_cli/lib/eac_cli/config/entry/options.rb
eac_cli-0.23.1 lib/eac_cli/config/entry/options.rb
avm-tools-0.108.0 vendor/eac_cli/lib/eac_cli/config/entry/options.rb
ehbrs-tools-0.28.1 vendor/eac_cli/lib/eac_cli/config/entry/options.rb
avm-tools-0.107.0 vendor/eac_cli/lib/eac_cli/config/entry/options.rb
ehbrs-tools-0.28.0 vendor/eac_cli/lib/eac_cli/config/entry/options.rb
avm-tools-0.106.0 vendor/eac_cli/lib/eac_cli/config/entry/options.rb
eac_cli-0.23.0 lib/eac_cli/config/entry/options.rb
ehbrs-tools-0.27.0 vendor/eac_cli/lib/eac_cli/config/entry/options.rb
ehbrs-tools-0.26.0 vendor/eac_cli/lib/eac_cli/config/entry/options.rb
avm-tools-0.105.0 vendor/eac_cli/lib/eac_cli/config/entry/options.rb
ehbrs-tools-0.25.1 vendor/eac_cli/lib/eac_cli/config/entry/options.rb