247: def generate
248: return [] unless stat(self[:path])
249:
250: if self[:recurse]
251: files = Puppet::FileServing::Fileset.new(self[:path], :recurse => self[:recurse]).files.collect do |f|
252: f == "." ? self[:path] : File.join(self[:path], f)
253: end
254: else
255: files = [self[:path]]
256: end
257: result = files.find_all { |path| tidy?(path) }.collect { |path| mkfile(path) }.each { |file| notice "Tidying %s" % file.ref }.sort { |a,b| b[:path] <=> a[:path] }
258:
259:
260:
261: return result unless rmdirs?
262:
263:
264:
265: files_by_name = result.inject({}) { |hash, file| hash[file[:path]] = file; hash }
266:
267: files_by_name.keys.sort { |a,b| b <=> b }.each do |path|
268: dir = File.dirname(path)
269: next unless resource = files_by_name[dir]
270: if resource[:require]
271: resource[:require] << Puppet::Resource::Reference.new(:file, path)
272: else
273: resource[:require] = [Puppet::Resource::Reference.new(:file, path)]
274: end
275: end
276:
277: return result
278: end