Skip to content

Commit 0280160

Browse files
committed
More simplifications to extensions gulp tasks (microsoft#67863)
1 parent 5830f68 commit 0280160

3 files changed

Lines changed: 52 additions & 35 deletions

File tree

build/gulpfile.extensions.js

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ const path = require('path');
1111
const tsb = require('gulp-tsb');
1212
const es = require('event-stream');
1313
const filter = require('gulp-filter');
14-
const rimraf = require('rimraf');
1514
const util = require('./lib/util');
1615
const watcher = require('./lib/watch');
1716
const createReporter = require('./lib/reporter').createReporter;
@@ -43,12 +42,6 @@ const tasks = compilations.map(function (tsconfigFile) {
4342

4443
const name = relativeDirname.replace(/\//g, '-');
4544

46-
// Tasks
47-
const clean = 'clean-extension:' + name;
48-
const compile = 'compile-extension:' + name;
49-
const watch = 'watch-extension:' + name;
50-
const compileBuild = 'compile-extension-build:' + name;
51-
5245
const root = path.join('extensions', relativeDirname);
5346
const srcBase = path.join(root, 'src');
5447
const src = path.join(srcBase, '**');
@@ -107,10 +100,9 @@ const tasks = compilations.map(function (tsconfigFile) {
107100

108101
const srcOpts = { cwd: path.dirname(__dirname), base: srcBase };
109102

110-
gulp.task(clean, cb => rimraf(out, cb));
111103
const cleanTask = () => util.primraf(out);
112104

113-
gulp.task(compile, util.taskSeries(cleanTask, () => {
105+
const compileTask = util.task.series(cleanTask, () => {
114106
const pipeline = createPipeline(false, true);
115107
const input = gulp.src(src, srcOpts);
116108

@@ -119,19 +111,21 @@ const tasks = compilations.map(function (tsconfigFile) {
119111
.pipe(pipeline())
120112
.pipe(gulp.dest(out))
121113
);
122-
}));
114+
});
123115

124-
gulp.task(watch, [clean], () => {
116+
const watchTask = util.task.series(cleanTask, () => {
125117
const pipeline = createPipeline(false);
126118
const input = gulp.src(src, srcOpts);
127119
const watchInput = watcher(src, srcOpts);
128120

129-
return watchInput
121+
return util.streamToPromise(
122+
watchInput
130123
.pipe(util.incremental(pipeline, input))
131-
.pipe(gulp.dest(out));
124+
.pipe(gulp.dest(out))
125+
);
132126
});
133127

134-
gulp.task(compileBuild, util.taskSeries(cleanTask, () => {
128+
const compileBuildTask = util.task.series(cleanTask, () => {
135129
const pipeline = createPipeline(true, true);
136130
const input = gulp.src(src, srcOpts);
137131

@@ -140,15 +134,20 @@ const tasks = compilations.map(function (tsconfigFile) {
140134
.pipe(pipeline())
141135
.pipe(gulp.dest(out))
142136
);
143-
}));
137+
});
138+
139+
// Tasks
140+
gulp.task('compile-extension:' + name, compileTask);
141+
gulp.task('watch-extension:' + name, watchTask);
142+
gulp.task('compile-extension-build:' + name, compileBuildTask);
144143

145144
return {
146-
compile: compile,
147-
watch: watch,
148-
compileBuild: compileBuild
145+
compileTask: compileTask,
146+
watchTask: watchTask,
147+
compileBuildTask: compileBuildTask
149148
};
150149
});
151150

152-
gulp.task('compile-extensions', tasks.map(t => t.compile));
153-
gulp.task('watch-extensions', tasks.map(t => t.watch));
154-
gulp.task('compile-extensions-build', tasks.map(t => t.compileBuild));
151+
gulp.task('compile-extensions', util.task.parallel(...tasks.map(t => t.compileTask)));
152+
gulp.task('watch-extensions', util.task.parallel(...tasks.map(t => t.watchTask)));
153+
gulp.task('compile-extensions-build', util.task.parallel(...tasks.map(t => t.compileBuildTask)));

build/lib/util.js

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -208,14 +208,23 @@ function streamToPromise(stream) {
208208
});
209209
}
210210
exports.streamToPromise = streamToPromise;
211-
function taskSeries(...tasks) {
212-
return async () => {
213-
for (let i = 0; i < tasks.length; i++) {
214-
await tasks[i]();
215-
}
216-
};
217-
}
218-
exports.taskSeries = taskSeries;
211+
var task;
212+
(function (task) {
213+
function series(...tasks) {
214+
return async () => {
215+
for (let i = 0; i < tasks.length; i++) {
216+
await tasks[i]();
217+
}
218+
};
219+
}
220+
task.series = series;
221+
function parallel(...tasks) {
222+
return async () => {
223+
await Promise.all(tasks.map(t => t()));
224+
};
225+
}
226+
task.parallel = parallel;
227+
})(task = exports.task || (exports.task = {}));
219228
function getVersion(root) {
220229
let version = process.env['BUILD_SOURCEVERSION'];
221230
if (!version || !/^[0-9a-f]{40}$/i.test(version)) {

build/lib/util.ts

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -263,12 +263,21 @@ export function streamToPromise(stream: NodeJS.ReadWriteStream): Promise<void> {
263263
}
264264

265265
export type PromiseTask = () => Promise<void>;
266-
export function taskSeries(...tasks: PromiseTask[]): () => Promise<void> {
267-
return async () => {
268-
for (let i = 0; i < tasks.length; i++) {
269-
await tasks[i]();
270-
}
271-
};
266+
267+
export namespace task {
268+
export function series(...tasks: PromiseTask[]): () => Promise<void> {
269+
return async () => {
270+
for (let i = 0; i < tasks.length; i++) {
271+
await tasks[i]();
272+
}
273+
};
274+
}
275+
276+
export function parallel(...tasks: PromiseTask[]): () => Promise<void> {
277+
return async () => {
278+
await Promise.all(tasks.map(t => t()));
279+
};
280+
}
272281
}
273282

274283
export function getVersion(root: string): string | undefined {

0 commit comments

Comments
 (0)