/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ 'use strict'; const gulp = require('gulp'); 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'); gulp.task('mixin', function () { const quality = process.env['VSCODE_QUALITY']; if (!quality) { console.log('Missing VSCODE_QUALITY, skipping mixin'); return; } const productJsonFilter = filter('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 => Object.assign({}, require('../product.json'), o))) .pipe(productJsonFilter.restore) .pipe(es.mapSync(function (f) { fancyLog(ansiColors.blue('[mixin]'), f.relative, ansiColors.green('✔︎')); return f; })) .pipe(gulp.dest('.')); });