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