summaryrefslogtreecommitdiff
path: root/lib/chef/cookbook
diff options
context:
space:
mode:
authorLamont Granquist <lamont@scriptkiddie.org>2015-10-19 09:45:20 -0700
committerLamont Granquist <lamont@scriptkiddie.org>2015-10-26 16:21:06 -0700
commit4e61b02930ac7b8db3fd040ced2b110bfce54c9f (patch)
tree2bd81f0eca47534d897d5f3e3a606f9d01f6c32c /lib/chef/cookbook
parent98a1793e95e7f89b5206883528a0d00c209838f0 (diff)
downloadchef-4e61b02930ac7b8db3fd040ced2b110bfce54c9f.tar.gz
validate
Diffstat (limited to 'lib/chef/cookbook')
-rw-r--r--lib/chef/cookbook/cookbook_collection.rb6
-rw-r--r--lib/chef/cookbook/metadata.rb20
2 files changed, 26 insertions, 0 deletions
diff --git a/lib/chef/cookbook/cookbook_collection.rb b/lib/chef/cookbook/cookbook_collection.rb
index ae63abfc93..325142ce0b 100644
--- a/lib/chef/cookbook/cookbook_collection.rb
+++ b/lib/chef/cookbook/cookbook_collection.rb
@@ -41,5 +41,11 @@ class Chef
cookbook_versions.each{ |cookbook_name, cookbook_version| self[cookbook_name] = cookbook_version }
end
+ def validate!
+ each do |cookbook_name, cookbook_version|
+ cookbook_version.metadata.validate_chef_version!
+ cookbook_version.metadata.validate_ohai_version!
+ end
+ end
end
end
diff --git a/lib/chef/cookbook/metadata.rb b/lib/chef/cookbook/metadata.rb
index b7d61bd09e..93c62862a1 100644
--- a/lib/chef/cookbook/metadata.rb
+++ b/lib/chef/cookbook/metadata.rb
@@ -650,8 +650,28 @@ class Chef
)
end
+ def validate_ohai_version!
+ unless gem_dep_matches?("ohai", Gem::Version.new(Ohai::VERSION), *ohai_versions)
+ raise Exceptions::CookbookOhaiVersionMismatch.new(Ohai::VERSION, *ohai_versions)
+ end
+ end
+
+ def validate_chef_version!
+ unless gem_dep_matches?("chef", Gem::Version.new(Chef::VERSION), *chef_versions)
+ raise Exceptions::CookbookChefVersionMismatch.new(Chef::VERSION, *chef_versions)
+ end
+ end
+
private
+ def gem_dep_matches?(what, version, *deps)
+ return true unless deps.length > 0
+ deps.each do |dep|
+ return true if dep.match?(what, version)
+ end
+ return false
+ end
+
def run_validation
if name.nil?
@errors = ["The `name' attribute is required in cookbook metadata"]