summaryrefslogtreecommitdiff
path: root/lib/chef/cookbook.rb
diff options
context:
space:
mode:
authorEzra Zygmuntowicz <ez@engineyard.com>2008-10-08 14:19:52 -0700
committerEzra Zygmuntowicz <ez@engineyard.com>2008-10-08 14:19:52 -0700
commitc5d33c1298834ce40b8fbf344f281045771b5371 (patch)
tree1f0d4c7eab1eb379b544282a7ce48052acf719a5 /lib/chef/cookbook.rb
parent3d14601aea23dee3899d097324875274da419d84 (diff)
downloadchef-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.rb111
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