class Puppet::FileServing::Fileset

Operate recursively on a path, returning a set of file paths.

Constants

FileSetEntry

Attributes

checksum_type[RW]
ignore[R]
path[R]
recurse[RW]
recurselimit[RW]

Public Instance Methods

files() click to toggle source

Return a list of all files in our fileset. This is different from the normal definition of find in that we support specific levels of recursion, which means we need to know when we’re going another level deep, which Find doesn’t do.

# File lib/puppet/file_serving/fileset.rb, line 58
def files
  files = perform_recursion

  # Now strip off the leading path, so each file becomes relative, and remove
  # any slashes that might end up at the beginning of the path.
  result = files.collect { |file| file.sub(%r{^#{Regexp.escape(@path)}/*}, '') }

  # And add the path itself.
  result.unshift(".")

  result
end
ignore=(values) click to toggle source
# File lib/puppet/file_serving/fileset.rb, line 71
def ignore=(values)
  values = [values] unless values.is_a?(Array)
  @ignore = values.collect(&:to_s)
end

Public Class Methods

merge(*filesets) click to toggle source

Produce a hash of files, with merged so that earlier files with the same postfix win. E.g., /dir1/subfile beats /dir2/subfile. It’s a hash because we need to know the relative path of each file, and the base directory.

This will probably only ever be used for searching for plugins.
# File lib/puppet/file_serving/fileset.rb, line 15
def self.merge(*filesets)
  result = {}

  filesets.each do |fileset|
    fileset.files.each do |file|
      result[file] ||= fileset.path
    end
  end

  result
end
new(path, options = {}) click to toggle source
# File lib/puppet/file_serving/fileset.rb, line 27
def initialize(path, options = {})
  if Puppet.features.microsoft_windows?
    # REMIND: UNC path
    path = path.chomp(File::SEPARATOR) unless path =~ /^[A-Za-z]:\/$/
  else
    path = path.chomp(File::SEPARATOR) unless path == File::SEPARATOR
  end
  raise ArgumentError.new("Fileset paths must be fully qualified: #{path}") unless Puppet::Util.absolute_path?(path)

  @path = path

  # Set our defaults.
  self.ignore = []
  self.links = :manage
  @recurse = false
  @recurselimit = :infinite

  if options.is_a?(Puppet::Indirector::Request)
    initialize_from_request(options)
  else
    initialize_from_hash(options)
  end

  raise ArgumentError.new("Fileset paths must exist") unless valid?(path)
  raise ArgumentError.new("Fileset recurse parameter must not be a number anymore, please use recurselimit") if @recurse.is_a?(Integer)
end