Charles Lyding bd040bd4d6 feat(@angular/cli): provide additional status messaging for ng add
This adds a spinner as well as shows more information regarding what package version was selected to be installed.

Closes #17983
2021-01-28 07:36:15 +01:00

60 lines
1.2 KiB
TypeScript

/**
* @license
* Copyright Google Inc. 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.io/license
*/
import * as ora from 'ora';
import { colors } from './color';
export class Spinner {
private readonly spinner: ora.Ora;
/** When false, only fail messages will be displayed. */
enabled = true;
constructor(text?: string) {
this.spinner = ora({
text,
// The below 2 options are needed because otherwise CTRL+C will be delayed
// when the underlying process is sync.
hideCursor: false,
discardStdin: false,
});
}
set text(text: string) {
this.spinner.text = text;
}
succeed(text?: string): void {
if (this.enabled) {
this.spinner.succeed(text);
}
}
info(text?: string): void {
this.spinner.info(text);
}
fail(text?: string): void {
this.spinner.fail(text && colors.redBright(text));
}
warn(text?: string): void {
this.spinner.fail(text && colors.yellowBright(text));
}
stop(): void {
this.spinner.stop();
}
start(text?: string): void {
if (this.enabled) {
this.spinner.start(text);
}
}
}