| 123456789101112131415161718192021222324252627 |
- // logger.ts
- import ora from "ora";
- export async function step<T extends (...args: any[]) => Promise<any>>(
- name: string,
- fn: T,
- ...args: any[]
- ): Promise<any> {
- console.time(name);
- const spinner = ora({ text: `${name}…`, spinner: "dots" }).start();
- const consoleLog = console.log;
- console.log = (text) => {
- spinner.text += "\n" + text;
- };
- try {
- const result = await fn(...args);
- spinner.succeed(`${name} finished`);
- console.timeEnd(name);
- return result;
- } catch (err) {
- spinner.fail(`${name} failed`);
- console.timeEnd(name);
- throw err;
- } finally {
- console.log = consoleLog;
- }
- }
|