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_globs = include_globs.map{ |f| File.directory?(f) ? File.join(f, '**/*') : f }
exclude_globs = exclude_globs.map{ |f| File.directory?(f) ? File.join(f, '**/*') : f }
include_files = include_globs.flatten.map{ |g| Dir.glob(g) }.flatten.uniq
exclude_files = exclude_globs.flatten.map{ |g| Dir.glob(g) }.flatten.uniq
files = include_files - exclude_files
files = files.reject{ |f| ignore.any?{ |x| File.fnmatch?(x, File.basename(f)) } }
files
end