Sha256: 345d91a2d1d9e88aa0fe7f97bfca029ee21196fc73ad586cb11f9500ab8d66ac
Contents?: true
Size: 1.41 KB
Versions: 1
Compression:
Stored size: 1.41 KB
Contents
module Lookbook class InputStore CONFIG_FILE = "config/inputs.yml" DEFAULTS = {} attr_reader :store delegate :to_h, to: :store def initialize(config = nil) @store = {} config.to_h.each do |name, opts| opts[:system] = true add_input(name, opts[:partial], opts.except(:partial)) end end def add_input(input, *) store[normalize_name(input)] = build_config(input, *) end def get_input(input) store[normalize_name(input)] end def self.init_from_config new(default_config) end def self.default_config ConfigLoader.call(CONFIG_FILE) end protected def normalize_name(name) name.to_s.tr("-", "_").to_sym end def build_config(name, *args) partial = nil opts = nil if args.many? && args.last.is_a?(Hash) partial = args.first opts = args.last elsif args.first.is_a?(String) partial = args.first end if partial.present? input = Store.new({ name: name.to_sym, partial: partial, options: DEFAULTS.merge(opts.to_h) }) if input.options.key?(:system) input.system = input.options[:system] input.options.delete(:system) end input else raise ConfigError.new("inputs must define a partial path", scope: "inputs.config") end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
lookbook-2.1.0 | lib/lookbook/stores/input_store.rb |