UNPKG

@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
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=