From adc938cc0dba7cef259c9ae9d21d76b98ea527d0 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 12 Dec 2025 14:34:58 -0500 Subject: [PATCH] refactor(@angular-devkit/architect-cli): remove unused progress bar functionality The progress bar functionality within the Angular builders was not utilized, making the 'progress' dependency unnecessary. Furthermore, the 'progress' dependency has not been updated in approximately 7 years, indicating it may no longer be actively maintained. --- .../angular_devkit/architect_cli/BUILD.bazel | 4 +- .../architect_cli/bin/architect.ts | 55 +--------- .../angular_devkit/architect_cli/package.json | 4 - .../architect_cli/src/progress.ts | 102 ------------------ pnpm-lock.yaml | 7 -- 5 files changed, 2 insertions(+), 170 deletions(-) delete mode 100644 packages/angular_devkit/architect_cli/src/progress.ts diff --git a/packages/angular_devkit/architect_cli/BUILD.bazel b/packages/angular_devkit/architect_cli/BUILD.bazel index 463753173ad3..f07822157ac8 100644 --- a/packages/angular_devkit/architect_cli/BUILD.bazel +++ b/packages/angular_devkit/architect_cli/BUILD.bazel @@ -15,15 +15,13 @@ ts_project( name = "architect_cli", srcs = [ "bin/architect.ts", - ] + glob(["src/**/*.ts"]), + ], deps = [ ":node_modules/@angular-devkit/architect", ":node_modules/@angular-devkit/core", ":node_modules/ansi-colors", - ":node_modules/progress", ":node_modules/yargs-parser", "//:node_modules/@types/node", - "//:node_modules/@types/progress", "//:node_modules/@types/yargs-parser", ], ) diff --git a/packages/angular_devkit/architect_cli/bin/architect.ts b/packages/angular_devkit/architect_cli/bin/architect.ts index 8cba7b4c11a7..e2c8a6731f29 100644 --- a/packages/angular_devkit/architect_cli/bin/architect.ts +++ b/packages/angular_devkit/architect_cli/bin/architect.ts @@ -7,7 +7,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import { Architect, BuilderInfo, BuilderProgressState, Target } from '@angular-devkit/architect'; +import { Architect } from '@angular-devkit/architect'; import { WorkspaceNodeModulesArchitectHost } from '@angular-devkit/architect/node'; import { JsonValue, json, logging, schema, tags, workspaces } from '@angular-devkit/core'; import { NodeJsSyncHost, createConsoleLogger } from '@angular-devkit/core/node'; @@ -15,7 +15,6 @@ import * as ansiColors from 'ansi-colors'; import { existsSync } from 'node:fs'; import * as path from 'node:path'; import yargsParser, { camelCase, decamelize } from 'yargs-parser'; -import { MultiProgressBar } from '../src/progress'; function findUp(names: string | string[], from: string) { if (!Array.isArray(names)) { @@ -59,16 +58,6 @@ function usage(logger: logging.Logger, exitCode = 0): never { return process.exit(exitCode); } -function _targetStringFromTarget({ project, target, configuration }: Target) { - return `${project}:${target}${configuration !== undefined ? ':' + configuration : ''}`; -} - -interface BarInfo { - status?: string; - builder: BuilderInfo; - target?: Target; -} - // Create a separate instance to prevent unintended global changes to the color configuration const colors = ansiColors.create(); @@ -106,47 +95,6 @@ async function _executeTarget( } const run = await architect.scheduleTarget(targetSpec, camelCasedOptions, { logger }); - const bars = new MultiProgressBar(':name :bar (:current/:total) :status'); - - run.progress.subscribe((update) => { - const data = bars.get(update.id) || { - id: update.id, - builder: update.builder, - target: update.target, - status: update.status || '', - name: ( - (update.target ? _targetStringFromTarget(update.target) : update.builder.name) + - ' '.repeat(80) - ).substring(0, 40), - }; - - if (update.status !== undefined) { - data.status = update.status; - } - - switch (update.state) { - case BuilderProgressState.Error: - data.status = 'Error: ' + update.error; - bars.update(update.id, data); - break; - - case BuilderProgressState.Stopped: - data.status = 'Done.'; - bars.complete(update.id); - bars.update(update.id, data, update.total, update.total); - break; - - case BuilderProgressState.Waiting: - bars.update(update.id, data); - break; - - case BuilderProgressState.Running: - bars.update(update.id, data, update.current, update.total); - break; - } - - bars.render(); - }); // Wait for full completion of the builder. try { @@ -163,7 +111,6 @@ async function _executeTarget( logs.splice(0); await run.stop(); - bars.terminate(); return result.success ? 0 : 1; } catch (err) { diff --git a/packages/angular_devkit/architect_cli/package.json b/packages/angular_devkit/architect_cli/package.json index 4d9174dd8716..02fbcb57c4cb 100644 --- a/packages/angular_devkit/architect_cli/package.json +++ b/packages/angular_devkit/architect_cli/package.json @@ -17,10 +17,6 @@ "@angular-devkit/architect": "workspace:0.0.0-EXPERIMENTAL-PLACEHOLDER", "@angular-devkit/core": "workspace:0.0.0-PLACEHOLDER", "ansi-colors": "4.1.3", - "progress": "2.0.3", "yargs-parser": "22.0.0" - }, - "devDependencies": { - "@types/progress": "2.0.7" } } diff --git a/packages/angular_devkit/architect_cli/src/progress.ts b/packages/angular_devkit/architect_cli/src/progress.ts deleted file mode 100644 index e8c74353eb4b..000000000000 --- a/packages/angular_devkit/architect_cli/src/progress.ts +++ /dev/null @@ -1,102 +0,0 @@ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.dev/license - */ - -import * as readline from 'node:readline'; -import ProgressBar from 'progress'; - -export class MultiProgressBar { - private _bars = new Map(); - - constructor( - private _status: string, - private _stream = process.stderr, - ) {} - private _add(id: Key, data: T): { data: T; bar: ProgressBar } { - const width = Math.min(80, this._stream.columns || 80); - const value = { - data, - bar: new ProgressBar(this._status, { - renderThrottle: 0, - clear: true, - total: 1, - width: width, - complete: '#', - incomplete: '.', - stream: this._stream, - }), - }; - this._bars.set(id, value); - readline.moveCursor(this._stream, 0, 1); - - return value; - } - - complete(id: Key) { - const maybeBar = this._bars.get(id); - if (maybeBar) { - maybeBar.bar.complete = true; - } - } - - add(id: Key, data: T) { - this._add(id, data); - } - - get(key: Key): T | undefined { - const maybeValue = this._bars.get(key); - - return maybeValue && maybeValue.data; - } - has(key: Key) { - return this._bars.has(key); - } - update(key: Key, data: T, current?: number, total?: number) { - let maybeBar = this._bars.get(key); - - if (!maybeBar) { - maybeBar = this._add(key, data); - } - - maybeBar.data = data; - if (total !== undefined) { - maybeBar.bar.total = total; - } - if (current !== undefined) { - maybeBar.bar.curr = Math.max(0, Math.min(current, maybeBar.bar.total)); - } - } - - render(max = Infinity, sort?: (a: T, b: T) => number) { - const stream = this._stream; - - readline.moveCursor(stream, 0, -this._bars.size); - readline.cursorTo(stream, 0); - - let values: Iterable<{ data: T; bar: ProgressBar }> = this._bars.values(); - if (sort) { - values = [...values].sort((a, b) => sort(a.data, b.data)); - } - - for (const { data, bar } of values) { - if (max-- == 0) { - return; - } - - bar.render(data); - readline.moveCursor(stream, 0, 1); - readline.cursorTo(stream, 0); - } - } - - terminate() { - for (const { bar } of this._bars.values()) { - bar.terminate(); - } - this._bars.clear(); - } -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d38683373504..a41d6ba12c29 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -571,16 +571,9 @@ importers: ansi-colors: specifier: 4.1.3 version: 4.1.3 - progress: - specifier: 2.0.3 - version: 2.0.3 yargs-parser: specifier: 22.0.0 version: 22.0.0 - devDependencies: - '@types/progress': - specifier: 2.0.7 - version: 2.0.7 packages/angular_devkit/build_angular: dependencies: