From dcc3a7d96dbe93efb5da4c921e22c29019b456dd Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Tue, 28 Jun 2022 23:09:24 -0300 Subject: show status while computing writes --- src/util/cli.js | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'src/util') diff --git a/src/util/cli.js b/src/util/cli.js index d28ef40a..cbcbf7cb 100644 --- a/src/util/cli.js +++ b/src/util/cli.js @@ -277,3 +277,35 @@ export function progressPromiseAll(msgOrMsgFn, array) { ) ); } + +export function progressCallAll(msgOrMsgFn, array) { + if (!array.length) { + return []; + } + + const msgFn = + typeof msgOrMsgFn === 'function' ? msgOrMsgFn : () => msgOrMsgFn; + + let done = 0, + total = array.length; + process.stdout.write(`\r${msgFn()} [0/${total}]`); + const start = Date.now(); + const vals = []; + + for (const fn of array) { + const val = fn(); + done++; + const pc = (Math.round((done / total) * 1000) / 10 + '%').padEnd('99.9%'.length, ' '); + if (done === total) { + const time = Date.now() - start; + process.stdout.write( + `\r\x1b[2m${msgFn()} [${pc}] \x1b[0;32mDone! \x1b[0;2m(${time} ms) \x1b[0m\n` + ); + } else { + process.stdout.write(`\r${msgFn()} [${pc}] `); + } + vals.push(val); + } + + return vals; +} -- cgit 1.3.0-6-gf8a5