# encoding: utf-8 # copyright: 2015, Vulcano Security GmbH # license: All rights reserved class FindFiles TYPES = { block: 'b', character: 'c', directory: 'd', pipe: 'p', file: 'f', link: 'l', socket: 's', door: 'D' } attr_reader :error, :files def initialize(path, opts = {}) depth = opts[:depth] type = TYPES[opts[:type].to_sym] cmd = "find #{path}" cmd += " -maxdepth #{depth.to_i}" if depth.to_i > 0 cmd += " -type #{type}" unless type.nil? @result = Specinfra::Runner.run_command(cmd) exit_status = @result.exit_status.to_i if exit_status == 0 @files = @result.stdout.split("\n").map{ |x| x.strip }.find_all { |x| !x.empty? } else @files = [] end end def self.find(path, opts = {}) FindFiles.new(path, opts).files end end