Sha256: d20636384fb25951f27aa73e51ec553145363fda330c4d54846863bfdfe5ceb0
Contents?: true
Size: 1.43 KB
Versions: 5
Compression:
Stored size: 1.43 KB
Contents
require 'chef/version_class' module Berkshelf module Validator class << self # Perform a complete cookbook validation checking: # * File names for inappropriate characters # * Invalid Ruby syntax # * Invalid ERB templates # # @param [Array<CachedCookbook>, CachedCookbook] cookbooks # the Cookbook(s) to validate def validate(cookbooks) Array(cookbooks).each do |cookbook| validate_files(cookbook) cookbook.validate end end # Validate that the given cookbook does not have "bad" files. Currently # this means including spaces in filenames (such as recipes) # # @param [Array<CachedCookbook>, CachedCookbook] cookbooks # the Cookbook(s) to validate def validate_files(cookbooks) Array(cookbooks).each do |cookbook| base, name = Pathname.new(cookbook.path.to_s).split files = Dir.glob("#{name}/**/*.rb", base: base.to_s).select { |f| f =~ /[[:space:]]/ } validate_versions(cookbook) raise InvalidCookbookFiles.new(cookbook, files) unless files.empty? end end def validate_versions(cookbook) cookbook_dependencies = cookbook.dependencies cookbook_dependencies.each do |cookbook_name, cookbook_version| version = cookbook_version.gsub(/[^\d,\.]/, '') Chef::Version.new(version) end end end end end
Version data entries
5 entries across 5 versions & 1 rubygems