From a2c9dfa94d5632dfa8d4134f09fdb482f7d8c966 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Thu, 20 Oct 2016 15:13:58 +0200 Subject: [PATCH] extract mixin task to build/gulpfile.mixin.js --- build/gulpfile.mixin.js | 74 +++++++++++++++++++++++++++++++++++++++++ gulpfile.js | 65 ------------------------------------ 2 files changed, 74 insertions(+), 65 deletions(-) create mode 100644 build/gulpfile.mixin.js diff --git a/build/gulpfile.mixin.js b/build/gulpfile.mixin.js new file mode 100644 index 00000000000..a3d2391938d --- /dev/null +++ b/build/gulpfile.mixin.js @@ -0,0 +1,74 @@ +/*--------------------------------------------------------------------------------------------- + * 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 util = require('./lib/util'); +const remote = require('gulp-remote-src'); +const zip = require('gulp-vinyl-zip'); +const assign = require('object-assign'); +const pkg = require('../package.json'); + +gulp.task('mixin', function () { + const repo = process.env['VSCODE_MIXIN_REPO']; + + if (!repo) { + console.log('Missing VSCODE_MIXIN_REPO, skipping mixin'); + return; + } + + const quality = process.env['VSCODE_QUALITY']; + + if (!quality) { + console.log('Missing VSCODE_QUALITY, skipping mixin'); + return; + } + + const url = `https://github.com/${ repo }/archive/${ pkg.distro }.zip`; + const opts = { base: '' }; + const username = process.env['VSCODE_MIXIN_USERNAME']; + const password = process.env['VSCODE_MIXIN_PASSWORD']; + + if (username || password) { + opts.auth = { user: username || '', pass: password || '' }; + } + + console.log('Mixing in sources from \'' + url + '\':'); + + let all = remote(url, opts) + .pipe(zip.src()) + .pipe(filter(function (f) { return !f.isDirectory(); })) + .pipe(util.rebase(1)); + + if (quality) { + const build = all.pipe(filter('build/**')); + const productJsonFilter = filter('product.json', { restore: true }); + + const mixin = all + .pipe(filter('quality/' + quality + '/**')) + .pipe(util.rebase(2)) + .pipe(productJsonFilter) + .pipe(buffer()) + .pipe(json(function (patch) { + const original = require('../product.json'); + return assign(original, patch); + })) + .pipe(productJsonFilter.restore); + + all = es.merge(build, mixin); + } + + return all + .pipe(es.mapSync(function (f) { + console.log(f.relative); + return f; + })) + .pipe(gulp.dest('.')); +}); diff --git a/gulpfile.js b/gulpfile.js index 813c9ec47bd..54413c7ec9e 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -9,18 +9,10 @@ require('events').EventEmitter.defaultMaxListeners = 100; const gulp = require('gulp'); -const json = require('gulp-json-editor'); -const buffer = require('gulp-buffer'); -const filter = require('gulp-filter'); const mocha = require('gulp-mocha'); -const es = require('event-stream'); const util = require('./build/lib/util'); -const remote = require('gulp-remote-src'); -const zip = require('gulp-vinyl-zip'); const path = require('path'); -const assign = require('object-assign'); const glob = require('glob'); -const pkg = require('./package.json'); const compilation = require('./build/lib/compilation'); // Fast compile for development time @@ -52,63 +44,6 @@ gulp.task('test', function () { .once('end', function () { process.exit(); }); }); -gulp.task('mixin', function () { - const repo = process.env['VSCODE_MIXIN_REPO']; - - if (!repo) { - console.log('Missing VSCODE_MIXIN_REPO, skipping mixin'); - return; - } - - const quality = process.env['VSCODE_QUALITY']; - - if (!quality) { - console.log('Missing VSCODE_QUALITY, skipping mixin'); - return; - } - - const url = `https://github.com/${ repo }/archive/${ pkg.distro }.zip`; - const opts = { base: '' }; - const username = process.env['VSCODE_MIXIN_USERNAME']; - const password = process.env['VSCODE_MIXIN_PASSWORD']; - - if (username || password) { - opts.auth = { user: username || '', pass: password || '' }; - } - - console.log('Mixing in sources from \'' + url + '\':'); - - let all = remote(url, opts) - .pipe(zip.src()) - .pipe(filter(function (f) { return !f.isDirectory(); })) - .pipe(util.rebase(1)); - - if (quality) { - const build = all.pipe(filter('build/**')); - const productJsonFilter = filter('product.json', { restore: true }); - - const mixin = all - .pipe(filter('quality/' + quality + '/**')) - .pipe(util.rebase(2)) - .pipe(productJsonFilter) - .pipe(buffer()) - .pipe(json(function (patch) { - const original = require('./product.json'); - return assign(original, patch); - })) - .pipe(productJsonFilter.restore); - - all = es.merge(build, mixin); - } - - return all - .pipe(es.mapSync(function (f) { - console.log(f.relative); - return f; - })) - .pipe(gulp.dest('.')); -}); - var ALL_EDITOR_TASKS = [ 'clean-optimized-editor', 'optimize-editor',