Skip to content

Commit a2c9dfa

Browse files
committed
extract mixin task to build/gulpfile.mixin.js
1 parent 9f0f868 commit a2c9dfa

2 files changed

Lines changed: 74 additions & 65 deletions

File tree

build/gulpfile.mixin.js

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
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+
6+
'use strict';
7+
8+
const gulp = require('gulp');
9+
const json = require('gulp-json-editor');
10+
const buffer = require('gulp-buffer');
11+
const filter = require('gulp-filter');
12+
const es = require('event-stream');
13+
const util = require('./lib/util');
14+
const remote = require('gulp-remote-src');
15+
const zip = require('gulp-vinyl-zip');
16+
const assign = require('object-assign');
17+
const pkg = require('../package.json');
18+
19+
gulp.task('mixin', function () {
20+
const repo = process.env['VSCODE_MIXIN_REPO'];
21+
22+
if (!repo) {
23+
console.log('Missing VSCODE_MIXIN_REPO, skipping mixin');
24+
return;
25+
}
26+
27+
const quality = process.env['VSCODE_QUALITY'];
28+
29+
if (!quality) {
30+
console.log('Missing VSCODE_QUALITY, skipping mixin');
31+
return;
32+
}
33+
34+
const url = `https://github.com/${ repo }/archive/${ pkg.distro }.zip`;
35+
const opts = { base: '' };
36+
const username = process.env['VSCODE_MIXIN_USERNAME'];
37+
const password = process.env['VSCODE_MIXIN_PASSWORD'];
38+
39+
if (username || password) {
40+
opts.auth = { user: username || '', pass: password || '' };
41+
}
42+
43+
console.log('Mixing in sources from \'' + url + '\':');
44+
45+
let all = remote(url, opts)
46+
.pipe(zip.src())
47+
.pipe(filter(function (f) { return !f.isDirectory(); }))
48+
.pipe(util.rebase(1));
49+
50+
if (quality) {
51+
const build = all.pipe(filter('build/**'));
52+
const productJsonFilter = filter('product.json', { restore: true });
53+
54+
const mixin = all
55+
.pipe(filter('quality/' + quality + '/**'))
56+
.pipe(util.rebase(2))
57+
.pipe(productJsonFilter)
58+
.pipe(buffer())
59+
.pipe(json(function (patch) {
60+
const original = require('../product.json');
61+
return assign(original, patch);
62+
}))
63+
.pipe(productJsonFilter.restore);
64+
65+
all = es.merge(build, mixin);
66+
}
67+
68+
return all
69+
.pipe(es.mapSync(function (f) {
70+
console.log(f.relative);
71+
return f;
72+
}))
73+
.pipe(gulp.dest('.'));
74+
});

gulpfile.js

Lines changed: 0 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,10 @@
99
require('events').EventEmitter.defaultMaxListeners = 100;
1010

1111
const gulp = require('gulp');
12-
const json = require('gulp-json-editor');
13-
const buffer = require('gulp-buffer');
14-
const filter = require('gulp-filter');
1512
const mocha = require('gulp-mocha');
16-
const es = require('event-stream');
1713
const util = require('./build/lib/util');
18-
const remote = require('gulp-remote-src');
19-
const zip = require('gulp-vinyl-zip');
2014
const path = require('path');
21-
const assign = require('object-assign');
2215
const glob = require('glob');
23-
const pkg = require('./package.json');
2416
const compilation = require('./build/lib/compilation');
2517

2618
// Fast compile for development time
@@ -52,63 +44,6 @@ gulp.task('test', function () {
5244
.once('end', function () { process.exit(); });
5345
});
5446

55-
gulp.task('mixin', function () {
56-
const repo = process.env['VSCODE_MIXIN_REPO'];
57-
58-
if (!repo) {
59-
console.log('Missing VSCODE_MIXIN_REPO, skipping mixin');
60-
return;
61-
}
62-
63-
const quality = process.env['VSCODE_QUALITY'];
64-
65-
if (!quality) {
66-
console.log('Missing VSCODE_QUALITY, skipping mixin');
67-
return;
68-
}
69-
70-
const url = `https://github.com/${ repo }/archive/${ pkg.distro }.zip`;
71-
const opts = { base: '' };
72-
const username = process.env['VSCODE_MIXIN_USERNAME'];
73-
const password = process.env['VSCODE_MIXIN_PASSWORD'];
74-
75-
if (username || password) {
76-
opts.auth = { user: username || '', pass: password || '' };
77-
}
78-
79-
console.log('Mixing in sources from \'' + url + '\':');
80-
81-
let all = remote(url, opts)
82-
.pipe(zip.src())
83-
.pipe(filter(function (f) { return !f.isDirectory(); }))
84-
.pipe(util.rebase(1));
85-
86-
if (quality) {
87-
const build = all.pipe(filter('build/**'));
88-
const productJsonFilter = filter('product.json', { restore: true });
89-
90-
const mixin = all
91-
.pipe(filter('quality/' + quality + '/**'))
92-
.pipe(util.rebase(2))
93-
.pipe(productJsonFilter)
94-
.pipe(buffer())
95-
.pipe(json(function (patch) {
96-
const original = require('./product.json');
97-
return assign(original, patch);
98-
}))
99-
.pipe(productJsonFilter.restore);
100-
101-
all = es.merge(build, mixin);
102-
}
103-
104-
return all
105-
.pipe(es.mapSync(function (f) {
106-
console.log(f.relative);
107-
return f;
108-
}))
109-
.pipe(gulp.dest('.'));
110-
});
111-
11247
var ALL_EDITOR_TASKS = [
11348
'clean-optimized-editor',
11449
'optimize-editor',

0 commit comments

Comments
 (0)