@qodalis/angular-cli
Version:
A lightweight and flexible command-line interface (CLI) tool designed to streamline workflows and automate tasks for developers.
39 lines • 5.06 kB
JavaScript
export class CliTerminalSpinner {
constructor(terminal) {
this.terminal = terminal;
this.isRunning = false;
this.text = '';
this.spinnerFrames = ['|', '/', '-', '\\'];
this.spinnerIndex = 0;
}
show(text) {
if (text) {
this.text = text;
}
this.isRunning = true;
this.spinnerInterval = setInterval(() => {
// Clear the current line
this.terminal.write('\x1b[2K\r');
// Write the spinner frame
this.terminal.write(this.spinnerFrames[this.spinnerIndex] +
(this.text.length > 0 ? ` ${this.text}` : ''));
// Update the frame index
this.spinnerIndex =
(this.spinnerIndex + 1) % this.spinnerFrames.length;
}, 100);
}
hide() {
this.isRunning = false;
if (this.spinnerInterval) {
clearInterval(this.spinnerInterval);
this.spinnerInterval = null;
}
// Clear the spinner character and reset the line
this.terminal.write('\x1b[2K\r');
this.text = '';
}
setText(text) {
this.text = text;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLXRlcm1pbmFsLXNwaW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGkvc3JjL2xpYi9jbGkvc2VydmljZXMvcHJvZ3Jlc3MtYmFycy9jbGktdGVybWluYWwtc3Bpbm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sa0JBQWtCO0lBSzNCLFlBQW9CLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFKdEMsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUUzQixTQUFJLEdBQVcsRUFBRSxDQUFDO1FBS1Ysa0JBQWEsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3RDLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO0lBSmdCLENBQUM7SUFNbkMsSUFBSSxDQUFDLElBQWE7UUFDckIsSUFBSSxJQUFJLEVBQUU7WUFDTixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztTQUNwQjtRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxlQUFlLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtZQUNwQyx5QkFBeUI7WUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDakMsMEJBQTBCO1lBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUNmLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztnQkFDakMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FDcEQsQ0FBQztZQUNGLHlCQUF5QjtZQUN6QixJQUFJLENBQUMsWUFBWTtnQkFDYixDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7UUFDNUQsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1osQ0FBQztJQUVNLElBQUk7UUFDUCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDdEIsYUFBYSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztTQUMvQjtRQUVELGlEQUFpRDtRQUNqRCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVqQyxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRU0sT0FBTyxDQUFDLElBQVk7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVybWluYWwgfSBmcm9tICdAeHRlcm0veHRlcm0nO1xuaW1wb3J0IHsgSUNsaVNwaW5uZXIgfSBmcm9tICdAcW9kYWxpcy9jbGktY29yZSc7XG5cbmV4cG9ydCBjbGFzcyBDbGlUZXJtaW5hbFNwaW5uZXIgaW1wbGVtZW50cyBJQ2xpU3Bpbm5lciB7XG4gICAgaXNSdW5uaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICB0ZXh0OiBzdHJpbmcgPSAnJztcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdGVybWluYWw6IFRlcm1pbmFsKSB7fVxuXG4gICAgcHJpdmF0ZSBzcGlubmVySW50ZXJ2YWw/OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRJbnRlcnZhbD4gfCBudWxsO1xuICAgIHByaXZhdGUgc3Bpbm5lckZyYW1lcyA9IFsnfCcsICcvJywgJy0nLCAnXFxcXCddO1xuICAgIHByaXZhdGUgc3Bpbm5lckluZGV4ID0gMDtcblxuICAgIHB1YmxpYyBzaG93KHRleHQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRleHQpIHtcbiAgICAgICAgICAgIHRoaXMudGV4dCA9IHRleHQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzUnVubmluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuc3Bpbm5lckludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgLy8gQ2xlYXIgdGhlIGN1cnJlbnQgbGluZVxuICAgICAgICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZSgnXFx4MWJbMktcXHInKTtcbiAgICAgICAgICAgIC8vIFdyaXRlIHRoZSBzcGlubmVyIGZyYW1lXG4gICAgICAgICAgICB0aGlzLnRlcm1pbmFsLndyaXRlKFxuICAgICAgICAgICAgICAgIHRoaXMuc3Bpbm5lckZyYW1lc1t0aGlzLnNwaW5uZXJJbmRleF0gK1xuICAgICAgICAgICAgICAgICAgICAodGhpcy50ZXh0Lmxlbmd0aCA+IDAgPyBgICR7dGhpcy50ZXh0fWAgOiAnJyksXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBmcmFtZSBpbmRleFxuICAgICAgICAgICAgdGhpcy5zcGlubmVySW5kZXggPVxuICAgICAgICAgICAgICAgICh0aGlzLnNwaW5uZXJJbmRleCArIDEpICUgdGhpcy5zcGlubmVyRnJhbWVzLmxlbmd0aDtcbiAgICAgICAgfSwgMTAwKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGlkZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc1J1bm5pbmcgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuc3Bpbm5lckludGVydmFsKSB7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuc3Bpbm5lckludGVydmFsKTtcbiAgICAgICAgICAgIHRoaXMuc3Bpbm5lckludGVydmFsID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENsZWFyIHRoZSBzcGlubmVyIGNoYXJhY3RlciBhbmQgcmVzZXQgdGhlIGxpbmVcbiAgICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZSgnXFx4MWJbMktcXHInKTtcblxuICAgICAgICB0aGlzLnRleHQgPSAnJztcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0VGV4dCh0ZXh0OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy50ZXh0ID0gdGV4dDtcbiAgICB9XG59XG4iXX0=