lib/fileset.js (21 lines of code) (raw):

const path = require('path'); const Promise = require('bluebird'); const glob = require('glob-all'); const File = require('./file'); class FileSet { /** * @param {File[]} files */ constructor(files) { this.files = files; } /** * @param {Object} options * @param {string|Array<string>} options.pattern * @param {string} [options.ignore] * @param {string} [options.cwd] * @param {string} [options.root] * @return {Promise<File[]>} */ static create(options) { const { ignore, cwd = process.cwd() } = options; const pattern = typeof options.pattern === 'string' ? [options.pattern] : options.pattern; const paths = glob.sync(pattern, { absolute: true, nodir: true, cwd, ignore }); return Promise.map(paths, (filepath) => File.create(filepath)).then((files) => new FileSet(files)); } } module.exports = FileSet;