From 7d38cdcb515358a3706f4115ea21cb3effcab679 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Fri, 8 Feb 2019 15:55:19 +0100 Subject: [PATCH] Render more task names --- build/gulpfile.extensions.js | 14 ++++++++---- build/lib/compilation.js | 8 +++++-- build/lib/compilation.ts | 8 +++++-- build/lib/util.js | 41 ++++++++++++++++++++------------- build/lib/util.ts | 44 ++++++++++++++++++++++-------------- 5 files changed, 73 insertions(+), 42 deletions(-) diff --git a/build/gulpfile.extensions.js b/build/gulpfile.extensions.js index 3a780a22e8d..a7a47522152 100644 --- a/build/gulpfile.extensions.js +++ b/build/gulpfile.extensions.js @@ -100,18 +100,20 @@ const tasks = compilations.map(function (tsconfigFile) { const srcOpts = { cwd: path.dirname(__dirname), base: srcBase }; - const cleanTask = () => util.primraf(out); + const cleanTask = util.rimraf(out); - const compileTask = util.task.series(cleanTask, () => { + const compileTask_ = () => { const pipeline = createPipeline(false, true); const input = gulp.src(src, srcOpts); return input .pipe(pipeline()) .pipe(gulp.dest(out)); - }); + }; + compileTask_.displayName = `compile-extension-${name}`; + const compileTask = util.task.series(cleanTask, compileTask_); - const watchTask = util.task.series(cleanTask, () => { + const watchTask_ = () => { const pipeline = createPipeline(false); const input = gulp.src(src, srcOpts); const watchInput = watcher(src, srcOpts); @@ -119,7 +121,9 @@ const tasks = compilations.map(function (tsconfigFile) { return watchInput .pipe(util.incremental(pipeline, input)) .pipe(gulp.dest(out)); - }); + }; + watchTask_.displayName = `watch-extension-${name}`; + const watchTask = util.task.series(cleanTask, watchTask_); const compileBuildTask = util.task.series(cleanTask, () => { const pipeline = createPipeline(true, true); diff --git a/build/lib/compilation.js b/build/lib/compilation.js index 592a5d087ce..4f183bc512d 100644 --- a/build/lib/compilation.js +++ b/build/lib/compilation.js @@ -78,7 +78,7 @@ const typesDts = [ '!node_modules/@types/uglify-js/**/*', ]; function compileTask(src, out, build) { - return function () { + const result = function () { const compile = createCompile(src, build, true); const srcPipe = es.merge(gulp.src(`${src}/**`, { base: `${src}` }), gulp.src(typesDts)); let generator = new MonacoGenerator(false); @@ -90,10 +90,12 @@ function compileTask(src, out, build) { .pipe(compile()) .pipe(gulp.dest(out)); }; + result.displayName = `compile-task-${out}${build ? '-build' : ''}`; + return result; } exports.compileTask = compileTask; function watchTask(out, build) { - return function () { + const result = function () { const compile = createCompile('src', build); const src = es.merge(gulp.src('src/**', { base: 'src' }), gulp.src(typesDts)); const watchSrc = watch('src/**', { base: 'src' }); @@ -104,6 +106,8 @@ function watchTask(out, build) { .pipe(util.incremental(compile, src, true)) .pipe(gulp.dest(out)); }; + result.displayName = `watch-task-${out}${build ? '-build' : ''}`; + return result; } exports.watchTask = watchTask; const REPO_SRC_FOLDER = path.join(__dirname, '../../src'); diff --git a/build/lib/compilation.ts b/build/lib/compilation.ts index b431a134f6c..60f65ebe381 100644 --- a/build/lib/compilation.ts +++ b/build/lib/compilation.ts @@ -90,7 +90,7 @@ const typesDts = [ export function compileTask(src: string, out: string, build: boolean): () => NodeJS.ReadWriteStream { - return function () { + const result = function () { const compile = createCompile(src, build, true); const srcPipe = es.merge( @@ -108,11 +108,13 @@ export function compileTask(src: string, out: string, build: boolean): () => Nod .pipe(compile()) .pipe(gulp.dest(out)); }; + result.displayName = `compile-task-${out}${build ? '-build' : ''}`; + return result; } export function watchTask(out: string, build: boolean): () => NodeJS.ReadWriteStream { - return function () { + const result = function () { const compile = createCompile('src', build); const src = es.merge( @@ -129,6 +131,8 @@ export function watchTask(out: string, build: boolean): () => NodeJS.ReadWriteSt .pipe(util.incremental(compile, src, true)) .pipe(gulp.dest(out)); }; + result.displayName = `watch-task-${out}${build ? '-build' : ''}`; + return result; } const REPO_SRC_FOLDER = path.join(__dirname, '../../src'); diff --git a/build/lib/util.js b/build/lib/util.js index b6228ad4cf9..10d4493e78b 100644 --- a/build/lib/util.js +++ b/build/lib/util.js @@ -14,6 +14,8 @@ const fs = require("fs"); const _rimraf = require("rimraf"); const git = require("./git"); const VinylFile = require("vinyl"); +const fancyLog = require("fancy-log"); +const ansiColors = require("ansi-colors"); const NoCancellationToken = { isCancellationRequested: () => false }; function incremental(streamProvider, initial, supportsCancellation) { const input = es.through(); @@ -180,24 +182,10 @@ function rimraf(dir) { return cb(err); }); }; - return cb => retry(cb); + retry.displayName = `clean-${path.basename(dir)}`; + return retry; } exports.rimraf = rimraf; -/** - * Like rimraf (with 5 retries), but with a promise instead of a callback. - */ -function primraf(dir) { - const fn = rimraf(dir); - return new Promise((resolve, reject) => { - fn((err) => { - if (err) { - return reject(err); - } - resolve(); - }); - }); -} -exports.primraf = primraf; var task; (function (task_1) { function _isPromise(p) { @@ -206,7 +194,28 @@ var task; } return false; } + function _renderTime(time) { + if (time < 1000) { + return `${time.toFixed(2)} ms`; + } + let seconds = time / 1000; + if (seconds < 60) { + return `${seconds.toFixed(1)} s`; + } + let minutes = Math.floor(seconds / 60); + seconds -= minutes * 60; + return `${minutes} m and ${seconds} s`; + } async function _execute(task) { + const name = task.displayName || task.name || ``; + fancyLog('Starting', ansiColors.cyan(name), '...'); + const startTime = process.hrtime(); + await _doExecute(task); + const elapsedArr = process.hrtime(startTime); + const elapsedNanoseconds = (elapsedArr[0] * 1e9 + elapsedArr[1]); + fancyLog(`Finished`, ansiColors.cyan(name), 'after', ansiColors.green(_renderTime(elapsedNanoseconds / 1e6))); + } + async function _doExecute(task) { // Always invoke as if it were a callback task return new Promise((resolve, reject) => { if (task.length === 1) { diff --git a/build/lib/util.ts b/build/lib/util.ts index 42d3aba2fee..0df157feb54 100644 --- a/build/lib/util.ts +++ b/build/lib/util.ts @@ -17,6 +17,8 @@ import * as git from './git'; import * as VinylFile from 'vinyl'; import { ThroughStream } from 'through'; import * as sm from 'source-map'; +import * as fancyLog from 'fancy-log'; +import * as ansiColors from 'ansi-colors'; export interface ICancellationToken { isCancellationRequested(): boolean; @@ -233,23 +235,8 @@ export function rimraf(dir: string): (cb: any) => void { return cb(err); }); }; - - return cb => retry(cb); -} - -/** - * Like rimraf (with 5 retries), but with a promise instead of a callback. - */ -export function primraf(dir: string): Promise { - const fn = rimraf(dir); - return new Promise((resolve, reject) => { - fn((err: any) => { - if (err) { - return reject(err); - } - resolve(); - }); - }); + retry.displayName = `clean-${path.basename(dir)}`; + return retry; } export type PromiseTask = () => Promise; @@ -266,7 +253,30 @@ export namespace task { return false; } + function _renderTime(time: number): string { + if (time < 1000) { + return `${time.toFixed(2)} ms`; + } + let seconds = time / 1000; + if (seconds < 60) { + return `${seconds.toFixed(1)} s`; + } + let minutes = Math.floor(seconds / 60); + seconds -= minutes * 60; + return `${minutes} m and ${seconds} s`; + } + async function _execute(task: Task): Promise { + const name = (task).displayName || task.name || ``; + fancyLog('Starting', ansiColors.cyan(name), '...'); + const startTime = process.hrtime(); + await _doExecute(task); + const elapsedArr = process.hrtime(startTime); + const elapsedNanoseconds = (elapsedArr[0] * 1e9 + elapsedArr[1]); + fancyLog(`Finished`, ansiColors.cyan(name), 'after', ansiColors.green(_renderTime(elapsedNanoseconds / 1e6))); + } + + async function _doExecute(task: Task): Promise { // Always invoke as if it were a callback task return new Promise((resolve, reject) => { if (task.length === 1) {