class Itamae::RecipeChildren

Constants

NotFoundError

Public Instance Methods

_dependency_in_dot() click to toggle source
# File lib/itamae/recipe_children.rb, line 73
def _dependency_in_dot
  result = ""

  recipes(recursive: false).each do |recipe|
    recipe.children.recipes(recursive: false).each do |child_recipe|
      result << %Q{  "#{recipe.path}" -> "#{child_recipe.path}";\n}
    end
    result << recipe.children._dependency_in_dot
  end

  result
end
dependency_in_dot() click to toggle source

returns dependencies graph in DOT

# File lib/itamae/recipe_children.rb, line 63
def dependency_in_dot
  result = ""
  result << "digraph recipes {\n"
  result << "  rankdir=LR;\n"
  result << _dependency_in_dot
  result << "}"

  result
end
find_recipe_by_path(path) click to toggle source
# File lib/itamae/recipe_children.rb, line 25
def find_recipe_by_path(path)
  recipes.find do |recipe|
    recipe.path == path
  end
end
find_resource_by_description(desc) click to toggle source
# File lib/itamae/recipe_children.rb, line 5
def find_resource_by_description(desc)
  # desc is like 'resource_type[name]'
  resources.find do |resource|
    type, name = Itamae::Resource.parse_description(desc)
    resource.resource_type == type && resource.resource_name == name
  end.tap do |resource|
    unless resource
      raise NotFoundError, "'#{desc}' resource is not found."
    end
  end
end
recipes(options = {}) click to toggle source
# File lib/itamae/recipe_children.rb, line 42
def recipes(options = {})
  options = {recursive: true}.merge(options)

  self.select do |item|
    item.is_a?(Recipe)
  end.map do |recipe|
    if options[:recursive]
      [recipe] + recipe.children.recipes
    else
      recipe
    end
  end.flatten
end
resources() click to toggle source
# File lib/itamae/recipe_children.rb, line 31
def resources
  self.map do |item|
    case item
    when Resource::Base
      item
    when Recipe
      item.children.resources
    end
  end.flatten
end
run() click to toggle source
# File lib/itamae/recipe_children.rb, line 56
def run
  self.each do |resource|
    resource.run
  end
end
subscribing(target) click to toggle source
# File lib/itamae/recipe_children.rb, line 17
def subscribing(target)
  resources.map do |resource|
    resource.subscriptions.select do |subscription|
      subscription.resource == target
    end
  end.flatten
end