class Lookbook::InputStore

def self.default_config

def self.default_config
  ConfigLoader.call(CONFIG_FILE)
end

def self.init_from_config

def self.init_from_config
  new(default_config)
end

def add_input(input, *args)

def add_input(input, *args)
  store[normalize_name(input)] = build_config(input, *args)
end

def build_config(name, *args)

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?
    Store.new({
      name: name.to_sym,
      partial: partial,
      options: DEFAULTS.merge(opts.to_h)
    })
  else
    raise ConfigError.new("inputs must define a partial path", scope: "inputs.config")
  end
end

def get_input(input)

def get_input(input)
  store[normalize_name(input)]
end

def initialize(config = nil)

def initialize(config = nil)
  @store = {}
  config.to_h.each do |name, opts|
    add_input(name, opts[:partial], opts.except(:partial))
  end
end

def normalize_name(name)

def normalize_name(name)
  name.to_s.tr("-", "_").to_sym
end