Skip to content

Commit c25de7d

Browse files
committed
Extract task code to its own file
1 parent 60fe718 commit c25de7d

11 files changed

Lines changed: 220 additions & 206 deletions

build/gulpfile.compile.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,16 @@
66
'use strict';
77

88
const util = require('./lib/util');
9+
const task = require('./lib/task');
910
const compilation = require('./lib/compilation');
1011
const { compileExtensionsBuildTask } = require('./gulpfile.extensions');
1112

1213
// Full compile, including nls and inline sources in sourcemaps, for build
13-
const compileClientBuildTask = util.task.series(util.rimraf('out-build'), compilation.compileTask('src', 'out-build', true));
14+
const compileClientBuildTask = task.series(util.rimraf('out-build'), compilation.compileTask('src', 'out-build', true));
1415
compileClientBuildTask.displayName = 'compile-client-build';
1516

1617
// All Build
17-
const compileBuildTask = util.task.parallel(compileClientBuildTask, compileExtensionsBuildTask);
18+
const compileBuildTask = task.parallel(compileClientBuildTask, compileExtensionsBuildTask);
1819
compileBuildTask.displayName = 'compile-build';
1920

2021
exports.compileBuildTask = compileBuildTask;

build/gulpfile.editor.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
const gulp = require('gulp');
77
const path = require('path');
88
const util = require('./lib/util');
9+
const task = require('./lib/task');
910
const common = require('./lib/optimize');
1011
const es = require('event-stream');
1112
const File = require('vinyl');
@@ -290,8 +291,8 @@ const finalEditorResourcesTask = function () {
290291
finalEditorResourcesTask.displayName = 'final-editor-resources';
291292

292293
gulp.task('editor-distro',
293-
util.task.series(
294-
util.task.parallel(
294+
task.series(
295+
task.parallel(
295296
util.rimraf('out-editor-src'),
296297
util.rimraf('out-editor-build'),
297298
util.rimraf('out-editor-esm'),
@@ -300,13 +301,13 @@ gulp.task('editor-distro',
300301
util.rimraf('out-editor-min')
301302
),
302303
extractEditorSrcTask,
303-
util.task.parallel(
304-
util.task.series(
304+
task.parallel(
305+
task.series(
305306
compileEditorAMDTask,
306307
optimizeEditorAMDTask,
307308
minifyEditorAMDTask
308309
),
309-
util.task.series(
310+
task.series(
310311
createESMSourcesAndResourcesTask,
311312
compileEditorESMTask
312313
)

build/gulpfile.extensions.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ const tsb = require('gulp-tsb');
1212
const es = require('event-stream');
1313
const filter = require('gulp-filter');
1414
const util = require('./lib/util');
15+
const task = require('./lib/task');
1516
const watcher = require('./lib/watch');
1617
const createReporter = require('./lib/reporter').createReporter;
1718
const glob = require('glob');
@@ -112,7 +113,7 @@ const tasks = compilations.map(function (tsconfigFile) {
112113
.pipe(gulp.dest(out));
113114
};
114115
compileTask_.displayName = `compile-extension-${name}`;
115-
const compileTask = util.task.series(cleanTask, compileTask_);
116+
const compileTask = task.series(cleanTask, compileTask_);
116117

117118
const watchTask_ = () => {
118119
const pipeline = createPipeline(false);
@@ -124,7 +125,7 @@ const tasks = compilations.map(function (tsconfigFile) {
124125
.pipe(gulp.dest(out));
125126
};
126127
watchTask_.displayName = `watch-extension-${name}`;
127-
const watchTask = util.task.series(cleanTask, watchTask_);
128+
const watchTask = task.series(cleanTask, watchTask_);
128129

129130
const compileBuildTask_ = () => {
130131
const pipeline = createPipeline(true, true);
@@ -135,7 +136,7 @@ const tasks = compilations.map(function (tsconfigFile) {
135136
.pipe(gulp.dest(out));
136137
};
137138
compileBuildTask_.displayName = `compile-build-extension-${name}`;
138-
const compileBuildTask = util.task.series(cleanTask, compileBuildTask_);
139+
const compileBuildTask = task.series(cleanTask, compileBuildTask_);
139140

140141
// Tasks
141142
gulp.task('compile-extension:' + name, compileTask);
@@ -148,16 +149,16 @@ const tasks = compilations.map(function (tsconfigFile) {
148149
};
149150
});
150151

151-
const compileExtensionsTask = util.task.parallel(...tasks.map(t => t.compileTask));
152+
const compileExtensionsTask = task.parallel(...tasks.map(t => t.compileTask));
152153
compileExtensionsTask.displayName = 'compile-extensions';
153154
gulp.task(compileExtensionsTask.displayName, compileExtensionsTask);
154155
exports.compileExtensionsTask = compileExtensionsTask;
155156

156-
const watchExtensionsTask = util.task.parallel(...tasks.map(t => t.watchTask));
157+
const watchExtensionsTask = task.parallel(...tasks.map(t => t.watchTask));
157158
watchExtensionsTask.displayName = 'watch-extensions';
158159
gulp.task(watchExtensionsTask.displayName, watchExtensionsTask);
159160
exports.watchExtensionsTask = watchExtensionsTask;
160161

161-
const compileExtensionsBuildTask = util.task.parallel(...tasks.map(t => t.compileBuildTask));
162+
const compileExtensionsBuildTask = task.parallel(...tasks.map(t => t.compileBuildTask));
162163
compileExtensionsBuildTask.displayName = 'compile-extensions-build';
163164
exports.compileExtensionsBuildTask = compileExtensionsBuildTask;

build/gulpfile.vscode.js

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ const filter = require('gulp-filter');
2020
const json = require('gulp-json-editor');
2121
const _ = require('underscore');
2222
const util = require('./lib/util');
23+
const task = require('./lib/task');
2324
const ext = require('./lib/extensions');
2425
const buildfile = require('../src/buildfile');
2526
const common = require('./lib/optimize');
@@ -87,8 +88,8 @@ const BUNDLED_FILE_HEADER = [
8788
' *--------------------------------------------------------*/'
8889
].join('\n');
8990

90-
const optimizeVSCodeTask = util.task.series(
91-
util.task.parallel(
91+
const optimizeVSCodeTask = task.series(
92+
task.parallel(
9293
util.rimraf('out-vscode'),
9394
compileBuildTask
9495
),
@@ -105,7 +106,7 @@ const optimizeVSCodeTask = util.task.series(
105106
optimizeVSCodeTask.displayName = 'optimize-vscode';
106107

107108

108-
const optimizeIndexJSTask = util.task.series(
109+
const optimizeIndexJSTask = task.series(
109110
optimizeVSCodeTask,
110111
() => {
111112
const fullpath = path.join(process.cwd(), 'out-vscode/bootstrap-window.js');
@@ -117,8 +118,8 @@ const optimizeIndexJSTask = util.task.series(
117118
optimizeIndexJSTask.displayName = 'optimize-index-js';
118119

119120
const sourceMappingURLBase = `https://ticino.blob.core.windows.net/sourcemaps/${commit}`;
120-
const minifyVSCodeTask = util.task.series(
121-
util.task.parallel(
121+
const minifyVSCodeTask = task.series(
122+
task.parallel(
122123
util.rimraf('out-vscode-min'),
123124
optimizeIndexJSTask
124125
),
@@ -213,11 +214,11 @@ function getElectron(arch) {
213214
};
214215
}
215216

216-
gulp.task('electron', util.task.series(util.rimraf('.build/electron'), getElectron(process.arch)));
217-
gulp.task('electron-ia32', util.task.series(util.rimraf('.build/electron'), getElectron('ia32')));
218-
gulp.task('electron-x64', util.task.series(util.rimraf('.build/electron'), getElectron('x64')));
219-
gulp.task('electron-arm', util.task.series(util.rimraf('.build/electron'), getElectron('arm')));
220-
gulp.task('electron-arm64', util.task.series(util.rimraf('.build/electron'), getElectron('arm64')));
217+
gulp.task('electron', task.series(util.rimraf('.build/electron'), getElectron(process.arch)));
218+
gulp.task('electron-ia32', task.series(util.rimraf('.build/electron'), getElectron('ia32')));
219+
gulp.task('electron-x64', task.series(util.rimraf('.build/electron'), getElectron('x64')));
220+
gulp.task('electron-arm', task.series(util.rimraf('.build/electron'), getElectron('arm')));
221+
gulp.task('electron-arm64', task.series(util.rimraf('.build/electron'), getElectron('arm64')));
221222

222223

223224
/**
@@ -457,8 +458,8 @@ BUILD_TARGETS.forEach(buildTarget => {
457458
const sourceFolderName = `out-vscode${dashed(minified)}`;
458459
const destinationFolderName = `VSCode${dashed(platform)}${dashed(arch)}`;
459460

460-
const vscodeTask = util.task.series(
461-
util.task.parallel(
461+
const vscodeTask = task.series(
462+
task.parallel(
462463
minified ? minifyVSCodeTask : optimizeVSCodeTask,
463464
util.rimraf(path.join(buildRoot, destinationFolderName))
464465
),
@@ -491,7 +492,7 @@ const apiName = process.env.TRANSIFEX_API_NAME;
491492
const apiToken = process.env.TRANSIFEX_API_TOKEN;
492493

493494
gulp.task('vscode-translations-push',
494-
util.task.series(
495+
task.series(
495496
optimizeVSCodeTask,
496497
function () {
497498
const pathToMetadata = './out-vscode/nls.metadata.json';
@@ -509,7 +510,7 @@ gulp.task('vscode-translations-push',
509510
);
510511

511512
gulp.task('vscode-translations-export',
512-
util.task.series(
513+
task.series(
513514
optimizeVSCodeTask,
514515
function () {
515516
const pathToMetadata = './out-vscode/nls.metadata.json';
@@ -614,7 +615,7 @@ generateVSCodeConfigurationTask.displayName = 'generate-vscode-configuration';
614615

615616
const allConfigDetailsPath = path.join(os.tmpdir(), 'configuration.json');
616617
gulp.task('upload-vscode-configuration',
617-
util.task.series(
618+
task.series(
618619
generateVSCodeConfigurationTask,
619620
() => {
620621
if (!shouldSetupSettingsSearch()) {

build/gulpfile.vscode.linux.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ const shell = require('gulp-shell');
1212
const es = require('event-stream');
1313
const vfs = require('vinyl-fs');
1414
const util = require('./lib/util');
15+
const task = require('./lib/task');
1516
const packageJson = require('../package.json');
1617
const product = require('../product.json');
1718
const rpmDependencies = require('../resources/linux/rpm/dependencies.json');
@@ -241,29 +242,29 @@ BUILD_TARGETS.forEach((buildTarget) => {
241242

242243
{
243244
const debArch = getDebPackageArch(arch);
244-
const prepareDebTask = util.task.series(util.rimraf(`.build/linux/deb/${debArch}`), prepareDebPackage(arch));
245+
const prepareDebTask = task.series(util.rimraf(`.build/linux/deb/${debArch}`), prepareDebPackage(arch));
245246
prepareDebTask.displayName = `vscode-linux-${arch}-prepare-deb`;
246247
// gulp.task(prepareDebTask.displayName, prepareDebTask);
247-
const buildDebTask = util.task.series(prepareDebTask, buildDebPackage(arch));
248+
const buildDebTask = task.series(prepareDebTask, buildDebPackage(arch));
248249
buildDebTask.displayName = `vscode-linux-${arch}-build-deb`;
249250
gulp.task(buildDebTask.displayName, buildDebTask);
250251
}
251252

252253
{
253254
const rpmArch = getRpmPackageArch(arch);
254-
const prepareRpmTask = util.task.series(util.rimraf(`.build/linux/rpm/${rpmArch}`), prepareRpmPackage(arch));
255+
const prepareRpmTask = task.series(util.rimraf(`.build/linux/rpm/${rpmArch}`), prepareRpmPackage(arch));
255256
prepareRpmTask.displayName = `vscode-linux-${arch}-prepare-rpm`;
256257
// gulp.task(prepareRpmTask.displayName, prepareRpmTask);
257-
const buildRpmTask = util.task.series(prepareRpmTask, buildRpmPackage(arch));
258+
const buildRpmTask = task.series(prepareRpmTask, buildRpmPackage(arch));
258259
buildRpmTask.displayName = `vscode-linux-${arch}-build-rpm`;
259260
gulp.task(buildRpmTask.displayName, buildRpmTask);
260261
}
261262

262263
{
263-
const prepareSnapTask = util.task.series(util.rimraf(`.build/linux/snap/${arch}`), prepareSnapPackage(arch));
264+
const prepareSnapTask = task.series(util.rimraf(`.build/linux/snap/${arch}`), prepareSnapPackage(arch));
264265
prepareSnapTask.displayName = `vscode-linux-${arch}-prepare-snap`;
265266
gulp.task(prepareSnapTask.displayName, prepareSnapTask);
266-
const buildSnapTask = util.task.series(prepareSnapTask, buildSnapPackage(arch));
267+
const buildSnapTask = task.series(prepareSnapTask, buildSnapPackage(arch));
267268
buildSnapTask.displayName = `vscode-linux-${arch}-build-snap`;
268269
gulp.task(buildSnapTask.displayName, buildSnapTask);
269270
}

build/gulpfile.vscode.win32.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ const assert = require('assert');
1212
const cp = require('child_process');
1313
const _7z = require('7zip')['7z'];
1414
const util = require('./lib/util');
15+
const task = require('./lib/task');
1516
const pkg = require('../package.json');
1617
const product = require('../product.json');
1718
const vfs = require('vinyl-fs');
@@ -106,7 +107,7 @@ function buildWin32Setup(arch, target) {
106107

107108
function defineWin32SetupTasks(arch, target) {
108109
const cleanTask = util.rimraf(setupDir(arch, target));
109-
gulp.task(`vscode-win32-${arch}-${target}-setup`, util.task.series(cleanTask, buildWin32Setup(arch, target)));
110+
gulp.task(`vscode-win32-${arch}-${target}-setup`, task.series(cleanTask, buildWin32Setup(arch, target)));
110111
}
111112

112113
defineWin32SetupTasks('ia32', 'system');
@@ -124,8 +125,8 @@ function archiveWin32Setup(arch) {
124125
};
125126
}
126127

127-
gulp.task('vscode-win32-ia32-archive', util.task.series(util.rimraf(zipDir('ia32')), archiveWin32Setup('ia32')));
128-
gulp.task('vscode-win32-x64-archive', util.task.series(util.rimraf(zipDir('x64')), archiveWin32Setup('x64')));
128+
gulp.task('vscode-win32-ia32-archive', task.series(util.rimraf(zipDir('ia32')), archiveWin32Setup('ia32')));
129+
gulp.task('vscode-win32-x64-archive', task.series(util.rimraf(zipDir('x64')), archiveWin32Setup('x64')));
129130

130131
function copyInnoUpdater(arch) {
131132
return () => {
@@ -141,5 +142,5 @@ function patchInnoUpdater(arch) {
141142
};
142143
}
143144

144-
gulp.task('vscode-win32-ia32-inno-updater', util.task.series(copyInnoUpdater('ia32'), patchInnoUpdater('ia32')));
145-
gulp.task('vscode-win32-x64-inno-updater', util.task.series(copyInnoUpdater('x64'), patchInnoUpdater('x64')));
145+
gulp.task('vscode-win32-ia32-inno-updater', task.series(copyInnoUpdater('ia32'), patchInnoUpdater('ia32')));
146+
gulp.task('vscode-win32-x64-inno-updater', task.series(copyInnoUpdater('x64'), patchInnoUpdater('x64')));

build/lib/task.js

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
/*---------------------------------------------------------------------------------------------
2+
* Copyright (c) Microsoft Corporation. All rights reserved.
3+
* Licensed under the MIT License. See License.txt in the project root for license information.
4+
*--------------------------------------------------------------------------------------------*/
5+
'use strict';
6+
Object.defineProperty(exports, "__esModule", { value: true });
7+
const fancyLog = require("fancy-log");
8+
const ansiColors = require("ansi-colors");
9+
function _isPromise(p) {
10+
if (typeof p.then === 'function') {
11+
return true;
12+
}
13+
return false;
14+
}
15+
function _renderTime(time) {
16+
if (time < 1000) {
17+
return `${time.toFixed(2)} ms`;
18+
}
19+
let seconds = time / 1000;
20+
if (seconds < 60) {
21+
return `${seconds.toFixed(1)} s`;
22+
}
23+
let minutes = Math.floor(seconds / 60);
24+
seconds -= minutes * 60;
25+
return `${minutes} m and ${seconds} s`;
26+
}
27+
async function _execute(task) {
28+
const name = task.displayName || task.name || `<anonymous>`;
29+
fancyLog('Starting', ansiColors.cyan(name), '...');
30+
const startTime = process.hrtime();
31+
await _doExecute(task);
32+
const elapsedArr = process.hrtime(startTime);
33+
const elapsedNanoseconds = (elapsedArr[0] * 1e9 + elapsedArr[1]);
34+
fancyLog(`Finished`, ansiColors.cyan(name), 'after', ansiColors.green(_renderTime(elapsedNanoseconds / 1e6)));
35+
}
36+
async function _doExecute(task) {
37+
// Always invoke as if it were a callback task
38+
return new Promise((resolve, reject) => {
39+
if (task.length === 1) {
40+
// this is a calback task
41+
task((err) => {
42+
if (err) {
43+
return reject(err);
44+
}
45+
resolve();
46+
});
47+
return;
48+
}
49+
const taskResult = task();
50+
if (typeof taskResult === 'undefined') {
51+
// this is a sync task
52+
resolve();
53+
return;
54+
}
55+
if (_isPromise(taskResult)) {
56+
// this is a promise returning task
57+
taskResult.then(resolve, reject);
58+
return;
59+
}
60+
// this is a stream returning task
61+
taskResult.on('end', _ => resolve());
62+
taskResult.on('error', err => reject(err));
63+
});
64+
}
65+
function series(...tasks) {
66+
return async () => {
67+
for (let i = 0; i < tasks.length; i++) {
68+
await _execute(tasks[i]);
69+
}
70+
};
71+
}
72+
exports.series = series;
73+
function parallel(...tasks) {
74+
return async () => {
75+
await Promise.all(tasks.map(t => _execute(t)));
76+
};
77+
}
78+
exports.parallel = parallel;

0 commit comments

Comments
 (0)