From 407259bdb0aecfae4867720f6ca710b7af92cf49 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 20 Jul 2016 10:52:46 +0200 Subject: [PATCH] es6ify gulpfile.vscode.js --- build/gulpfile.vscode.js | 215 ++++++++++++++++++--------------------- 1 file changed, 99 insertions(+), 116 deletions(-) diff --git a/build/gulpfile.vscode.js b/build/gulpfile.vscode.js index 11e731a0d74..b8bfb10815e 100644 --- a/build/gulpfile.vscode.js +++ b/build/gulpfile.vscode.js @@ -3,38 +3,40 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -var gulp = require('gulp'); -var fs = require('fs'); -var path = require('path'); -var es = require('event-stream'); -var azure = require('gulp-azure-storage'); -var electron = require('gulp-atom-electron'); -var symdest = require('gulp-symdest'); -var rename = require('gulp-rename'); -var replace = require('gulp-replace'); -var filter = require('gulp-filter'); -var json = require('gulp-json-editor'); -var remote = require('gulp-remote-src'); -var shell = require("gulp-shell"); -var _ = require('underscore'); -var packageJson = require('../package.json'); -var shrinkwrap = require('../npm-shrinkwrap.json'); -var util = require('./lib/util'); -var buildfile = require('../src/buildfile'); -var common = require('./gulpfile.common'); -var nlsDev = require('vscode-nls-dev'); -var root = path.dirname(__dirname); -var build = path.join(root, '.build'); -var commit = util.getVersion(root); - -var dependencies = Object.keys(shrinkwrap.dependencies); -var baseModules = Object.keys(process.binding('natives')).filter(function (n) { return !/^_|\//.test(n); }); -var nodeModules = ['electron'].concat(dependencies).concat(baseModules); -nodeModules.push('original-fs'); // provided by electron to have original fs functionality without ASAR support +'use strict'; + +const gulp = require('gulp'); +const fs = require('fs'); +const path = require('path'); +const es = require('event-stream'); +const azure = require('gulp-azure-storage'); +const electron = require('gulp-atom-electron'); +const symdest = require('gulp-symdest'); +const rename = require('gulp-rename'); +const replace = require('gulp-replace'); +const filter = require('gulp-filter'); +const json = require('gulp-json-editor'); +const shell = require("gulp-shell"); +const _ = require('underscore'); +const packageJson = require('../package.json'); +const shrinkwrap = require('../npm-shrinkwrap.json'); +const util = require('./lib/util'); +const buildfile = require('../src/buildfile'); +const common = require('./gulpfile.common'); +const nlsDev = require('vscode-nls-dev'); +const root = path.dirname(__dirname); +const build = path.join(root, '.build'); +const commit = util.getVersion(root); + +const dependencies = Object.keys(shrinkwrap.dependencies); +const baseModules = Object.keys(process.binding('natives')).filter(n => !/^_|\//.test(n)); +const nodeModules = ['electron', 'original-fs'] + .concat(dependencies) + .concat(baseModules); // Build -var vscodeEntryPoints = _.flatten([ +const vscodeEntryPoints = _.flatten([ buildfile.entrypoint('vs/workbench/workbench.main'), buildfile.base, buildfile.editor, @@ -43,7 +45,7 @@ var vscodeEntryPoints = _.flatten([ buildfile.code ]); -var vscodeResources = [ +const vscodeResources = [ 'out-build/main.js', 'out-build/cli.js', 'out-build/bootstrap.js', @@ -69,7 +71,7 @@ var vscodeResources = [ '!**/test/**' ]; -var BUNDLED_FILE_HEADER = [ +const BUNDLED_FILE_HEADER = [ '/*!--------------------------------------------------------', ' * Copyright (C) Microsoft Corporation. All rights reserved.', ' *--------------------------------------------------------*/' @@ -89,11 +91,10 @@ gulp.task('clean-minified-vscode', util.rimraf('out-vscode-min')); gulp.task('minify-vscode', ['clean-minified-vscode', 'optimize-vscode'], common.minifyTask('out-vscode', true)); // Package -var product = require('../product.json'); -var darwinCreditsTemplate = product.darwinCredits && _.template(fs.readFileSync(path.join(root, product.darwinCredits), 'utf8')); -var linuxPackageRevision = getEpochTime(); +const product = require('../product.json'); +const darwinCreditsTemplate = product.darwinCredits && _.template(fs.readFileSync(path.join(root, product.darwinCredits), 'utf8')); -var config = { +const config = { version: packageJson.electronVersion, productAppName: product.nameLong, companyName: 'Microsoft Corporation', @@ -114,52 +115,29 @@ var config = { token: process.env['GITHUB_TOKEN'] || void 0 }; -gulp.task('electron', function () { +gulp.task('electron', () => { // Force windows to use ia32 - var arch = process.env.VSCODE_ELECTRON_PLATFORM || (process.platform === 'win32' ? 'ia32' : process.arch); + const arch = process.env.VSCODE_ELECTRON_PLATFORM || (process.platform === 'win32' ? 'ia32' : process.arch); return electron.dest(path.join(build, 'electron'), _.extend({}, config, { arch: arch, ffmpegChromium: true })); }); -function mixinProduct() { - var product; - var url = process.env['PRODUCT_JSON_URL']; - - if (url) { - var opts = { base: '' }; - var username = process.env['PRODUCT_JSON_USERNAME']; - var password = process.env['PRODUCT_JSON_PASSWORD']; - - if (username || password) { - opts.auth = { username: username || '', password: password || '' }; - } - - product = remote(url, opts); - } else { - product = gulp.src(['product.json'], { base: '.' }); - } - - return product.pipe(json({ - commit: commit, - date: new Date().toISOString() - })); -} -var languages = ['chs', 'cht', 'jpn', 'kor', 'deu', 'fra', 'esn', 'rus', 'ita']; +const languages = ['chs', 'cht', 'jpn', 'kor', 'deu', 'fra', 'esn', 'rus', 'ita']; function packageTask(platform, arch, opts) { opts = opts || {}; - var destination = path.join(path.dirname(root), 'VSCode') + (platform ? '-' + platform : '') + (arch ? '-' + arch : ''); + const destination = path.join(path.dirname(root), 'VSCode') + (platform ? '-' + platform : '') + (arch ? '-' + arch : ''); platform = platform || process.platform; arch = platform === 'win32' ? 'ia32' : arch; - return function () { - var out = opts.minified ? 'out-vscode-min' : 'out-vscode'; + return () => { + const out = opts.minified ? 'out-vscode-min' : 'out-vscode'; - var src = gulp.src(out + '/**', { base: '.' }) + const src = gulp.src(out + '/**', { base: '.' }) .pipe(rename(function (path) { path.dirname = path.dirname.replace(new RegExp('^' + out), 'out'); })) .pipe(util.setExecutableBit(['**/*.sh'])); - var extensions = gulp.src([ + const extensions = gulp.src([ 'extensions/**', '!extensions/*/src/**', '!extensions/*/out/**/test/**', @@ -175,41 +153,46 @@ function packageTask(platform, arch, opts) { '!extensions/vscode-colorize-tests/**' ], { base: '.' }); - var sources = es.merge(src, extensions) + const sources = es.merge(src, extensions) .pipe(nlsDev.createAdditionalLanguageFiles(languages, path.join(__dirname, '..', 'i18n'))) .pipe(filter(['**', '!**/*.js.map'])) .pipe(util.handleAzureJson({ platform: platform })); - var version = packageJson.version; - var quality = product.quality; + let version = packageJson.version; + const quality = product.quality; if (quality && quality !== 'stable') { version += '-' + quality; } - var packageJsonStream = gulp.src(['package.json'], { base: '.' }).pipe(json({ - name: product.nameShort, - version: version - })); + const name = product.nameShort; + const packageJsonStream = gulp.src(['package.json'], { base: '.' }) + .pipe(json({ name, version })); + + const date = new Date().toISOString(); + const productJsonStream = gulp.src(['product.json'], { base: '.' }) + .pipe(json({ commit, date })); - var license = gulp.src(['Credits_*', 'LICENSE.txt', 'ThirdPartyNotices.txt', 'licenses/**'], { base: '.' }); - var api = gulp.src('src/vs/vscode.d.ts').pipe(rename('out/vs/vscode.d.ts')); + const license = gulp.src(['Credits_*', 'LICENSE.txt', 'ThirdPartyNotices.txt', 'licenses/**'], { base: '.' }); - var depsSrc = _.flatten(dependencies + // TODO the API should be copied to `out` during compile, not here + const api = gulp.src('src/vs/vscode.d.ts').pipe(rename('out/vs/vscode.d.ts')); + + const depsSrc = _.flatten(dependencies .map(function (d) { return ['node_modules/' + d + '/**', '!node_modules/' + d + '/**/{test,tests}/**']; })); - var deps = gulp.src(depsSrc, { base: '.', dot: true }) + const deps = gulp.src(depsSrc, { base: '.', dot: true }) .pipe(util.cleanNodeModule('fsevents', ['binding.gyp', 'fsevents.cc', 'build/**', 'src/**', 'test/**'], ['**/*.node'])) .pipe(util.cleanNodeModule('oniguruma', ['binding.gyp', 'build/**', 'src/**', 'deps/**'], ['**/*.node'])) .pipe(util.cleanNodeModule('windows-mutex', ['binding.gyp', 'build/**', 'src/**'], ['**/*.node'])) .pipe(util.cleanNodeModule('native-keymap', ['binding.gyp', 'build/**', 'src/**', 'deps/**'], ['**/*.node'])) .pipe(util.cleanNodeModule('pty.js', ['binding.gyp', 'build/**', 'src/**', 'deps/**'], ['build/Release/**'])); - var all = es.merge( - api, + let all = es.merge( packageJsonStream, - mixinProduct(), + productJsonStream, license, + api, sources, deps ); @@ -219,13 +202,13 @@ function packageTask(platform, arch, opts) { } else if (platform === 'linux') { all = es.merge(all, gulp.src('resources/linux/code.png', { base: '.' })); } else if (platform === 'darwin') { - var shortcut = gulp.src('resources/darwin/bin/code.sh') + const shortcut = gulp.src('resources/darwin/bin/code.sh') .pipe(rename('bin/code')); all = es.merge(all, shortcut); } - var result = all + let result = all .pipe(util.skipDirectories()) .pipe(util.fixWin32DirectoryPermissions()) .pipe(electron(_.extend({}, config, { platform: platform, arch: arch, ffmpegChromium: true }))) @@ -255,33 +238,31 @@ function getDebPackageArch(arch) { return { x64: 'amd64', ia32: 'i386' }[arch]; } -function getEpochTime() { - return Math.floor(new Date().getTime() / 1000); -} +const linuxPackageRevision = Math.floor(new Date().getTime() / 1000); function prepareDebPackage(arch) { - var binaryDir = '../VSCode-linux-' + arch; - var debArch = getDebPackageArch(arch); - var destination = '.build/linux/deb/' + debArch + '/' + product.applicationName + '-' + debArch; + const binaryDir = '../VSCode-linux-' + arch; + const debArch = getDebPackageArch(arch); + const destination = '.build/linux/deb/' + debArch + '/' + product.applicationName + '-' + debArch; return function () { - var desktop = gulp.src('resources/linux/code.desktop', { base: '.' }) + const desktop = gulp.src('resources/linux/code.desktop', { base: '.' }) .pipe(replace('@@NAME_LONG@@', product.nameLong)) .pipe(replace('@@NAME_SHORT@@', product.nameShort)) .pipe(replace('@@NAME@@', product.applicationName)) .pipe(rename('usr/share/applications/' + product.applicationName + '.desktop')); - var icon = gulp.src('resources/linux/code.png', { base: '.' }) + const icon = gulp.src('resources/linux/code.png', { base: '.' }) .pipe(rename('usr/share/pixmaps/' + product.applicationName + '.png')); - var code = gulp.src(binaryDir + '/**/*', { base: binaryDir }) + const code = gulp.src(binaryDir + '/**/*', { base: binaryDir }) .pipe(rename(function (p) { p.dirname = 'usr/share/' + product.applicationName + '/' + p.dirname; })); - var size = 0; - var control = code.pipe(es.through( + let size = 0; + const control = code.pipe(es.through( function (f) { size += f.isDirectory() ? 4096 : f.contents.length; }, function () { - var that = this; + const that = this; gulp.src('resources/linux/debian/control.template', { base: '.' }) .pipe(replace('@@NAME@@', product.applicationName)) .pipe(replace('@@VERSION@@', packageJson.version + '-' + linuxPackageRevision)) @@ -291,29 +272,29 @@ function prepareDebPackage(arch) { .pipe(es.through(function (f) { that.emit('data', f); }, function () { that.emit('end'); })); })); - var prerm = gulp.src('resources/linux/debian/prerm.template', { base: '.' }) + const prerm = gulp.src('resources/linux/debian/prerm.template', { base: '.' }) .pipe(replace('@@NAME@@', product.applicationName)) .pipe(rename('DEBIAN/prerm')) - var postrm = gulp.src('resources/linux/debian/postrm.template', { base: '.' }) + const postrm = gulp.src('resources/linux/debian/postrm.template', { base: '.' }) .pipe(replace('@@NAME@@', product.applicationName)) .pipe(rename('DEBIAN/postrm')) - var postinst = gulp.src('resources/linux/debian/postinst.template', { base: '.' }) + const postinst = gulp.src('resources/linux/debian/postinst.template', { base: '.' }) .pipe(replace('@@NAME@@', product.applicationName)) .pipe(replace('@@ARCHITECTURE@@', debArch)) .pipe(replace('@@QUALITY@@', product.quality || '@@QUALITY@@')) .pipe(replace('@@UPDATEURL@@', product.updateUrl || '@@UPDATEURL@@')) .pipe(rename('DEBIAN/postinst')) - var all = es.merge(control, postinst, postrm, prerm, desktop, icon, code); + const all = es.merge(control, postinst, postrm, prerm, desktop, icon, code); return all.pipe(symdest(destination)); }; } function buildDebPackage(arch) { - var debArch = getDebPackageArch(arch); + const debArch = getDebPackageArch(arch); return shell.task([ 'chmod 755 ' + product.applicationName + '-' + debArch + '/DEBIAN/postinst ' + product.applicationName + '-' + debArch + '/DEBIAN/prerm', 'mkdir -p deb', @@ -331,23 +312,23 @@ function getRpmPackageArch(arch) { } function prepareRpmPackage(arch) { - var binaryDir = '../VSCode-linux-' + arch; - var rpmArch = getRpmPackageArch(arch); + const binaryDir = '../VSCode-linux-' + arch; + const rpmArch = getRpmPackageArch(arch); return function () { - var desktop = gulp.src('resources/linux/code.desktop', { base: '.' }) + const desktop = gulp.src('resources/linux/code.desktop', { base: '.' }) .pipe(replace('@@NAME_LONG@@', product.nameLong)) .pipe(replace('@@NAME_SHORT@@', product.nameShort)) .pipe(replace('@@NAME@@', product.applicationName)) .pipe(rename('BUILD/usr/share/applications/' + product.applicationName + '.desktop')); - var icon = gulp.src('resources/linux/code.png', { base: '.' }) + const icon = gulp.src('resources/linux/code.png', { base: '.' }) .pipe(rename('BUILD/usr/share/pixmaps/' + product.applicationName + '.png')); - var code = gulp.src(binaryDir + '/**/*', { base: binaryDir }) + const code = gulp.src(binaryDir + '/**/*', { base: binaryDir }) .pipe(rename(function (p) { p.dirname = 'BUILD/usr/share/' + product.applicationName + '/' + p.dirname; })); - var spec = gulp.src('resources/linux/rpm/code.spec.template', { base: '.' }) + const spec = gulp.src('resources/linux/rpm/code.spec.template', { base: '.' }) .pipe(replace('@@NAME@@', product.applicationName)) .pipe(replace('@@NAME_LONG@@', product.nameLong)) .pipe(replace('@@VERSION@@', packageJson.version)) @@ -357,20 +338,20 @@ function prepareRpmPackage(arch) { .pipe(replace('@@UPDATEURL@@', product.updateUrl || '@@UPDATEURL@@')) .pipe(rename('SPECS/' + product.applicationName + '.spec')); - var specIcon = gulp.src('resources/linux/rpm/code.xpm', { base: '.' }) + const specIcon = gulp.src('resources/linux/rpm/code.xpm', { base: '.' }) .pipe(rename('SOURCES/' + product.applicationName + '.xpm')); - var all = es.merge(code, desktop, icon, spec, specIcon); + const all = es.merge(code, desktop, icon, spec, specIcon); return all.pipe(symdest(getRpmBuildPath(rpmArch))); } } function buildRpmPackage(arch) { - var rpmArch = getRpmPackageArch(arch); - var rpmBuildPath = getRpmBuildPath(rpmArch); - var rpmOut = rpmBuildPath + '/RPMS/' + rpmArch; - var destination = '.build/linux/rpm/' + rpmArch; + const rpmArch = getRpmPackageArch(arch); + const rpmBuildPath = getRpmBuildPath(rpmArch); + const rpmOut = rpmBuildPath + '/RPMS/' + rpmArch; + const destination = '.build/linux/rpm/' + rpmArch; return shell.task([ 'mkdir -p ' + destination, 'HOME="$(pwd)/' + destination + '" fakeroot rpmbuild -bb ' + rpmBuildPath + '/SPECS/' + product.applicationName + '.spec --target=' + rpmArch, @@ -379,11 +360,13 @@ function buildRpmPackage(arch) { ]); } -gulp.task('clean-vscode-win32', util.rimraf(path.join(path.dirname(root), 'VSCode-win32'))); -gulp.task('clean-vscode-darwin', util.rimraf(path.join(path.dirname(root), 'VSCode-darwin'))); -gulp.task('clean-vscode-linux-ia32', util.rimraf(path.join(path.dirname(root), 'VSCode-linux-ia32'))); -gulp.task('clean-vscode-linux-x64', util.rimraf(path.join(path.dirname(root), 'VSCode-linux-x64'))); -gulp.task('clean-vscode-linux-arm', util.rimraf(path.join(path.dirname(root), 'VSCode-linux-arm'))); +const buildRoot = path.dirname(root); + +gulp.task('clean-vscode-win32', util.rimraf(path.join(buildRoot, 'VSCode-win32'))); +gulp.task('clean-vscode-darwin', util.rimraf(path.join(buildRoot, 'VSCode-darwin'))); +gulp.task('clean-vscode-linux-ia32', util.rimraf(path.join(buildRoot, 'VSCode-linux-ia32'))); +gulp.task('clean-vscode-linux-x64', util.rimraf(path.join(buildRoot, 'VSCode-linux-x64'))); +gulp.task('clean-vscode-linux-arm', util.rimraf(path.join(buildRoot, 'VSCode-linux-arm'))); gulp.task('clean-vscode-linux-ia32-deb', util.rimraf('.build/linux/deb/i386')); gulp.task('clean-vscode-linux-x64-deb', util.rimraf('.build/linux/deb/amd64')); gulp.task('clean-vscode-linux-ia32-rpm', util.rimraf('.build/linux/rpm/i386')); -- GitLab