class Puppetfiler::Fixture
Public Class Methods
fixture(modules, repos, modifiers = {})
click to toggle source
# File lib/puppetfiler/fixture.rb, line 3 def self.fixture(modules, repos, modifiers = {}) fixtures = {} %w{forge_modules repositories}.each do |k| modifiers[k] = {} if not modifiers.has_key?(k) end modules.each do |name, mod| short = name.split('/')[1] value = { 'repo' => name, 'ref' => mod.version.to_s, } modifiers['forge_modules'].each do |modifier, merger| # TODO use x.match?(y) on ruby 2.4 value.merge!(merger) if name =~ /#{modifier}/ end fixtures['forge_modules'] = {} if not fixtures.has_key?('forge_modules') fixtures['forge_modules'][short] = value end repos.each do |name, hash| if hash.has_key?(:ref) content = { 'repo' => hash[:uri], 'ref' => hash[:ref], } modifiers['repositories'].each do |modifier, merger| content.merge!(merger) if name =~ /#{modifier}/ end else content = hash[:uri] modifiers['repositories'].each do |modifier, merger| if name =~ /#{modifier}/ if merger.is_a?(String) content = merger else content = { 'repo' => hash[:uri], } content.merge!(merger) end end end end fixtures['repositories'] = {} if not fixtures.has_key?('repositories') fixtures['repositories'][name] = content end return { 'fixtures' => fixtures } end