Skip to content

Commit b4add9f

Browse files
committed
remove gulp sequence
1 parent c3aaa7e commit b4add9f

3 files changed

Lines changed: 38 additions & 81 deletions

File tree

build/gulpfile.extensions.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -153,10 +153,11 @@ gulp.task(compileExtensionsBuildLegacyTask);
153153
// Azure Pipelines
154154

155155
const cleanExtensionsBuildTask = task.define('clean-extensions-build', util.rimraf('.build/extensions'));
156-
const compileExtensionsBuildTask = task.define('compile-extensions-build', task.series(cleanExtensionsBuildTask, () => {
157-
return ext.packageExtensionsStream()
158-
.pipe(gulp.dest('.build'));
159-
}));
156+
const compileExtensionsBuildTask = task.define('compile-extensions-build', task.series(
157+
cleanExtensionsBuildTask,
158+
task.define('bundle-extensions-build', () => ext.packageLocalExtensionsStream().pipe(gulp.dest('.build'))),
159+
task.define('bundle-marketplace-extensions-build', () => ext.packageMarketplaceExtensionsStream().pipe(gulp.dest('.build'))),
160+
));
160161

161162
gulp.task(compileExtensionsBuildTask);
162163
exports.compileExtensionsBuildTask = compileExtensionsBuildTask;

build/lib/extensions.js

Lines changed: 15 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ function fromLocalWebpack(extensionPath) {
8181
return data;
8282
}))
8383
.pipe(packageJsonFilter.restore);
84-
const webpackStreams = webpackConfigLocations.map(webpackConfigPath => () => {
84+
const webpackStreams = webpackConfigLocations.map(webpackConfigPath => {
8585
const webpackDone = (err, stats) => {
8686
fancyLog(`Bundled extension: ${ansiColors.yellow(path.join(path.basename(extensionPath), path.relative(extensionPath, webpackConfigPath)))}...`);
8787
if (err) {
@@ -120,7 +120,7 @@ function fromLocalWebpack(extensionPath) {
120120
this.emit('data', data);
121121
}));
122122
});
123-
es.merge(sequence(webpackStreams), patchFilesStream)
123+
es.merge(...webpackStreams, patchFilesStream)
124124
// .pipe(es.through(function (data) {
125125
// // debug
126126
// console.log('out', data.path, data.contents.length);
@@ -186,29 +186,7 @@ const excludedExtensions = [
186186
'ms-vscode.node-debug2',
187187
];
188188
const builtInExtensions = require('../builtInExtensions.json');
189-
/**
190-
* We're doing way too much stuff at once, with webpack et al. So much stuff
191-
* that while downloading extensions from the marketplace, node js doesn't get enough
192-
* stack frames to complete the download in under 2 minutes, at which point the
193-
* marketplace server cuts off the http request. So, we sequentialize the extensino tasks.
194-
*/
195-
function sequence(streamProviders) {
196-
const result = es.through();
197-
function pop() {
198-
if (streamProviders.length === 0) {
199-
result.emit('end');
200-
}
201-
else {
202-
const fn = streamProviders.shift();
203-
fn()
204-
.on('end', function () { setTimeout(pop, 0); })
205-
.pipe(result, { end: false });
206-
}
207-
}
208-
pop();
209-
return result;
210-
}
211-
function packageExtensionsStream() {
189+
function packageLocalExtensionsStream() {
212190
const localExtensionDescriptions = glob.sync('extensions/*/package.json')
213191
.map(manifestPath => {
214192
const extensionPath = path.dirname(path.join(root, manifestPath));
@@ -217,18 +195,20 @@ function packageExtensionsStream() {
217195
})
218196
.filter(({ name }) => excludedExtensions.indexOf(name) === -1)
219197
.filter(({ name }) => builtInExtensions.every(b => b.name !== name));
220-
const localExtensions = () => sequence([...localExtensionDescriptions.map(extension => () => {
221-
return fromLocal(extension.path)
222-
.pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
223-
})]);
224-
const localExtensionDependencies = () => gulp.src('extensions/node_modules/**', { base: '.' });
225-
const marketplaceExtensions = () => es.merge(...builtInExtensions
226-
.map(extension => {
198+
return es.merge(gulp.src('extensions/node_modules/**', { base: '.' }), ...localExtensionDescriptions.map(extension => {
199+
return fromLocal(extension.path)
200+
.pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
201+
}))
202+
.pipe(util2.setExecutableBit(['**/*.sh']))
203+
.pipe(filter(['**', '!**/*.js.map']));
204+
}
205+
exports.packageLocalExtensionsStream = packageLocalExtensionsStream;
206+
function packageMarketplaceExtensionsStream() {
207+
return es.merge(builtInExtensions.map(extension => {
227208
return fromMarketplace(extension.name, extension.version, extension.metadata)
228209
.pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
229-
}));
230-
return sequence([localExtensions, localExtensionDependencies, marketplaceExtensions])
210+
}))
231211
.pipe(util2.setExecutableBit(['**/*.sh']))
232212
.pipe(filter(['**', '!**/*.js.map']));
233213
}
234-
exports.packageExtensionsStream = packageExtensionsStream;
214+
exports.packageMarketplaceExtensionsStream = packageMarketplaceExtensionsStream;

build/lib/extensions.ts

Lines changed: 18 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ function fromLocalWebpack(extensionPath: string): Stream {
9393
.pipe(packageJsonFilter.restore);
9494

9595

96-
const webpackStreams = webpackConfigLocations.map(webpackConfigPath => () => {
96+
const webpackStreams = webpackConfigLocations.map(webpackConfigPath => {
9797

9898
const webpackDone = (err: any, stats: any) => {
9999
fancyLog(`Bundled extension: ${ansiColors.yellow(path.join(path.basename(extensionPath), path.relative(extensionPath, webpackConfigPath)))}...`);
@@ -140,7 +140,7 @@ function fromLocalWebpack(extensionPath: string): Stream {
140140
}));
141141
});
142142

143-
es.merge(sequence(webpackStreams), patchFilesStream)
143+
es.merge(...webpackStreams, patchFilesStream)
144144
// .pipe(es.through(function (data) {
145145
// // debug
146146
// console.log('out', data.path, data.contents.length);
@@ -227,31 +227,7 @@ interface IBuiltInExtension {
227227

228228
const builtInExtensions: IBuiltInExtension[] = require('../builtInExtensions.json');
229229

230-
/**
231-
* We're doing way too much stuff at once, with webpack et al. So much stuff
232-
* that while downloading extensions from the marketplace, node js doesn't get enough
233-
* stack frames to complete the download in under 2 minutes, at which point the
234-
* marketplace server cuts off the http request. So, we sequentialize the extensino tasks.
235-
*/
236-
function sequence(streamProviders: { (): Stream }[]): Stream {
237-
const result = es.through();
238-
239-
function pop() {
240-
if (streamProviders.length === 0) {
241-
result.emit('end');
242-
} else {
243-
const fn = streamProviders.shift()!;
244-
fn()
245-
.on('end', function () { setTimeout(pop, 0); })
246-
.pipe(result, { end: false });
247-
}
248-
}
249-
250-
pop();
251-
return result;
252-
}
253-
254-
export function packageExtensionsStream(): NodeJS.ReadWriteStream {
230+
export function packageLocalExtensionsStream(): NodeJS.ReadWriteStream {
255231
const localExtensionDescriptions = (<string[]>glob.sync('extensions/*/package.json'))
256232
.map(manifestPath => {
257233
const extensionPath = path.dirname(path.join(root, manifestPath));
@@ -261,22 +237,22 @@ export function packageExtensionsStream(): NodeJS.ReadWriteStream {
261237
.filter(({ name }) => excludedExtensions.indexOf(name) === -1)
262238
.filter(({ name }) => builtInExtensions.every(b => b.name !== name));
263239

264-
const localExtensions = () => sequence([...localExtensionDescriptions.map(extension => () => {
265-
return fromLocal(extension.path)
266-
.pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
267-
})]);
268-
269-
const localExtensionDependencies = () => gulp.src('extensions/node_modules/**', { base: '.' });
270-
271-
const marketplaceExtensions = () => es.merge(
272-
...builtInExtensions
273-
.map(extension => {
274-
return fromMarketplace(extension.name, extension.version, extension.metadata)
275-
.pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
276-
})
277-
);
240+
return es.merge(
241+
gulp.src('extensions/node_modules/**', { base: '.' }),
242+
...localExtensionDescriptions.map(extension => {
243+
return fromLocal(extension.path)
244+
.pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
245+
})
246+
)
247+
.pipe(util2.setExecutableBit(['**/*.sh']))
248+
.pipe(filter(['**', '!**/*.js.map']));
249+
}
278250

279-
return sequence([localExtensions, localExtensionDependencies, marketplaceExtensions])
251+
export function packageMarketplaceExtensionsStream(): NodeJS.ReadWriteStream {
252+
return es.merge(builtInExtensions.map(extension => {
253+
return fromMarketplace(extension.name, extension.version, extension.metadata)
254+
.pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
255+
}))
280256
.pipe(util2.setExecutableBit(['**/*.sh']))
281257
.pipe(filter(['**', '!**/*.js.map']));
282258
}

0 commit comments

Comments
 (0)