XYOracleNetwork/clients

View on GitHub
packages/cli/src/command/util/output/outputContext.ts

Summary

Maintainability
A
0 mins
Test Coverage
import type { BaseArguments } from '../../BaseArguments.js'
import {
  outputJsonError, outputJsonLog, outputRawError, outputRawLog,
} from './formatters/index.js'

export const outputContext = async (
  args: BaseArguments,
  commandContext: (outputLog: (value: unknown) => void, outputError: (value: unknown) => void) => void | Promise<void>,
) => {
  const { output, verbose } = args
  let log
  let err
  switch (output) {
    case 'raw': {
      log = outputRawLog
      err = outputRawError
      break
    }
    default: {
      err = outputJsonError
      log = outputJsonLog
      break
    }
  }
  try {
    await commandContext(log, err)
  } catch (error) {
    if (verbose) err(error)
    throw error
  }
}