diff --git a/build/gulpfile.vscode.js b/build/gulpfile.vscode.js index fedd03574e36f91477d2ffec5ce64d8c55fcaa2f..f7801d4d2d4d65b73ea699d6c0803190c2a9de8d 100644 --- a/build/gulpfile.vscode.js +++ b/build/gulpfile.vscode.js @@ -327,6 +327,12 @@ function packageTask(platform, arch, opts) { .pipe(rename('bin/' + product.applicationName))); } + // submit all stats that have been collected during + // the build phase + if (opts.stats) { + result.on('end', () => require('./lib/stats').submitAllStats()); + } + return result.pipe(vfs.dest(destination)); }; } @@ -342,14 +348,14 @@ gulp.task('clean-vscode-linux-arm', util.rimraf(path.join(buildRoot, 'VSCode-lin gulp.task('vscode-win32-ia32', ['optimize-vscode', 'clean-vscode-win32-ia32'], packageTask('win32', 'ia32')); gulp.task('vscode-win32-x64', ['optimize-vscode', 'clean-vscode-win32-x64'], packageTask('win32', 'x64')); -gulp.task('vscode-darwin', ['optimize-vscode', 'clean-vscode-darwin'], packageTask('darwin')); +gulp.task('vscode-darwin', ['optimize-vscode', 'clean-vscode-darwin'], packageTask('darwin', null, { stats: true })); gulp.task('vscode-linux-ia32', ['optimize-vscode', 'clean-vscode-linux-ia32'], packageTask('linux', 'ia32')); gulp.task('vscode-linux-x64', ['optimize-vscode', 'clean-vscode-linux-x64'], packageTask('linux', 'x64')); gulp.task('vscode-linux-arm', ['optimize-vscode', 'clean-vscode-linux-arm'], packageTask('linux', 'arm')); gulp.task('vscode-win32-ia32-min', ['minify-vscode', 'clean-vscode-win32-ia32'], packageTask('win32', 'ia32', { minified: true })); gulp.task('vscode-win32-x64-min', ['minify-vscode', 'clean-vscode-win32-x64'], packageTask('win32', 'x64', { minified: true })); -gulp.task('vscode-darwin-min', ['minify-vscode', 'clean-vscode-darwin'], packageTask('darwin', null, { minified: true })); +gulp.task('vscode-darwin-min', ['minify-vscode', 'clean-vscode-darwin'], packageTask('darwin', null, { minified: true, stats: true })); gulp.task('vscode-linux-ia32-min', ['minify-vscode', 'clean-vscode-linux-ia32'], packageTask('linux', 'ia32', { minified: true })); gulp.task('vscode-linux-x64-min', ['minify-vscode', 'clean-vscode-linux-x64'], packageTask('linux', 'x64', { minified: true })); gulp.task('vscode-linux-arm-min', ['minify-vscode', 'clean-vscode-linux-arm'], packageTask('linux', 'arm', { minified: true })); diff --git a/build/lib/extensions.js b/build/lib/extensions.js index 6e6172f1f91fcaca763faea93b5288520c17cd42..da0f48f0b5569d26ed0ea13a3612a715c3414593 100644 --- a/build/lib/extensions.js +++ b/build/lib/extensions.js @@ -115,7 +115,7 @@ function fromLocal(extensionPath, sourceMappingURLBase) { filesStream.pipe(result); } }).catch(function (err) { return result.emit('error', err); }); - return result.pipe(stats_1.createStatsStream(path.basename(extensionPath), true)); + return result.pipe(stats_1.createStatsStream(path.basename(extensionPath))); } exports.fromLocal = fromLocal; function error(err) { diff --git a/build/lib/extensions.ts b/build/lib/extensions.ts index 95c1eeae92cc9728908467bc6810609b16430a64..48c01f152c65a6ff981e07fa54b72481f94bed39 100644 --- a/build/lib/extensions.ts +++ b/build/lib/extensions.ts @@ -132,7 +132,7 @@ export function fromLocal(extensionPath: string, sourceMappingURLBase?: string): }).catch(err => result.emit('error', err)); - return result.pipe(createStatsStream(path.basename(extensionPath), true)); + return result.pipe(createStatsStream(path.basename(extensionPath))); } function error(err: any): Stream { diff --git a/build/lib/optimize.js b/build/lib/optimize.js index dd9fa93579c2ffd5827aae64485fb92690a2e1b5..044780ba7fd05c64d4a06912197a2d9c59d665d9 100644 --- a/build/lib/optimize.js +++ b/build/lib/optimize.js @@ -103,7 +103,7 @@ function toConcatStream(src, bundledFileHeader, sources, dest) { return es.readArray(treatedSources) .pipe(useSourcemaps ? util.loadSourcemaps() : es.through()) .pipe(concat(dest)) - .pipe(stats_1.createStatsStream(dest, true)); + .pipe(stats_1.createStatsStream(dest)); } function toBundleStream(src, bundledFileHeader, bundles) { return es.merge(bundles.map(function (bundle) { diff --git a/build/lib/optimize.ts b/build/lib/optimize.ts index 5e8c1303e8edaa3ca3109cba2458878588592961..8a35523dbe24e8264de339910ebc6977e8357550 100644 --- a/build/lib/optimize.ts +++ b/build/lib/optimize.ts @@ -123,7 +123,7 @@ function toConcatStream(src: string, bundledFileHeader: string, sources: bundle. return es.readArray(treatedSources) .pipe(useSourcemaps ? util.loadSourcemaps() : es.through()) .pipe(concat(dest)) - .pipe(createStatsStream(dest, true)); + .pipe(createStatsStream(dest)); } function toBundleStream(src: string, bundledFileHeader: string, bundles: bundle.IConcatFile[]): NodeJS.ReadWriteStream { diff --git a/build/lib/stats.js b/build/lib/stats.js index 82cf8439e30ae88cc62217dd99da1e602054cc7d..2b305db991168c107bedb28f8bd9be78fd1228d0 100644 --- a/build/lib/stats.js +++ b/build/lib/stats.js @@ -12,8 +12,26 @@ var Entry = /** @class */ (function () { this.totalCount = totalCount; this.totalSize = totalSize; } - Entry.prototype.toString = function () { - return this.name + ": " + this.totalCount + " files with " + this.totalSize + " bytes"; + Entry.prototype.toString = function (pretty) { + if (!pretty) { + if (this.totalCount === 1) { + return this.name + ": " + this.totalSize + " bytes"; + } + else { + return this.name + ": " + this.totalCount + " files with " + this.totalSize + " bytes"; + } + } + else { + if (this.totalCount === 1) { + return "Stats for '" + util.colors.grey(this.name) + "': " + Math.round(this.totalSize / 1204) + "KB"; + } + else { + var count = this.totalCount < 100 + ? util.colors.green(this.totalCount.toString()) + : util.colors.red(this.totalCount.toString()); + return "Stats for '" + util.colors.grey(this.name) + "': " + count + " files, " + Math.round(this.totalSize / 1204) + "KB"; + } + } }; return Entry; }()); @@ -52,3 +70,23 @@ function createStatsStream(group, log) { }); } exports.createStatsStream = createStatsStream; +function submitAllStats() { + var sorted = []; + // move entries for single files to the + // front + _entries.forEach(function (value) { + if (value.totalCount === 1) { + sorted.unshift(value); + } + else { + sorted.push(value); + } + }); + // todo@ramya/joh - send the data as telemetry event + // so that it can be stored in the datawarehouse + for (var _i = 0, sorted_1 = sorted; _i < sorted_1.length; _i++) { + var entry = sorted_1[_i]; + console.log(entry.toString(true)); + } +} +exports.submitAllStats = submitAllStats; diff --git a/build/lib/stats.ts b/build/lib/stats.ts index ec78c67d7644543d9cf7751da2b579d9bd7cc2d1..19dce0147d8c99742668de4983e0719f8977bd81 100644 --- a/build/lib/stats.ts +++ b/build/lib/stats.ts @@ -12,8 +12,25 @@ import * as File from 'vinyl'; class Entry { constructor(readonly name: string, public totalCount: number, public totalSize: number) { } - toString(): string { - return `${this.name}: ${this.totalCount} files with ${this.totalSize} bytes`; + toString(pretty?: boolean): string { + if (!pretty) { + if (this.totalCount === 1) { + return `${this.name}: ${this.totalSize} bytes`; + } else { + return `${this.name}: ${this.totalCount} files with ${this.totalSize} bytes`; + } + } else { + if (this.totalCount === 1) { + return `Stats for '${util.colors.grey(this.name)}': ${Math.round(this.totalSize / 1204)}KB`; + + } else { + let count = this.totalCount < 100 + ? util.colors.green(this.totalCount.toString()) + : util.colors.red(this.totalCount.toString()); + + return `Stats for '${util.colors.grey(this.name)}': ${count} files, ${Math.round(this.totalSize / 1204)}KB`; + } + } } } @@ -54,3 +71,21 @@ export function createStatsStream(group: string, log?: boolean): es.ThroughStrea this.emit('end'); }); } + +export function submitAllStats(): void { + let sorted: Entry[] = []; + // move entries for single files to the + // front + _entries.forEach(value => { + if (value.totalCount === 1) { + sorted.unshift(value); + } else { + sorted.push(value); + } + }); + // todo@ramya/joh - send the data as telemetry event + // so that it can be stored in the datawarehouse + for (const entry of sorted) { + console.log(entry.toString(true)); + } +}