feat(build): add general copy/multicopy method

This commit is contained in:
Tobias Bosch
2015-02-23 17:56:47 -08:00
parent cfe71def7e
commit 3f25f5a356
11 changed files with 274 additions and 207 deletions

View File

@ -8,17 +8,37 @@ module.exports = {
streamToPromise: streamToPromise,
insertSrcFolder: insertSrcFolder,
filterByFile: filterByFile,
forEachSubDir: forEachSubDir
subDirs: subDirs,
forEachSubDir: forEachSubDir,
forEachSubDirSequential: forEachSubDirSequential
};
function subDirs(dir) {
return [].slice.call(glob.sync('*/', {cwd: dir}));
}
function forEachSubDir(dir, callback) {
var moduleFolders = [].slice.call(glob.sync(dir + '/*'));
return Q.all(moduleFolders.map(function(subDir) {
return callback(subDir);
var dirs = subDirs(dir);
return Q.all(dirs.map(function(subdir) {
return callback(path.join(dir, subdir));
}));
};
function forEachSubDirSequential(dir, callback) {
var dirs = subDirs(dir);
return next(0);
function next(index) {
if (index < dirs.length) {
return callback(path.join(dir, dirs[index])).then(function() {
return next(index+1);
});
} else {
return true;
}
}
}
function processToPromise(process) {
var defer = Q.defer();
process.on('close', function(code) {