@@ -14,6 +14,8 @@ const fs = require("fs");
1414const _rimraf = require ( "rimraf" ) ;
1515const git = require ( "./git" ) ;
1616const VinylFile = require ( "vinyl" ) ;
17+ const fancyLog = require ( "fancy-log" ) ;
18+ const ansiColors = require ( "ansi-colors" ) ;
1719const NoCancellationToken = { isCancellationRequested : ( ) => false } ;
1820function incremental ( streamProvider , initial , supportsCancellation ) {
1921 const input = es . through ( ) ;
@@ -180,24 +182,10 @@ function rimraf(dir) {
180182 return cb ( err ) ;
181183 } ) ;
182184 } ;
183- return cb => retry ( cb ) ;
185+ retry . displayName = `clean-${ path . basename ( dir ) } ` ;
186+ return retry ;
184187}
185188exports . rimraf = rimraf ;
186- /**
187- * Like rimraf (with 5 retries), but with a promise instead of a callback.
188- */
189- function primraf ( dir ) {
190- const fn = rimraf ( dir ) ;
191- return new Promise ( ( resolve , reject ) => {
192- fn ( ( err ) => {
193- if ( err ) {
194- return reject ( err ) ;
195- }
196- resolve ( ) ;
197- } ) ;
198- } ) ;
199- }
200- exports . primraf = primraf ;
201189var task ;
202190( function ( task_1 ) {
203191 function _isPromise ( p ) {
@@ -206,7 +194,28 @@ var task;
206194 }
207195 return false ;
208196 }
197+ function _renderTime ( time ) {
198+ if ( time < 1000 ) {
199+ return `${ time . toFixed ( 2 ) } ms` ;
200+ }
201+ let seconds = time / 1000 ;
202+ if ( seconds < 60 ) {
203+ return `${ seconds . toFixed ( 1 ) } s` ;
204+ }
205+ let minutes = Math . floor ( seconds / 60 ) ;
206+ seconds -= minutes * 60 ;
207+ return `${ minutes } m and ${ seconds } s` ;
208+ }
209209 async function _execute ( task ) {
210+ const name = task . displayName || task . name || `<anonymous>` ;
211+ fancyLog ( 'Starting' , ansiColors . cyan ( name ) , '...' ) ;
212+ const startTime = process . hrtime ( ) ;
213+ await _doExecute ( task ) ;
214+ const elapsedArr = process . hrtime ( startTime ) ;
215+ const elapsedNanoseconds = ( elapsedArr [ 0 ] * 1e9 + elapsedArr [ 1 ] ) ;
216+ fancyLog ( `Finished` , ansiColors . cyan ( name ) , 'after' , ansiColors . green ( _renderTime ( elapsedNanoseconds / 1e6 ) ) ) ;
217+ }
218+ async function _doExecute ( task ) {
210219 // Always invoke as if it were a callback task
211220 return new Promise ( ( resolve , reject ) => {
212221 if ( task . length === 1 ) {
0 commit comments