diff options
author | Ezra Zygmuntowicz <ez@engineyard.com> | 2008-10-08 14:19:52 -0700 |
---|---|---|
committer | Ezra Zygmuntowicz <ez@engineyard.com> | 2008-10-08 14:19:52 -0700 |
commit | c5d33c1298834ce40b8fbf344f281045771b5371 (patch) | |
tree | 1f0d4c7eab1eb379b544282a7ce48052acf719a5 /lib/chef/cookbook.rb | |
parent | 3d14601aea23dee3899d097324875274da419d84 (diff) | |
download | chef-c5d33c1298834ce40b8fbf344f281045771b5371.tar.gz |
big refactor of the repo layout. move to a chef gem and a chef-server gem all with proper deps
Diffstat (limited to 'lib/chef/cookbook.rb')
-rw-r--r-- | lib/chef/cookbook.rb | 111 |
1 files changed, 0 insertions, 111 deletions
diff --git a/lib/chef/cookbook.rb b/lib/chef/cookbook.rb deleted file mode 100644 index 46fc956d83..0000000000 --- a/lib/chef/cookbook.rb +++ /dev/null @@ -1,111 +0,0 @@ -# -# Author:: Adam Jacob (<adam@hjksolutions.com>) -# Copyright:: Copyright (c) 2008 HJK Solutions, LLC -# License:: Apache License, Version 2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -class Chef - class Cookbook - - attr_accessor :attribute_files, :definition_files, :template_files, :remote_files, :name - attr_reader :recipe_files - - def initialize(name) - @name = name - @attribute_files = Array.new - @definition_files = Array.new - @template_files = Array.new - @remote_files = Array.new - @recipe_files = Array.new - @recipe_names = Hash.new - @loaded_attributes = false - end - - def load_attributes(node) - unless node.kind_of?(Chef::Node) - raise ArgumentError, "You must pass a Chef::Node to load_attributes!" - end - @attribute_files.each do |file| - node.from_file(file) - end - @loaded_atributes = true - node - end - - def load_definitions - results = Hash.new - @definition_files.each do |file| - Chef::Log.debug("Loading cookbook #{name}'s definitions from #{file}") - resourcedef = Chef::ResourceDefinition.new - resourcedef.from_file(file) - results[resourcedef.name] = resourcedef - end - results - end - - def recipe_files=(*args) - @recipe_files = args.flatten - @recipe_files.each_index do |i| - file = @recipe_files[i] - case file - when /(.+\/)(.+).rb$/ - @recipe_names[$2] = i - when /(.+).rb$/ - @recipe_names[$1] = i - else - @recipe_names[file] = i - end - end - @recipe_files - end - - def recipe?(name) - lookup_name = name - if name =~ /(.+)::(.+)/ - cookbook_name = $1 - lookup_name = $2 - return false unless cookbook_name == @name - end - @recipe_names.has_key?(lookup_name) - end - - def recipes - results = Array.new - @recipe_names.each_key do |rname| - results << "#{@name}::#{rname}" - end - results - end - - def load_recipe(name, node, collection=nil, definitions=nil, cookbook_loader=nil) - cookbook_name = @name - recipe_name = nil - nmatch = name.match(/^(.+?)::(.+)$/) - recipe_name = nmatch ? nmatch[2] : name - - unless @recipe_names.has_key?(recipe_name) - raise ArgumentError, "Cannot find a recipe matching #{recipe_name} in cookbook #{@name}" - end - Chef::Log.debug("Found recipe #{recipe_name} in cookbook #{cookbook_name}") if Chef::Log.debug? - unless @loaded_attributes - load_attributes(node) - end - recipe = Chef::Recipe.new(cookbook_name, recipe_name, node, - collection, definitions, cookbook_loader) - recipe.from_file(@recipe_files[@recipe_names[recipe_name]]) - recipe - end - - end -end
\ No newline at end of file |