eae5d8c807
These conflicts will be resolved in the following commits. We do it this way so that PR review is possible.
59 lines
3.0 KiB
JavaScript
59 lines
3.0 KiB
JavaScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
'use strict';
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
const json = require("gulp-json-editor");
|
|
const buffer = require('gulp-buffer');
|
|
const filter = require("gulp-filter");
|
|
const es = require("event-stream");
|
|
const vfs = require("vinyl-fs");
|
|
const fancyLog = require("fancy-log");
|
|
const ansiColors = require("ansi-colors");
|
|
const fs = require("fs");
|
|
const path = require("path");
|
|
function main() {
|
|
const quality = process.env['VSCODE_QUALITY'];
|
|
if (!quality) {
|
|
console.log('Missing VSCODE_QUALITY, skipping mixin');
|
|
return;
|
|
}
|
|
const productJsonFilter = filter(f => f.relative === 'product.json', { restore: true });
|
|
fancyLog(ansiColors.blue('[mixin]'), `Mixing in sources:`);
|
|
return vfs
|
|
.src(`quality/${quality}/**`, { base: `quality/${quality}` })
|
|
.pipe(filter(f => !f.isDirectory()))
|
|
.pipe(productJsonFilter)
|
|
.pipe(buffer())
|
|
.pipe(json((o) => {
|
|
const ossProduct = JSON.parse(fs.readFileSync(path.join(__dirname, '..', '..', 'product.json'), 'utf8'));
|
|
let builtInExtensions = ossProduct.builtInExtensions;
|
|
if (Array.isArray(o.builtInExtensions)) {
|
|
fancyLog(ansiColors.blue('[mixin]'), 'Overwriting built-in extensions:', o.builtInExtensions.map(e => e.name));
|
|
builtInExtensions = o.builtInExtensions;
|
|
}
|
|
else if (o.builtInExtensions) {
|
|
const include = o.builtInExtensions['include'] || [];
|
|
const exclude = o.builtInExtensions['exclude'] || [];
|
|
fancyLog(ansiColors.blue('[mixin]'), 'OSS built-in extensions:', builtInExtensions.map(e => e.name));
|
|
fancyLog(ansiColors.blue('[mixin]'), 'Including built-in extensions:', include.map(e => e.name));
|
|
fancyLog(ansiColors.blue('[mixin]'), 'Excluding built-in extensions:', exclude);
|
|
builtInExtensions = builtInExtensions.filter(ext => !include.find(e => e.name === ext.name) && !exclude.find(name => name === ext.name));
|
|
builtInExtensions = [...builtInExtensions, ...include];
|
|
fancyLog(ansiColors.blue('[mixin]'), 'Final built-in extensions:', builtInExtensions.map(e => e.name));
|
|
}
|
|
else {
|
|
fancyLog(ansiColors.blue('[mixin]'), 'Inheriting OSS built-in extensions', builtInExtensions.map(e => e.name));
|
|
}
|
|
return Object.assign(Object.assign({ webBuiltInExtensions: ossProduct.webBuiltInExtensions }, o), { builtInExtensions });
|
|
}))
|
|
.pipe(productJsonFilter.restore)
|
|
.pipe(es.mapSync(function (f) {
|
|
fancyLog(ansiColors.blue('[mixin]'), f.relative, ansiColors.green('✔︎'));
|
|
return f;
|
|
}))
|
|
.pipe(vfs.dest('.'));
|
|
}
|
|
main();
|