move callback function outside try catch block, refactor logic

pull/3385/head
Yuxuan Zhang 2 years ago
parent 8849d85523
commit 9281648b3e
No known key found for this signature in database
GPG Key ID: 6910B04F3351EF7D

@ -4,7 +4,7 @@ import humanizeDuration from 'humanize-duration'
export const okMark = '\x1b[32m✓\x1b[0m' export const okMark = '\x1b[32m✓\x1b[0m'
export const failMark = '\x1b[31m✖\x1b[0m' export const failMark = '\x1b[31m✖\x1b[0m'
type UpdateHandle = (done: number, total?: number) => any export type UpdateHandle = (done: number, total?: number) => any
export async function task<T>( export async function task<T>(
taskName: string, taskName: string,
@ -13,23 +13,24 @@ export async function task<T>(
const spinner = ora({ discardStdin: false }) const spinner = ora({ discardStdin: false })
spinner.start(taskName + '...') spinner.start(taskName + '...')
let symbol = okMark const updateHandle: UpdateHandle = (done, total) => {
if (total === undefined) {
spinner.text = `${taskName} [ ${done} ]`
} else {
// match length to display them in same width
const _total = `${total}`
const _done = `${done}`.padStart(_total.length, ' ')
spinner.text = `${taskName} [ ${_done} / ${_total} ]`
}
}
const timeStart = performance.now() const timeStart = performance.now()
let success = true
try { try {
const updateHandle: UpdateHandle = (done, total) => {
if (total === undefined) {
spinner.text = `${taskName} [ ${done} ]`
} else {
// match length to display them in same width
const _total = `${total}`
const _done = `${done}`.padStart(_total.length, ' ')
spinner.text = `${taskName} [ ${_done} / ${_total} ]`
}
}
return await task(updateHandle) return await task(updateHandle)
} catch (e) { } catch (e) {
symbol = failMark success = false
throw e throw e
} finally { } finally {
const timeEnd = performance.now() const timeEnd = performance.now()
@ -37,6 +38,7 @@ export async function task<T>(
maxDecimalPoints: 2 maxDecimalPoints: 2
}) })
const text = `${taskName} - ${duration}` const text = `${taskName} - ${duration}`
const symbol = success ? okMark : failMark
spinner.stopAndPersist({ symbol, text }) spinner.stopAndPersist({ symbol, text })
} }
} }

Loading…
Cancel
Save