Skip to content

Commit 84b918c

Browse files
authored
Add method spinner.message(_msg: string)
Add method `spinner.message(_msg: string)` that can update message of spinner in progress. use case: ```typescript import * as p from "@clack/prompts"; p.intro("spinner start..."); const spin = p.spinner(); const total = 10000; let progress = 0; spin.start(); await new Promise((resolve) => { const timer = setInterval(() => { progress = Math.min(total, progress + 100); if (progress >= total) { clearInterval(timer); resolve(true); } spin.message(`Loading packages [${progress}/${total}]`); // <=== }, 100); }); spin.stop(`Done`); p.outro("spinner stop..."); ```
1 parent 593f93d commit 84b918c

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

packages/prompts/src/index.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -607,10 +607,11 @@ const frames = unicode ? ['◒', '◐', '◓', '◑'] : ['•', 'o', 'O', '0'];
607607
export const spinner = () => {
608608
let unblock: () => void;
609609
let loop: NodeJS.Timer;
610+
let message = ''
610611
const delay = unicode ? 80 : 120;
611612
return {
612-
start(message = '') {
613-
message = message.replace(/\.?\.?\.$/, '');
613+
start(_message = '') {
614+
message = _message.replace(/\.?\.?\.$/, '');
614615
unblock = block();
615616
process.stdout.write(`${color.gray(S_BAR)}\n${color.magenta('○')} ${message}\n`);
616617
let i = 0;
@@ -627,7 +628,11 @@ export const spinner = () => {
627628
dot = dot === frames.length ? 0 : dot + 0.125;
628629
}, delay);
629630
},
630-
stop(message = '') {
631+
message(_message = '') {
632+
message = _message
633+
},
634+
stop(_message = '') {
635+
message = _message
631636
process.stdout.write(cursor.move(-999, -2));
632637
process.stdout.write(erase.down(2));
633638
clearInterval(loop);

0 commit comments

Comments
 (0)