class Chef::Cookbook::Chefignore
Constants
- COMMENTS_AND_WHITESPACE
Attributes
Public Class Methods
Source
# File lib/chef/cookbook/chefignore.rb, line 26 def initialize(ignore_file_or_repo) # Check the 'ignore_file_or_repo' path first and then look in the parent directories till root # to handle both the chef repo cookbook layout and a standalone cookbook @ignore_file = find_ignore_file(ignore_file_or_repo) @ignores = parse_ignore_file end
Public Instance Methods
Source
# File lib/chef/cookbook/chefignore.rb, line 43 def ignored?(file_name) @ignores.any? { |glob| File.fnmatch?(glob, file_name) } end
@param [String] file_name the file name to check ignored status for @return [Boolean] is the file ignored or not
Source
# File lib/chef/cookbook/chefignore.rb, line 35 def remove_ignores_from(file_list) Array(file_list).inject([]) do |unignored, file| ignored?(file) ? unignored : unignored << file end end
@param [Array] file_list the list of cookbook files @return [Array] list of cookbook files with chefignore files removed
Private Instance Methods
Source
# File lib/chef/cookbook/chefignore.rb, line 68 def find_ignore_file(path) Pathname.new(path).ascend do |dir| next unless dir.directory? file = dir.join("chefignore") return file.expand_path.to_s if file.exist? end nil end
Lookup of chefignore file till the root dir of the provided path. If file refer then lookup the parent dir till the root. eg. path: /var/.chef/cookbook_name Lookup at ‘/var/.chef/cookbook_name/chefignore’, ‘/var/.chef/chefignore’ ‘/var/chefignore’ and ‘/chefignore’ until exist
Source
# File lib/chef/cookbook/chefignore.rb, line 49 def parse_ignore_file ignore_globs = [] if @ignore_file && readable_file_or_symlink?(@ignore_file) File.foreach(@ignore_file) do |line| unless COMMENTS_AND_WHITESPACE.match?(line) line.strip! ignore_globs << line end end else Chef::Log.debug("No chefignore file found. No files will be ignored!") end ignore_globs end
Source
# File lib/chef/cookbook/chefignore.rb, line 79 def readable_file_or_symlink?(path) File.exist?(path) && File.readable?(path) && (File.file?(path) || File.symlink?(path)) end