lib/itamae/recipe.rb in itamae-1.0.0.beta10 vs lib/itamae/recipe.rb in itamae-1.0.0.beta11
- old
+ new
@@ -2,46 +2,56 @@
module Itamae
class Recipe
attr_reader :path
attr_reader :runner
- attr_reader :resources
+ attr_reader :dependencies
attr_reader :delayed_actions
def initialize(runner, path)
@runner = runner
@path = path
- @resources = ResourceCollection.new
+ @dependencies = RecipeDependencies.new
@delayed_actions = []
- load_resources
+ load_dependencies
end
def node
@runner.node
end
def run(options = {})
- @resources.each do |resource|
- # do action specified in the recipe
- resource.run(nil, dry_run: options[:dry_run])
+ @dependencies.each do |resource|
+ case resource
+ when Resource::Base
+ resource.run(nil, dry_run: options[:dry_run])
+ when Recipe
+ resource.run(options)
+ end
end
@delayed_actions.uniq.each do |action, resource|
resource.run(action, dry_run: options[:dry_run])
end
end
private
- def load_resources
+ def load_dependencies
instance_eval(File.read(@path), @path, 1)
end
def method_missing(method, name, &block)
klass = Resource.get_resource_class(method)
resource = klass.new(self, name, &block)
- @resources << resource
+ @dependencies << resource
+ end
+
+ def include_recipe(target)
+ target = ::File.expand_path(target, File.dirname(@path))
+ recipe = Recipe.new(@runner, target)
+ @dependencies << recipe
end
end
end