diff options
author | Lamont Granquist <lamont@scriptkiddie.org> | 2015-10-19 09:45:20 -0700 |
---|---|---|
committer | Lamont Granquist <lamont@scriptkiddie.org> | 2015-10-26 16:21:06 -0700 |
commit | 4e61b02930ac7b8db3fd040ced2b110bfce54c9f (patch) | |
tree | 2bd81f0eca47534d897d5f3e3a606f9d01f6c32c /lib/chef/cookbook | |
parent | 98a1793e95e7f89b5206883528a0d00c209838f0 (diff) | |
download | chef-4e61b02930ac7b8db3fd040ced2b110bfce54c9f.tar.gz |
validate
Diffstat (limited to 'lib/chef/cookbook')
-rw-r--r-- | lib/chef/cookbook/cookbook_collection.rb | 6 | ||||
-rw-r--r-- | lib/chef/cookbook/metadata.rb | 20 |
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"] |