module PoiseBoiler::Helpers::Kitchen::ProvisionerHelpers

Helper methods for the two TK provisioners.

Private Instance Methods

convert_halite_cookbooks(dest) click to toggle source
# File lib/poise_boiler/helpers/kitchen/provisioner_helpers.rb, line 35
def convert_halite_cookbooks(dest)
  @real_cookbook_deps = {}
  gems_to_convert = {'poise-profiler' => Halite::Gem.new('poise-profiler')}
  gems_to_check = [poise_helper_instance.cookbook]
  # Only look at dev dependcies of the top-level spec, which happens to
  # be the first since this is a breadth-first analysis. Kind of hacky
  # but less hacky than refactoring this whole loop.
  first = true
  until gems_to_check.empty?
    check = gems_to_check.pop
    # Already in the list, skip expansion.
    next if gems_to_convert.include?(check.name)
    # Not a cookbook, don't expand.
    next unless check.is_halite_cookbook?
    gems_to_convert[check.name] = check
    # Expand dependencies and check each of those.
    check.cookbook_dependencies(development: first).each do |dep|
      dep_cook = dep.cookbook
      if dep_cook
        gems_to_check << dep_cook
      else
        @real_cookbook_deps[dep.name] = dep
      end
    end
    first = false
  end
  # Convert all the things!
  tmpbooks_dir = File.join(dest, 'cookbooks')
  FileUtils.mkdir_p(tmpbooks_dir)
  gems_to_convert.each do |name, gem_data|
    Halite.convert(gem_data, File.join(tmpbooks_dir, gem_data.cookbook_name))
  end
end
copy_test_cookbook(dest) click to toggle source
# File lib/poise_boiler/helpers/kitchen/provisioner_helpers.rb, line 69
def copy_test_cookbook(dest)
  fixture_base = File.join(config[:kitchen_root], 'test', 'cookbook')
  return unless File.exist?(File.join(fixture_base, 'metadata.rb'))
  tmp_base = File.join(dest, 'cookbooks', "#{poise_helper_instance.cookbook_name}_test")
  FileUtils.mkdir_p(tmp_base)
  FileUtils.cp_r(File.join(fixture_base, "."), tmp_base)
end
copy_test_cookbooks(dest) click to toggle source
# File lib/poise_boiler/helpers/kitchen/provisioner_helpers.rb, line 77
def copy_test_cookbooks(dest)
  fixtures_base = File.join(config[:kitchen_root], 'test', 'cookbooks')
  return unless File.exist?(fixtures_base)
  tmp_base = File.join(dest, 'cookbooks')
  FileUtils.mkdir_p(tmp_base)
  FileUtils.cp_r(File.join(fixtures_base, "."), tmp_base)
end
poise_helper_instance() click to toggle source
# File lib/poise_boiler/helpers/kitchen/provisioner_helpers.rb, line 29
def poise_helper_instance
  PoiseBoiler::Kitchen.instance || begin
    raise 'Global poise-boiler kitchen instance not set'
  end
end