module ComposeRefinements

Public Instance Methods

compose(keyword = 'import') click to toggle source
# File lib/bashly/refinements/compose_refinements.rb, line 5
def compose(keyword = 'import')
  result = {}
  each do |k, v|
    if k.to_s == keyword
      sub = safe_load_yaml(v).compose keyword
      if sub.is_a? Array
        result = sub
      else
        result.merge! sub
      end
    elsif v.respond_to? :compose
      result[k] = v.compose keyword
    else
      result[k] = v
    end
  end
  result
end
safe_load_yaml(path) click to toggle source
# File lib/bashly/refinements/compose_refinements.rb, line 24
def safe_load_yaml(path)
  loaded = YAML.load_erb_file path
  return loaded if loaded.is_a?(Array) || loaded.is_a?(Hash)

  raise Bashly::ConfigurationError, "Cannot find a valid YAML in g`#{path}`"
rescue Errno::ENOENT
  raise Bashly::ConfigurationError, "Cannot find import file g`#{path}`"
end