sandlot/src/spinner.ts
2026-02-17 08:52:07 -08:00

23 lines
540 B
TypeScript

const frames = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"]
export function spinner(text: string) {
let i = 0
const id = setInterval(() => {
process.stderr.write(`\r\x1b[2K${frames[i++ % frames.length]} ${text}`)
}, 80)
return {
set text(t: string) {
text = t
},
succeed(msg: string) {
clearInterval(id)
process.stderr.write(`\r\x1b[2K✔ ${msg}\n`)
},
fail(msg: string) {
clearInterval(id)
process.stderr.write(`\r\x1b[2K✖ ${msg}\n`)
},
}
}