60 lines
1.3 KiB
TypeScript
60 lines
1.3 KiB
TypeScript
import 'typings-global';
|
|
import * as plugins from './beautylog.plugins';
|
|
import { logNode } from './beautylog.log.helpers';
|
|
|
|
export let oraActive: boolean = false; // when an Ora is active (e.g. start()) this is true
|
|
export let activeOra: Ora; // points to the currently active Ora object
|
|
|
|
export class Ora {
|
|
state: string;
|
|
private _oraObject;
|
|
constructor(textArg: string, colorArg: string, startArg: boolean = false) {
|
|
this._oraObject = plugins.ora({
|
|
spinner: 'dots',
|
|
text: textArg,
|
|
color: colorArg
|
|
});
|
|
if (startArg) {
|
|
this.start();
|
|
}
|
|
}
|
|
text(textArg) {
|
|
this._oraObject.text = textArg;
|
|
}
|
|
|
|
start(textArg?: string, colorArg?: string) {
|
|
if (textArg) {
|
|
this.text(textArg);
|
|
}
|
|
if (colorArg) {
|
|
this._oraObject.color = colorArg;
|
|
}
|
|
activeOra = this;
|
|
oraActive = true;
|
|
this._oraObject.start();
|
|
}
|
|
end() {
|
|
this._oraObject.stop();
|
|
this._oraObject.clear();
|
|
activeOra = undefined;
|
|
oraActive = false;
|
|
}
|
|
endOk(textArg) {
|
|
this.end();
|
|
logNode('ok', textArg);
|
|
}
|
|
endError(textArg) {
|
|
this.end();
|
|
logNode('error', textArg);
|
|
}
|
|
pause() {
|
|
this._oraObject.stop();
|
|
}
|
|
stop() {
|
|
// alias for end
|
|
this.end();
|
|
}
|
|
}
|
|
|
|
export let ora = new Ora('init...', 'blue', false);
|