def amass(include_globs, exclude_globs=[], ignore=[])
include_files = [include_globs].flatten.map{ |g| Dir.glob(g) }.flatten.uniq
exclude_files = [exclude_globs].flatten.map{ |g| Dir.glob(g) }.flatten.uniq
include_files = include_files.map{ |f| File.directory?(f) ? File.join(f, '**/*') : f }
exclude_files = exclude_files.map{ |f| File.directory?(f) ? File.join(f, '**/*') : f }
include_files = include_files.flatten.map{ |g| Dir.glob(g) }.flatten.uniq
exclude_files = exclude_files.flatten.map{ |g| Dir.glob(g) }.flatten.uniq
files = include_files - exclude_files
files = files.reject{ |f| [ignore].flatten.any?{ |x| File.fnmatch?(x, File.basename(f)) } }
files
end