# File lib/puppet/type/tidy.rb, line 247
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:         # No need to worry about relationships if we don't have rmdirs; there won't be
260:         # any directories.
261:         return result unless rmdirs?
262: 
263:         # Now make sure that all directories require the files they contain, if all are available,
264:         # so that a directory is emptied before we try to remove it.
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