# encoding: utf-8 module Vulcano::Targets module DirsHelper class ChefAuditDir def handles?(paths) paths.include?('recipes') and paths.include?('metadata.rb') end def get_filenames(paths) paths.find_all do |x| x.start_with? 'recipes/' and x.end_with? '.rb' end end end class ServerspecDir def handles?(paths) paths.include?('spec') end def get_filenames(paths) paths.find_all do |path| path.start_with? 'spec' and path.end_with? '_spec.rb' end end end class FlatDir def handles?(paths) get_filenames(paths).empty? == false end def get_filenames(paths) paths.find_all { |x| x.end_with?('.rb') and !x.include?('/') } end end HANDLERS = [ ChefAuditDir, ServerspecDir, FlatDir ].map(&:new) def self.get_handler(paths) HANDLERS.find { |x| x.handles? paths } end end end