Skip to content

Commit 3f25f5a

Browse files
committed
feat(build): add general copy/multicopy method
1 parent cfe71de commit 3f25f5a

File tree

11 files changed

+274
-207
lines changed

11 files changed

+274
-207
lines changed

gulpfile.js

Lines changed: 181 additions & 113 deletions
Large diffs are not rendered by default.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@
6767
"run-sequence": "^0.3.6",
6868
"source-map": "^0.3.0",
6969
"sprintf-js": "1.0.*",
70+
"ternary-stream": "^1.2.3",
7071
"through2": "^0.6.1",
7172
"yargs": "2.3.*"
7273
}

tools/build/copy.js

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/**
2+
* A utility that allows copying one file to multiple directories, such
3+
* as the LICENSE file.
4+
*/
5+
var path = require('path');
6+
var util = require('./util');
7+
var ternaryStream = require('ternary-stream');
8+
var minimatch = require('minimatch');
9+
10+
module.exports = {
11+
multicopy: multicopy,
12+
copy: copy
13+
};
14+
15+
function createCopyPipe(gulp, plugins, config) {
16+
var pipe = gulp.src(config.src);
17+
Object.keys(config.pipes).forEach(function(pattern) {
18+
pipe = pipe.pipe(ternaryStream(function(file) {
19+
return minimatch(file.relative, pattern);
20+
}, config.pipes[pattern]));
21+
});
22+
return pipe;
23+
}
24+
25+
function copy(gulp, plugins, config) {
26+
return function() {
27+
return createCopyPipe(gulp, plugins, config)
28+
.pipe(gulp.dest(config.dest));
29+
}
30+
}
31+
32+
function multicopy(gulp, plugins, config) {
33+
return function() {
34+
var pipe = createCopyPipe(gulp, plugins, config);
35+
var modules = util.subDirs('modules');
36+
if (config.exclude) {
37+
modules = modules.filter(function(module) {
38+
return config.exclude.indexOf(module) === -1;
39+
});
40+
}
41+
modules.map(function(module) {
42+
pipe = pipe.pipe(gulp.dest(path.join(config.dest, module)));
43+
});
44+
return pipe;
45+
};
46+
}

tools/build/dartanalyzer.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ var util = require('./util');
99
module.exports = function(gulp, plugins, config) {
1010
return function() {
1111
var tempFile = '_analyzer.dart';
12-
return util.forEachSubDir(
12+
return util.forEachSubDirSequential(
1313
config.dest,
1414
function(dir) {
1515
var srcFiles = [].slice.call(glob.sync('{/lib,/web}/**/*.dart', {

tools/build/deps.js

Lines changed: 0 additions & 8 deletions
This file was deleted.

tools/build/multicopy.js

Lines changed: 0 additions & 29 deletions
This file was deleted.

tools/build/pubget.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
var util = require('./util');
2+
var spawn = require('child_process').spawn;
3+
var path = require('path');
4+
5+
module.exports = function(gulp, plugins, config) {
6+
return function() {
7+
// We need to execute pubspec serially as otherwise we can get into trouble
8+
// with the pub cache...
9+
return util.forEachSubDirSequential(config.dir, function(subDir) {
10+
return util.processToPromise(spawn(config.command, ['get'], {
11+
stdio: 'inherit',
12+
cwd: subDir
13+
}));
14+
});
15+
};
16+
};
17+

tools/build/pubspec.js

Lines changed: 0 additions & 40 deletions
This file was deleted.

tools/build/run_server_dart_tests.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ var util = require('./util');
88

99
module.exports = function(gulp, plugins, config) {
1010
return function() {
11-
return util.forEachSubDir(
11+
return util.forEachSubDirSequential(
1212
config.dest,
1313
function(dir) {
1414
var testDir = path.join(dir, 'test');
@@ -18,7 +18,7 @@ module.exports = function(gulp, plugins, config) {
1818
}));
1919
if (testFiles.length == 0) {
2020
// No test files found
21-
return;
21+
return Q.resolve();
2222
}
2323
var header = ['library _all_tests;', ''];
2424
var main = ['main() {'];

tools/build/transpile.js

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,16 @@
11
var util = require('./util');
22
var gulpTraceur = require('../transpiler/gulp-traceur');
33
var file2moduleName = require('./file2modulename');
4-
var mergeStreams = require('event-stream').merge;
54

65
module.exports = function(gulp, plugins, config) {
76
return function() {
8-
var transpile = gulp.src(config.src)
7+
return gulp.src(config.src)
98
.pipe(plugins.rename({extname: '.'+config.outputExt}))
10-
.pipe(util.insertSrcFolder(plugins, config.srcFolderInsertion, config.modulesFolder))
9+
.pipe(util.insertSrcFolder(plugins, config.srcFolderInsertion))
1110
.pipe(gulpTraceur(
1211
config.options,
1312
file2moduleName)
1413
)
1514
.pipe(gulp.dest(config.dest));
16-
17-
var copy = gulp.src(config.copy)
18-
.pipe(plugins.rename({extname: '.'+config.outputExt}))
19-
.pipe(util.insertSrcFolder(plugins, config.srcFolderInsertion, config.modulesFolder))
20-
.pipe(gulp.dest(config.dest));
21-
22-
return mergeStreams(transpile, copy);
2315
};
2416
};

0 commit comments

Comments
 (0)